pay(
options: PaymentOptions,
callback?: (result: InvoiceClosedResult) => void,
): Promise<PaymentResult>
queryOrder(orderId: string): Promise<OrderResult>
resumePayment(
callback?: (result: InvoiceClosedResult) => void,
): Promise<null | PaymentResult>
hasPendingPayment(): boolean
interface PaymentOptions {
tg_use_id: string; // telegram user id
amount: number; // amount in rubles
label: string; // label
title: string; // title
description: string; // description
payload?: string; // payload
photo_height?: number; // photo height
photo_width?: number; // photo width
photo_size?: number; // photo size
photo_url?: string; // photo url
callback_url?: string; // callback url
}
interface PaymentResult {
tg_payment_id: number; // telegram payment id
tg_payment_url: string; // telegram payment url
}
interface InvoiceClosedResult {
orderId: number; // order id
status: "failed" | "paid" | "cancelled" | "pending"; // status
}
interface OrderResult {
amount: number; // amount in rubles
application_id: string; // application id
description: string; // description
label: string; // label
payload: string; // payload
status: number; // status
status_description: string; // status description
tg_payment_id: string; // telegram payment id
tg_use_id: string; // telegram user id
title: string; // title
}
const portex = new Portex({
appId: 'your-app-id',
});
await portex.init();
const requiredObject = {
tg_use_id: portex.webApp.initDataUnsafe.user.id,
amount: 1,
label: 'item',
title: 'Book',
description: 'Magic book'
};
const result = await portex.pay({
...requiredObject,
payload: 'your-payload',
photo_url: 'https://your-photo-url.com'
},(result) => {
if (portex.hasPendingPayment()) {
// payment is pending or cancelled
}else{
// payment is paid
// get payment result
const paymentResult = await portex.queryOrder(result.orderId);
}
});