Assalam Docs

Приём оплаты за четыре шага

Заказ, ссылка на оплату и событие об исходе

Банк не даёт метода «оплатить товар» — он умеет привязать карту и списать с привязанной. Разовая оплата собирается из этих действий, и собираем её мы. Для вас это один заказ и одно событие: карт, кодов из СМС и способов оплаты в вашем коде не будет.

Возьмите ключ с областью «продажа товаров»

Выпускается в кабинете. Такой ключ не достаёт до карт клиентов — при утечке им нельзя списать с чужой сохранённой карты.

Создайте заказ

amount — в тийинах, returnUrl — куда вернуть покупателя после оплаты, успешной или нет. В ответе придёт paymentUrl.

Idempotency-Key делайте производным от номера вашего заказа, а не случайным: случайный ключ при повторе запроса создаст второй заказ и вторую ссылку на оплату.

Запрос
curl -X POST https://api.assalam.uz/merchant/v1/orders \
  -H "Authorization: Bearer sk_test_..." \
  -H "Idempotency-Key: order-1024" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 112000,
    "returnUrl": "https://shop.uz/order/1024/done",
    "description": "Заказ A-1024",
    "customerRef": "user_42"
  }'
Ответ
{
  "id": "cmsr…",
  "object": "order",
  "amount": 112000,
  "currency": "UZS",
  "status": "PENDING",
  "paymentUrl": "https://checkout.assalam.uz/pay/44705b…",
  "expiresAt": "2026-08-21T21:42:43.813Z",
  "returnUrl": "https://shop.uz/order/1024/done",
  "livemode": false
}

Отправьте покупателя на paymentUrl

Он увидит ваше название, описание заказа и сумму, введёт карту и код из СМС. Дальше мы спишем деньги и вернём его на returnUrl.

Дождитесь события

order.paid — деньги списаны, order.expired — срок вышел, покупатель не заплатил. Опрашивать нас не нужно; метод GET есть на случай, если ваш сервис лежал.

Событие
{
  "id": "evt_…",
  "type": "order.paid",
  "data": {
    "id": "cmsr…",
    "object": "order",
    "amount": 112000,
    "status": "PAID",
    "paidAt": "2026-08-21T21:25:10.000Z",
    "paymentIntent": "cmsr…"
  }
}
Если сервис лежал
curl https://api.assalam.uz/merchant/v1/orders/cmsr… \
  -H "Authorization: Bearer sk_test_..."

Оплатить и сохранить карту

Поле saveCard: true оставляет карту покупателя после оплаты, и дальше вы списываете ею сами — уже через Subscribe API. Идентификатор карты придёт в поле savedCard вместе с событием order.paid.

По умолчанию карта отвязывается сразу после оплаты. Так и написано покупателю на странице: хранить чужую карту без нужды — лишний риск.

Возврат на карту сейчас невозможен

Банк не передал нам операцию возврата. Если ваш сценарий предполагает возвраты, прочтите «Чего пока нельзя» до запуска.

Дальше по теме

На этой странице