UNPKG

@vtex/payment-provider-sdk

Version:
297 lines (296 loc) 9.32 kB
/// <reference types="node" /> import type { IncomingHttpHeaders } from 'http2'; import type { ParsedUrlQuery } from 'querystring'; import { Enum } from 'typescript-string-enums'; export declare type Maybe<T> = T | undefined; export declare const RecipientRole: { marketplace: "marketplace"; seller: "seller"; }; export declare type RecipientRole = Enum<typeof RecipientRole>; export declare const DocumentType: { CNPJ: "CNPJ"; CPF: "CPF"; SSN: "SSN"; }; export declare type DocumentType = Enum<typeof DocumentType>; export interface AuthenticationHeaders extends IncomingHttpHeaders { 'x-provider-api-appkey': string; 'x-provider-api-apptoken': string; } export interface Recipient { id: string; name: string; documentType: DocumentType; document: string; role: RecipientRole; chargeProcessingFee: boolean; chargebackLiable: boolean; amount: number; } export interface Card { number: string; holder: string; expiration: Expiration; csc: string; document: unknown; } export interface TokenizedCard { holderToken: string; bin: string; numberToken: string; numberLength: number; cscToken: string; expiration: Expiration; } export interface Expiration { month: string; year: string; } export interface MiniCart { buyer: Buyer; shippingAddress: Maybe<Address>; billingAddress: Maybe<Address>; items: Maybe<Item[]>; shippingValue: Maybe<number>; taxValue: Maybe<number>; } export interface Buyer { id: Maybe<string>; firstName: string; lastName: string; document: string; documentType: Maybe<string>; corporateName: Maybe<string>; tradeName: Maybe<string>; corporateDocument: Maybe<string>; isCorporate: Maybe<boolean>; email: Maybe<string>; phone: Maybe<string>; createdDate: Maybe<Date>; } export interface Address { country: Maybe<string>; street: Maybe<string>; number: Maybe<string>; complement: Maybe<string>; neighborhood: Maybe<string>; postalCode: Maybe<string>; city: Maybe<string>; state: Maybe<string>; } export interface Item { id: Maybe<string>; name: Maybe<string>; price: Maybe<number>; quantity: Maybe<number>; discount: Maybe<number>; deliveryType: Maybe<string>; } export interface AppData { appName: Maybe<string>; payload: Maybe<string>; } export interface PaymentIdParam extends ParsedUrlQuery { paymentId: string; } export declare const DebitCard: { "Visa Electron": "Visa Electron"; Maestro: "Maestro"; "Mastercard Debit": "Mastercard Debit"; }; export declare type DebitCard = Enum<typeof DebitCard>; export declare const CreditCard: { Visa: "Visa"; Mastercard: "Mastercard"; "American Express": "American Express"; Discover: "Discover"; JCB: "JCB"; Diners: "Diners"; Elo: "Elo"; Hipercard: "Hipercard"; Aura: "Aura"; Benricompras: "Benricompras"; Credz: "Credz"; Cabal: "Cabal"; }; export declare type CreditCard = Enum<typeof CreditCard>; export declare const AdhocCard: { Cobranded: "Cobranded"; Privatelabels: "Privatelabels"; }; export declare type AdhocCard = Enum<typeof AdhocCard>; export declare const BankInvoice: { BankInvoice: "BankInvoice"; }; export declare type BankInvoice = Enum<typeof BankInvoice>; export declare const Generic: { Promissories: "Promissories"; Cash: "Cash"; }; export declare type Generic = Enum<typeof Generic>; export declare const Voucher: { SPEI: "SPEI"; Safetypay: "Safetypay"; }; export declare type Voucher = Enum<typeof Voucher>; export declare const Cryptocurrency: { Bitcoin: "Bitcoin"; }; export declare type Cryptocurrency = Enum<typeof Cryptocurrency>; export declare type PaymentMethod = CreditCard | DebitCard | AdhocCard | Generic | BankInvoice | Voucher | Cryptocurrency; export interface AvailablePaymentsResponse { paymentMethods: PaymentMethod[]; } export declare type AllowSplitOptions = 'onAuthorize' | 'onCapture' | 'disabled'; export interface PaymentMethodInfo { name: PaymentMethod; allowsSplit: AllowSplitOptions; } export declare type CustomFieldTypeOptions = 'text' | 'select'; export declare type SelectTypeOptions = 'type' | 'value'; export interface CustomSelectFields { text: string; value: string; } export interface CustomFieldOptions { name: string; type: CustomFieldTypeOptions; options?: CustomSelectFields[]; } export interface ProviderManifestResponse { paymentMethods: PaymentMethodInfo[]; customFields?: CustomFieldOptions[]; } export interface CancellationRequest extends PaymentRequest { authorizationId: string; tid: Maybe<string>; } export interface CancellationResponse extends PaymentRequest { cancellationId: Maybe<string> | null; code: Maybe<'cancel-manually'> | null; message: Maybe<string> | null; } export interface PaymentRequest { transactionId: string; paymentId: string; requestId: string; } export interface Authorization extends PaymentRequest { reference: string; orderId: string; paymentMethod: PaymentMethod; paymentMethodCustomCode: Maybe<string>; merchantName: string; value: number; currency: string; installments: Maybe<number>; deviceFingerprint: Maybe<string>; ipAddress: Maybe<string>; miniCart: MiniCart; url: Maybe<string>; callbackUrl: string; inboundRequestsUrl: string; returnUrl: Maybe<string>; recipients: Maybe<Recipient[]>; } export interface CardAuthorization extends Authorization { secureProxyUrl: Maybe<string>; card: Card | TokenizedCard; paymentMethod: CreditCard | DebitCard | AdhocCard; } export interface CreditCardAuthorization extends CardAuthorization { paymentMethod: CreditCard; } export interface DebitCardAuthorization extends CardAuthorization { paymentMethod: DebitCard; } export interface AdhocCardAuthorization extends CardAuthorization { paymentMethod: AdhocCard; } export interface BankInvoiceAuthorization extends Authorization { paymentMethod: BankInvoice; } export declare type AuthorizationRequest = CreditCardAuthorization | DebitCardAuthorization | AdhocCardAuthorization | BankInvoiceAuthorization | Authorization; export declare const isCardAuthorization: (authorization: AuthorizationRequest) => authorization is CardAuthorization; export declare const isCreditCardAuthorization: (authorization: AuthorizationRequest) => authorization is CreditCardAuthorization; export declare const isDebitCardAuthorization: (authorization: AuthorizationRequest) => authorization is DebitCardAuthorization; export declare const isBankInvoiceAuthorization: (authorization: AuthorizationRequest) => authorization is BankInvoiceAuthorization; export declare const isTokenizedCard: (card: Card | TokenizedCard) => card is TokenizedCard; export declare type AuthorizationStatus = 'approved' | 'denied' | 'undefined'; export interface PaymentResponse { paymentId: string; code: Maybe<string> | null; message: Maybe<string> | null; } export interface Authorized extends PaymentResponse { status: AuthorizationStatus; tid: Maybe<string> | null; acquirer: Maybe<string> | null; paymentAppData: Maybe<AppData> | null; } export interface ApprovedAuthorization extends Authorized { tid: string; authorizationId: string; nsu: string; } export interface CreditCardAuthorized extends ApprovedAuthorization { delayToAutoSettle: Maybe<number>; delayToAutoSettleAfterAntifraud: Maybe<number>; } export interface BankInvoiceAuthorized extends ApprovedAuthorization { paymentUrl: string; identificationNumber: Maybe<string>; identificationNumberFormatted: Maybe<string>; barCodeImageType: Maybe<string>; barCodeImageNumber: Maybe<string>; delayToCancel: Maybe<number>; } export interface FailedAuthorization extends Authorized { status: 'denied'; } export interface UndefinedAuthorization extends Authorized { status: 'undefined'; delayToCancel: number; } export declare type AuthorizationResponse = ApprovedAuthorization | CreditCardAuthorized | BankInvoiceAuthorized | FailedAuthorization | UndefinedAuthorization | RedirectResponse; export interface SettlementRequest extends PaymentRequest { value: number; authorizationId: string; tid: Maybe<string>; recipients: Maybe<Recipient[]>; } export interface SettlementResponse extends PaymentResponse { settleId: Maybe<string> | null; value: number; requestId: string; } export interface RefundRequest extends PaymentRequest { value: number; settleId: string; tid: Maybe<string>; recipients: Maybe<Recipient[]>; } export interface RefundResponse extends PaymentResponse { requestId: string; refundId: Maybe<string> | null; value: number; } export interface InboundRequest extends PaymentRequest { authorizationId: string; tid: string; requestData: { body: string; }; } export interface InboundResponse extends PaymentResponse { responseData: { statusCode: number; contentType: string; content: string; }; requestId: string; } export interface RedirectResponse extends UndefinedAuthorization { redirectUrl: Maybe<string> | null; }