Оплата

  1. Пользователь вводит сумму и номер своего кошелька bKash в формате 01ХХХХХХХХХ, где X - цифра.
  2. Происходит редирект пользователя на платежную страницу bKash.
  3. Пользователь совершает оплату на стороне bKash - вводит пин, отп.
  4. Paykassma отсылает постбек на сторону мерчанта.
  5. Средства начисляются на баланс пользователя на платформе мерчанта.

Интеграция через платежное окно (plugin)

Пример ссылки на открытие платежного окна bKash:

https://plugin.{URL_сервера}/?
label=label
&currency_code=BDT
&lang=en
&wallet_type=bkash_api
&custom_transaction_id=custom_transaction_id
&fixed_amount=fixed_amount
&payment_url_success_id=2
&payment_url_pending_id=3
&payment_url_fail_id=1
&success_url=hash
&fail_url=hash
&pending_url=hash


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_idpayment_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:

NameTypeRequiredDescription
secretstringyesКлюч доступа

Body:

Name

Type

Required

Max Length

Description

amount

float 

yes

ограничена min и max.
депозитом

Сумма платежа
account_numberstringyes11

Одиннадцатизначный номер счета пользователя Клиента в Bkash, в формате 01ХХХХХХХХХ

Валидация:

  • Числа: 0-9
currencystringyes3Код валюты 
labelstring yes190Это уникальный идентификатор (ID) пользователя, осуществляющего платеж
custom_transaction_idstringyes190Идентификатор транзакции в системе Клиента. Должен быть уникальным.
success_urlstringyesне ограниченСсылка, на которую нужно перенаправить пользователя со страницы Bkash в случае успешной оплаты
failure_urlstringyesне ограниченСсылка, на которую нужно перенаправить пользователя со страницы Bkash в случае ошибки оплаты
cancel_urlstringyesне ограничен

Ссылка, на которую нужно перенаправить пользователя со страницы 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:

NameTypeRequiredDescription
secretstringyesКлюч доступа

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",
    "converted_amount": {"USD": 4.61, "INR": 380, "EUR": 4.2, "IDR": 69702.53, "MYR": 20.81, "VND": 109100.85, "SGD": 6.15, "THB": 158.07, "NGN": 3549.74, "TRY": 124.18, "AED": 16.92, "CAD": 6.11, "AUD": 6.96, "BDT": 500, "AFN": 392.19, "ALL": 427.25, "AMD": 1778.42, "AOA": 3803.37, "ARS": 1271.54, "AWG": 8.3, "AZN": 7.83, "BAM": 8.2, "BBD": 9.21, "BGN": 8.21, "BHD": 1.74, "BIF": 13046.47, "BMD": 4.61, "BND": 6.15, "BOB": 31.84, "BRL": 21.99, "BSD": 4.61, "BTC": 0.00015943, "BTN": 379, "BWP": 60.54, "BYN": 11.63, "BZD": 9.29, "CDF": 11425.29, "CHF": 4.04, "CLF": 0.14, "CLP": 3878.55, "CNH": 33.06, "CNY": 33.02, "COP": 18082.75, "CRC": 2498.95, "CUC": 4.61, "CUP": 118.58, "CVE": 462.56, "CZK": 100.38, "DJF": 820.28, "DKK": 31.27, "DOP": 259.16, "DZD": 624.77, "EGP": 142.3, "ERN": 69.08, "ETB": 253.82, "FJD": 10.22, "FKP": 3.6, "GBP": 3.6, "GEL": 11.9, "GGP": 3.6, "GHS": 52.22, "GIP": 3.6, "GMD": 276.31, "GNF": 39634.5, "GTQ": 36.22, "GYD": 963.87, "HKD": 35.89, "HNL": 113.34, "HRK": 31.62, "HTG": 628.87, "HUF": 1633.77, "ILS": 16.76, "IMP": 3.6, "IQD": 6035.32, "IRR": 194797.68, "ISK": 605.39, "JEP": 3.6, "JMD": 711.75, "JOD": 3.26, "JPY": 659.33, "KES": 657.15, "KGS": 404.25, "KHR": 19027.89, "KMF": 2061.95, "KPW": 4144.63, "KRW": 5933.82, "KWD": 1.42, "KYD": 3.84, "KZT": 2047.77, "LAK": 89252.61, "LBP": 69151.38, "LKR": 1469.64, "LRD": 858.4, "LSL": 81.95, "LYD": 22.02, "MAD": 45.38, "MDL": 82.35, "MGA": 20777.32, "MKD": 258.57, "MMK": 9674.75, "MNT": 15887.75, "MOP": 36.98, "MRO": 0, "MRU": 175.52, "MUR": 208.15, "MVR": 70.69, "MWK": 4853.1, "MXN": 77.35, "MZN": 293.46, "NAD": 82.25, "NIO": 168.55, "NOK": 47.01, "NPR": 606.4, "NZD": 7.49, "OMR": 1.77, "PAB": 4.61, "PEN": 16.61, "PGK": 16.59, "PHP": 252.72, "PKR": 1324.8, "PLN": 18.6, "PYG": 33513, "QAR": 16.79, "RON": 20.69, "RSD": 492.16, "RUB": 424.19, "RWF": 5413.13, "SAR": 17.28, "SBD": 38.44, "SCR": 61.28, "SDG": 2770, "SEK": 48.85, "SHP": 3.6, "SLL": 96567.61, "SOS": 2623.48, "SRD": 177.86, "SSP": 599.87, "STD": 102610.94, "STN": 102.67, "SVC": 40.31, "SYP": 11570.57, "SZL": 81.89, "TJS": 50.47, "TMT": 16.16, "TND": 14.19, "TOP": 10.82, "TTD": 31.29, "TWD": 145.48, "TZS": 11319.27, "UAH": 170.14, "UGX": 16716.57, "UYU": 173.55, "UZS": 53595.22, "VEF": 0, "VES": 135.74, "VUV": 546.73, "WST": 12.52, "XAF": 2752.15, "XAG": 0.19, "XAU": 0, "XCD": 12.45, "XDR": 3.43, "XOF": 2752.15, "XPD": 0, "XPF": 500.67, "XPT": 0, "YER": 1152.67, "ZAR": 83.54, "ZMW": 87.42, "ZWL": 1482.86, "ETH": 0.00251358, "LTC": 0.05065982, "DOGE": 59.80674641, "DASH": 0.14777208, "BCH": 0.01902045, "ZEC": 0.15475058, "ETC": 0.25289799, "XRP": 6.67674578, "TRX": 59.03020283, "XLM": 31.08030456, "WAVES": 2.42673726, "USDT": 4.60787289, "USDTTRC20": 0, "USDT20": 0},
    "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.


Оглавление: