mtn-momo-client
Version:
A collection of utils to interact with the mtn-momo api
52 lines (51 loc) • 2.77 kB
TypeScript
import { AxiosInstance } from 'axios';
import { Product } from '../../types';
import { TransactionParty } from './types';
declare const TransactionStatusReasonCodes: readonly ["PAYEE_NOT_FOUND", "PAYER_NOT_FOUND", "NOT_ALLOWED", "NOT_ALLOWED_TARGET_ENVIRONMENT", "INVALID_CALLBACK_URL_HOST", "INVALID_CURRENCY", "SERVICE_UNAVAILABLE", "INTERNAL_PROCESSING_ERROR", "NOT_ENOUGH_FUNDS", "PAYER_LIMIT_REACHED", "PAYEE_NOT_ALLOWED_TO_RECEIVE", "PAYMENT_NOT_APPROVED", "RESOURCE_NOT_FOUND", "APPROVAL_REJECTED", "EXPIRED", "TRANSACTION_CANCELED", "RESOURCE_ALREADY_EXIST"];
type TransactionStatusReasonCode = (typeof TransactionStatusReasonCodes)[number];
type TransactionStatus = 'PENDING' | 'SUCCESSFUL' | 'FAILED' | 'TIMEOUT' | 'REJECTED';
type Transaction<TargetProduct extends Product> = {
/** Amount that will be debited from the payer account */
amount: number;
/** ISO4217 Currency */
currency: string;
/** Financial transactionId from a mobile money manager. Used to connect to the specific financial transaction made in the account */
financialTransactionId: string;
/**
* External id is used as a reference to the transaction. External id is used for reconciliation.
* The external id will be included in transaction history report.
* External id is not required to be unique.
*/
externalId: string;
/** */
status: TransactionStatus;
reason?: {
code: TransactionStatusReasonCode;
message: string;
};
/** Message that will be written in the payer transaction history message field. */
payerMessage?: string;
/** Message that will be written in the payee transaction history note field. */
payeeNote?: string;
} & TransactionParty<TargetProduct>;
type CreateTransactionStatusFetcherOptions<T extends Product> = {
/**
* The client to use when fetching the payment status.
* Its different for different product endpoint and different for different versions of the same product endpoints
*/
client: AxiosInstance;
/** The target product */
targetProduct: T;
};
type TransactionStatusFetcherOptions = {
/**
* UUID of transaction to get result.
* Reference id used when creating the request to pay for a collection or the transfer for disbursement and remittance.
*/
referenceId: string;
};
type FetchTransactionStatus<T extends Product> = (options: TransactionStatusFetcherOptions) => Promise<Transaction<T>>;
type CreateTransactionStatusFetcher = <T extends Product>(options: CreateTransactionStatusFetcherOptions<T>) => FetchTransactionStatus<T>;
declare const createTransactionStatusFetcher: CreateTransactionStatusFetcher;
export { createTransactionStatusFetcher };
export type { FetchTransactionStatus };