Оплата
- Пользователь вводит сумму и номер своего кошелька bKash в формате 01ХХХХХХХХХ, где X - цифра.
- Происходит редирект пользователя на платежную страницу bKash.
- Пользователь совершает оплату на стороне bKash - вводит пин, отп.
- Paykassma отсылает постбек на сторону мерчанта.
- Средства начисляются на баланс пользователя на платформе мерчанта.
Интеграция через платежное окно (plugin)
Пример ссылки на открытие платежного окна bKash:
https://plugin.{URL_сервера}/?label=label¤cy_code=BDT&lang=en&wallet_type=bkash_api&custom_transaction_id=custom_transaction_id&fixed_amount=fixed_amount&payment_url_fail_id=1 |
|---|
wallet_type=bkash_api currency_code=BDT Доступные языки (lang): en, bn
Обратите внимание на описание параметров payment_url_success_id / payment_url_fail_id / payment_url_pending_id и success_url / fail_url / pending_url
Для использования payment_url_success_id / payment_url_fail_id / payment_url_pending_id необходимо передать URL'ы саппорту Paykassma, и использовать полученные ID в параметрах.
Для использования success_url / fail_url / pending_url необходимо использовать хэширование URL'ов (подробнее про хэширование см. здесь).
Описание всех параметров плагина смотрите здесь.
Интеграция через клиентский API
Создание платежа
http://api.{ URL сервера }/api/v1/payment/create/bkash_api?secret={pluginapi_secret}
Request method:
POST
Format:
JSON
Parameters:
| Name | Type | Required | Description |
| secret | string | yes | Ключ доступа. |
Body:
Name | Type | Required | Max Length | Description |
amount | float | yes | ограничена min и max. | Сумма платежа. |
| account_number | string | yes | 11 | Одиннадцатизначный номер счета пользователя Клиента в Bkash, в формате 01ХХХХХХХХХ. Валидация:
|
| currency | string | yes | 3 | Код валюты. |
| label | string | yes | 190 | Это уникальный идентификатор (ID) пользователя, осуществляющего платеж. |
| custom_transaction_id | string | yes | 190 | Идентификатор транзакции в системе Клиента. Должен быть уникальным. |
| success_url | string | yes | не ограничен | Ссылка, на которую нужно перенаправить пользователя со страницы Bkash в случае успешной оплаты. |
| failure_url | string | yes | не ограничен | Ссылка, на которую нужно перенаправить пользователя со страницы Bkash в случае ошибки оплаты. |
| cancel_url | string | yes | не ограничен | Ссылка, на которую нужно перенаправить пользователя со страницы Bkash в случае отмены оплаты. |
{
"amount": 1.00,
"account_number": "01770618575",
"currency": "BDT",
"label": "test",
"custom_transaction_id": "01abc0095689",
"success_url": "https://static5.depositphotos.com/1029663/395/i/600/depositphotos_3955476-stock-photo-green-check-mark.jpg?status=success",
"failure_url": "https://top-fon.com/uploads/posts/2021-07/1626870875_29-p-krasnii-krest-fon-32.png?status=failure",
"cancel_url": "https://google.com/"
}
{
"status": "ok",
"data": {
"orderId": "1cb4627a420a6e69",
"bkashUrl": "https://sandbox.payment.bkash.com/redirect/tokenized/?paymentID=TR00114E1661778153815&hash=dcRq9geuCtjkN6rFpaGxdLAMrmyxIxL*kEN-p41SLL2M!xXy9m2OTUTLwlAGMVWDKyE8xkOHj_N_AHaTxNGT*(V2LXyC5y4zpUsG1661778154005&mode=0011&apiVersion=v1.2.0-beta",
"message": "Successful"
}
}
{
'status': 'fail',
'message': 'MESSAGE'
}
В случае успешного запроса создания платежа пользователю Клиента необходимо отобразить страницу, полученную в параметре "bkashUrl".
Шаги оплаты на странице Bkash
Шаг 1. Откроется форма для ввода номера счета пользователя в Bkash. Необходимо нажать на "Confirm" для перехода на следующий шаг оплаты.
Данные на первой форме Bkash заполняются автоматически, так как номер счета пользователя Клиента в Bkash уже передали в запросе создания платежа.

Шаг 2. Если номер счета оказался валидным, то откроется следующая форма для ввода кода ОТП. Необходимо на форме ввести ОТП и нажать на "Confirm".

Шаг 3. Если код ОТП корректный, то откроется следующая форма для ввода PIN. Необходимо ввести данные и нажать на "Confirm".

Шаг 4. Если PIN верный, то Bkash перенаправит пользователя по url, который отправили в запросе платежа.
Пример ниже представлен для неуспешного платежа.

После этого пользователю на какое-то время отобразится страница загрузки Paykassma (достаточно быстро, несколько секунд). Пример:

Страница загрузки закроется и пользователя перенаправит на нужную страницу в зависимости от статуса платежа:
- В случае успешной оплаты → на success_url;
- В случае ошибки платежа → на failure_url (при интеграции по API) или на fail_url (при интеграции через plugin).
- В случае отмены платежа (если на шаге 1-3 пользователь нажал на кнопку "Close") → на cancel_url (доступно для интеграции по API). В случае интеграции через plugin - на fail_url.
Проверка статуса платежа (Необязательный этап)
http://api.{ URL сервера }/api/v1/payment/bkash_api/status?secret={pluginapi_secret}
Request method:
POST
Format:
JSON
Parameters:
| Name | Type | Required | Description |
| secret | string | yes | Ключ доступа. |
Body:
Name | Type | Required | Max Length | Description |
order_id | string | yes | не ограничен | Номер заказа, полученный в ответе на запрос создания платежа. |
{
"order_id": "fb6fd9d57a664f61"
}
{
"status": "ok",
"data": {
"status": "success" // доступны "wait" и "fail".
}
}
{
'status': 'fail',
'message': 'MESSAGE'
}
Постбек депозита
Общую документацию по постбекам смотрите здесь.
Пример постбека на депозит bKash:
{
"signature": "35e54262246adeafd4694e767557945827339a7f",
"wallet_type": "bkash_api",
"amount": 500,
"currency_code": "BDT",
"label": "7848747947846",
"direction": "ingoing",
"created_datetime": "2023-08-01 13:37:42",
"access_key": "FQ9jMwrNSkFbyMNqYFf6Ed4xeKmjHK",
"additional_data": [
{
"activated_datetime": "2023-08-01 16:37:16",
"exchanger_identifier": null,
"comment": "",
"amount": "100",
"currency_code": "BDT",
"wallet_type": "bkash_api",
"stockpiling_id": 963,
"transaction_id": "CD0C06E08D",
"transaction_type": 1,
"plugin_custom_order_id": null,
"withdrawal_id": null,
"withdrawal_status": null,
"account_number": "",
"account_name": "",
"account_email": "",
"bank_details": {
"bank_code": "",
"branch_code": ""
}
},
{
"activated_datetime": "2023-08-01 16:37:40",
"exchanger_identifier": null,
"comment": "",
"amount": "400",
"currency_code": "BDT",
"wallet_type": "bkash_api",
"stockpiling_id": 963,
"transaction_id": "5750E9FBB3",
"transaction_type": 1,
"plugin_custom_order_id": null,
"withdrawal_id": null,
"withdrawal_status": null,
"account_number": "",
"account_name": "",
"account_email": "",
"bank_details": {
"bank_code": "",
"branch_code": ""
}
}
]
}
Сервер Paykassma ожидает ответ в json {"status":"ok"} код ответа 200, в противном случае, при получении отличающегося ответа, Paykassma будет пересылать постбек с определенной периодичностью.
На повторные постбеки необходимо также отвечать {"status":"ok"} код ответа 200.
Выводы / выплаты пользователям
Выплаты пользователям осуществляются через метод bKash (подробнее про метод bKash смотрите здесь).