declare type Intent = 'sale' | 'authorization'; interface ICreatePayment { amount: number; orderID: string; intent: Intent; merchantAssociationInfo?: string; } interface IBkashCreatePaymentResponse { paymentID: string; createTime: string; orgLogo: string; orgName: string; transactionStatus: string; amount: string; currency: string; intent: string; merchantInvoiceNumber: string; } interface IBkashExecutePaymentResponse { paymentID: string; createTime: string; updateTime: string; trxID: string; transactionStatus: string; amount: string; currency: string; intent: string; merchantInvoiceNumber: string; } interface IBkashQueryPaymentResponse { paymentId: string; createTime: string; updateTime: string; trxID: string; transactionStatus: string; amount: string; currency: string; intent: Intent; merchantInvoiceNumber: string; refundAmount: string; } interface IBkashSearchTransactionResponse { trxID: string; transactionStatus: string; transactionType: string; amount: string; currency: string; customerMsisdn: string; organizationShortCode: string; initiationTime: string; completedTime: string; } interface IBkashRefundResponse { completedTime: string; transactionStatus: string; originalTrxID: string; refundTrxID: string; amount: string; currency: string; charge: string; } interface IBkashRefundStatusResponse { completedTime: string; transactionStatus: string; originalTrxID: string; refundTrxID: string; amount: string; currency: string; charge: string; } interface IBkashConstructor { baseURL: string; key: string; secret: string; username: string; password: string; } interface IRefundArgs extends Record { paymentID: string; /** * Must not contain more than 2 decimal points * @example * ``` * { * ... * amount: '25.69' * ... * } * ``` */ amount: string; trxID: string; sku: string; } /** * Bkash Payment Gateway Main Entrypoint * @example * ```javascript * const BkashGateway = require('bkash-payment-gateway'); * const bkash = new BkashGateway({ * baseURL: process.env.BKASH_BASEURL, * key: process.env.BKASH_API_KEY, * secret: process.env.BKASH_API_SECRET, * username: process.env.BKASH_USERNAME, * password: process.env.BKASH_PASSWORD, * }); * ``` */ declare class BkashGateway { private token; private refreshToken; private tokenIssueTime; private readonly secret; private readonly key; private readonly baseURL; private headers; /** * * @param config config object required by the `bkash-payment-gateway` package * @example * ``` * const bkashConfig = { * baseURL: 'https://checkout.sandbox.bka.sh/v1.2.0-beta/', * key: 'abcdxx2369', * username: 'bkashTest', * password: 'bkashPassword1', * secret: 'bkashSup3rS3cRet', * } * const bkash = new BkashGateway(config) * ``` * */ constructor(config: IBkashConstructor); /** * Start the initial payment request * * @param paymentDetails Information required to start a payment flow * * @returns Promise of Bkash Create payment Response * @example * ``` * const result = await bkash.createPayment({ * amount: 1000, * orderID: 'ORD1020069', * intent: 'sale', * }); * ``` */ createPayment: (paymentDetails: ICreatePayment) => Promise; /** * Execute a payment after a user has completed bkash auth flow * @param paymentID - Payment ID to Execute * @example * ``` * const result = await bkash.executePayment(paymentID); * ``` */ executePayment: (paymentID: string) => Promise; /** * Query Payment From Bkash * @param paymentID - Payment ID to Query * * @example * ``` * const result = await bkash.queryPayment(paymentID); * ``` */ queryPayment: (paymentID: string) => Promise; /** * Search with a transaction ID * @param trxID - Transaction ID to Search * * @example * ``` * const result = await bkash.searchTransaction('TRX22347463XX'); * ``` */ searchTransaction: (trxID: string) => Promise; /** * Refund a transaction * @param trxID - Transaction ID to Search * * @example * ``` * const refunTransactionData = { * paymentID: '22423169', * amount: '25.69', //do not add more than two decimal points * trxID: 'TRX22347463XX', * sku: 'SK256519', * }; * * const result = await bkash.refundTransaction(refunTransactionData); * ``` */ refundTransaction: (refundInfo: IRefundArgs) => Promise; /** * Check Refund Status for a given paymentID and transaction ID * @param trxID transaction ID * @param paymentID payment ID * @example * ``` * const result = await bkash.refundStatus('TRX22347463XX', '12437969'); * ``` */ refundStatus: (trxID: string, paymentID: string) => Promise; private createTokenHeader; private getToken; private getInitialToken; private newToken; private validateConfig; } export { BkashGateway, BkashGateway as default };