redsys-easy
Version:
Node JS interface for Redsys payment gateway
161 lines (160 loc) • 4.95 kB
TypeScript
import type { TransactionType } from '../assets/transaction-types';
import type { CountryNum } from '../assets/countries';
import type { CardBrandNum } from '../assets/card-brands';
import type { CurrencyNum } from '../assets/currencies';
import type { LanguageNum } from '../assets/lang-codes';
import type { ThreeDSv1PreAuthOutputParams, ThreeDSv2PreAuthOutputParams, ThreeDSv1ChallengeOutputParams, ThreeDSv2ChallengeOutputParams } from './3ds-params';
/**
* Common output parameters
*/
export interface BaseOutputParams {
/** Order identifier */
Ds_Order: string;
/** Merchant code number */
Ds_MerchantCode: string;
/** Terminal number */
Ds_Terminal: string;
/** Transaction type */
Ds_TransactionType: TransactionType;
/** Secure payment indicator */
Ds_SecurePayment?: '0' | '1' | '2';
/** Card country */
Ds_Card_Country?: CountryNum;
/** Authorization transaction code, refunds */
Ds_AuthorisationCode?: string;
/** Card type */
Ds_Card_Type?: 'C' | 'D';
/** Merchant data */
Ds_MerchantData?: string;
/** Card brand */
Ds_Card_Brand?: CardBrandNum;
/** Card is under PSD2 */
Ds_Card_PSD2?: 'Y' | 'N';
/**
* PDS2 exemptions
*
* @example
* `'LWV;TRA[30.0];COR;MIT;ATD;WHL'`
*/
Ds_Excep_SCA?: string;
/** Payment method number */
Ds_ProcessedPayMethod?: string;
/** Credential On File transaction identifier */
Ds_Merchant_Cof_Txnid?: string;
/**
* Card number with some digits replaced with asterisks
* @deprecated
*/
Ds_CardNumber?: string;
/** Card number with some digits replaced with asterisks */
Ds_Card_Number?: string;
/** Last 4 digits of card number */
Ds_Card_Last4?: string;
/** Card expiry date, YYmm */
Ds_ExpiryDate?: string;
/** Stored payment method reference number */
Ds_Merchant_Identifier?: string;
}
/**
* Common output parameters of resolved requests or notifications
*/
export interface ResolvedTransactionTrait {
/**
* Amount designated as an integer in the smallest currency division
*
* @example
* `'199'` (1.99 EUR)
*/
Ds_Amount: string;
/** Currency number, ISO-4217 */
Ds_Currency: CurrencyNum;
/** Response code */
Ds_Response: string;
}
/**
* Common output parameters of a all requests
*/
export interface RequestOutputParams extends BaseOutputParams {
/** Payment link, paygold */
Ds_UrlPago2Fases?: string;
/** Language */
Ds_Language?: LanguageNum;
}
/**
* Output parameters of a IniciaPeticion HTTP request
*
* @public
*/
export interface RestIniciaPeticionOutputParams extends RequestOutputParams {
/** EMV3DS data in json format */
Ds_EMV3DS?: ThreeDSv1PreAuthOutputParams | ThreeDSv2PreAuthOutputParams;
/** Dynamic Currency Conversion data, json */
Ds_DCC?: {
InfoMonedaTarjeta: {
/** Card currency number, ISO-4217 */
monedaDCC: string;
/** Card currency name */
litMonedaDCC: string;
/** Card currency 3-letter code */
litMonedaRDCC: string;
/** Amount in card currency, decimal number */
importeDCC: string;
/** Exchange rate, decimal number */
cambioDCC: string;
/** Exchange date, YYYY-MM-DD */
fechaCambioDCC: string;
/** Markup, decimal number */
markUp: number;
};
InfoMonedaComercio: {
/** Currency number, ISO-4217 */
monedaCome: string;
/** Currency 3-letter code */
litMonedaCome: string;
/** Amount, decimal number */
importeCome: string;
};
};
}
/**
* Output parameters of a TrataPeticion HTTP request
*
* @public
*/
export interface RestTrataPeticionOutputParams extends RequestOutputParams, Omit<ResolvedTransactionTrait, 'Ds_Response'> {
/** Response code */
Ds_Response?: ResolvedTransactionTrait['Ds_Response'];
/** EMV3DS data in json format */
Ds_EMV3DS?: ThreeDSv1ChallengeOutputParams | ThreeDSv2ChallengeOutputParams;
}
/**
* Common parameters for notifications
*/
export interface NotificationOutputParams extends BaseOutputParams, ResolvedTransactionTrait {
/** Language */
Ds_ConsumerLanguage?: LanguageNum;
/** Error code */
Ds_ErrorCode?: string;
}
/**
* Parameters of a redsys REST notification
*
* @public
*/
export interface RestNotificationOutputParams extends NotificationOutputParams {
/** Transaction date, DD/MM/YYYY */
Ds_Date: string;
/** Transaction time, hh:mm */
Ds_Hour: string;
}
/**
* Parameters of a redsys SOAP notification
*
* @public
*/
export interface SoapNotificationOutputParams extends NotificationOutputParams {
/** Transaction date, DD/MM/YYYY */
Fecha: string;
/** Transaction time, hh:mm */
Hora: string;
}