@vtex/payment-provider
Version:
VTEX Payment Provider SDK
73 lines (72 loc) • 4.96 kB
TypeScript
import type { Overwrite } from 'utility-types';
import type { ApprovedAuthorization, AuthorizationRequest, BankInvoiceAuthorization, BankInvoiceAuthorized, CancellationRequest, CancellationResponse, CardAuthorization, CreditCardAuthorized, FailedAuthorization, RedirectResponse, RefundRequest, RefundResponse, SettlementRequest, SettlementResponse, PendingAuthorization, AppData, BankInvoicePending, ConnectorMetadata } from './typings/api';
type OptionalKeys<T> = Exclude<{
[key in keyof T]: undefined extends T[key] ? key : never;
}[keyof T], undefined>;
type OptionalUndefined<T extends Record<string, unknown>> = Overwrite<T, {
[key in keyof Pick<T, OptionalKeys<T>>]?: T[key];
}>;
type ConnectorMetadataProperty = {
connectorMetadata?: ConnectorMetadata[];
};
export type ApproveArgs = OptionalUndefined<ConnectorMetadataProperty & Omit<ApprovedAuthorization, keyof AuthorizationRequest | 'status' | 'delayToCancel'>>;
export type ApproveCardArgs = OptionalUndefined<ConnectorMetadataProperty & Omit<CreditCardAuthorized, keyof CardAuthorization | 'status' | 'delayToCancel'>>;
export type ApproveBankInvoiceArgs = OptionalUndefined<ConnectorMetadataProperty & Omit<BankInvoiceAuthorized, keyof BankInvoiceAuthorization | 'status' | 'delayToCancel'>>;
export type DenyArgs = OptionalUndefined<ConnectorMetadataProperty & Omit<FailedAuthorization, keyof AuthorizationRequest | 'status'>>;
export type PendingArgs = OptionalUndefined<ConnectorMetadataProperty & Omit<PendingAuthorization, keyof AuthorizationRequest | 'status'>>;
export type PendingBankInvoiceArgs = OptionalUndefined<ConnectorMetadataProperty & Omit<BankInvoicePending, keyof AuthorizationRequest | 'status'>>;
export type PaymentAppArgs = OptionalUndefined<Overwrite<ConnectorMetadataProperty & Omit<RedirectResponse, keyof AuthorizationRequest | 'status' | 'redirectUrl'>, {
paymentAppData: AppData;
}>>;
export type RedirectUrlArgs = OptionalUndefined<Overwrite<ConnectorMetadataProperty & Omit<RedirectResponse, keyof AuthorizationRequest | 'status' | 'paymentAppData'>, {
redirectUrl: string;
}>>;
export type ActionRequired = PaymentAppArgs | RedirectUrlArgs;
export declare const Authorizations: {
approve: ({ paymentId }: AuthorizationRequest, approveArgs: ApproveArgs) => ApprovedAuthorization;
approveCard: ({ paymentId }: CardAuthorization, approvedCardArgs: ApproveCardArgs) => CreditCardAuthorized;
approveBankInvoice: ({ paymentId }: BankInvoiceAuthorization, approvedBankInvoiceArgs: ApproveBankInvoiceArgs) => BankInvoiceAuthorized;
deny: ({ paymentId }: AuthorizationRequest, denyArgs?: DenyArgs) => FailedAuthorization;
pending: ({ paymentId }: AuthorizationRequest, pendingArgs: PendingArgs) => PendingAuthorization;
pendingBankInvoice: ({ paymentId }: AuthorizationRequest, pendingArgs: PendingBankInvoiceArgs) => BankInvoicePending;
redirect: ({ paymentId }: AuthorizationRequest, actionRequired: ActionRequired) => RedirectResponse | PendingAuthorization;
};
export interface ApproveCancellationArgs {
cancellationId: string;
code?: CancellationResponse['code'];
message?: string;
connectorMetadata?: ConnectorMetadata[];
}
export type ManualCancellationArgs = Omit<ApproveCancellationArgs, 'cancellationId'>;
export type DenyCancellationArgs = ManualCancellationArgs;
export declare const Cancellations: {
approve: ({ paymentId }: CancellationRequest, cancellationArgs: ApproveCancellationArgs) => CancellationResponse;
manual: ({ paymentId }: CancellationRequest, cancellationArgs?: ManualCancellationArgs) => CancellationResponse;
deny: ({ paymentId }: CancellationRequest, cancellationArgs?: DenyCancellationArgs) => CancellationResponse;
};
export interface ApproveRefundArgs {
refundId: string;
code?: RefundResponse['code'];
message?: string;
connectorMetadata?: ConnectorMetadata[];
}
export type DenyRefundArgs = Omit<ApproveRefundArgs, 'refundId'>;
export type ManualRefundArgs = DenyRefundArgs;
export declare const Refunds: {
approve: ({ paymentId, requestId, value }: RefundRequest, refundArgs: ApproveRefundArgs) => RefundResponse;
manual: ({ paymentId, requestId }: RefundRequest, refundArgs?: ManualRefundArgs) => RefundResponse;
deny: ({ paymentId, requestId }: RefundRequest, refundArgs?: DenyRefundArgs) => RefundResponse;
};
export interface ApproveSettlementArgs {
settleId: string;
code?: SettlementResponse['code'];
message?: string;
connectorMetadata?: ConnectorMetadata[];
}
export type DenySettlementArgs = Omit<ApproveSettlementArgs, 'settleId'>;
export declare const getCallbackUrl: (request: AuthorizationRequest | string) => string;
export declare const Settlements: {
approve: ({ paymentId, requestId, value }: SettlementRequest, settleArgs: ApproveSettlementArgs) => SettlementResponse;
deny: ({ paymentId, requestId }: SettlementRequest, settleArgs?: DenySettlementArgs) => SettlementResponse;
};
export {};