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)
}
}
)