Оплата
- Пользователь вводит необходимую информацию: сумму платежа, номер телефона, привязанный к учетной записи EasyPaisa.
- На телефон пользователя приходит пуш-уведомление с запросом на оплату.
- Пользователь переходит в приложение и подтверждает оплату.
- Paykassma отсылает постбек на сторону мерчанта.
- Средства начисляются на баланс пользователя на платформе мерчанта.
Интеграция через платежное окно (plugin)
Пример ссылки на открытие платежного окна EasyPaisa API:
https://plugin.{URL_сервера}/?label=label¤cy_code=PKR&lang=lang&wallet_type=easypaisa_api&custom_transaction_id=custom_transaction_id&fixed_amount=fixed_amount&payment_url_fail_id=1 |
|---|
wallet_type=easypaisa_api currency_code=PKR Доступные языки (lang): en, ur (Урду)
Обратите внимание на описание параметров 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
Создание платежа
URL: http://api.{URL_сервера}/api/v1/payment/create/easypaisa_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. | Сумма платежа. |
| currency | string | yes | 3 | Код валюты. |
| label | string | yes | 190 | Это уникальный идентификатор (ID) пользователя, осуществляющего платеж. |
| custom_transaction_id | string | yes | 190 | Идентификатор транзакции в системе Клиента. |
| phone_number | string | yes | 11 | Номер телефона пользователя. Данный номер телефона должен быть привязан к учетной записи пользователя в Easypaisa. Формат ввода: 03xxxxxxxxx, где x - цифра. Длина всей строки включая "03" → 11 цифр. |
{
"amount": 2000,
"currency": "PKR",
"label": "232323",
"custom_transaction_id": "test_trx_01",
"phone_number": "03123456789"
}
{
"status": "success",
"message": "",
"code": 20000,
"data": {
"order_id": "4127afd69732325c"
},
"paginate": {
"offset": 0,
"total": 1,
"limit": 1
}
}
{
"status": "fail",
"message": "MESSAGE"
}
Подсказка
После успешного запроса создания платежа пользователь должен подтвердить платеж в своем мобильном устройстве.
На подтверждение платежа пользователю дается 1 минута.
Чтобы избежать множественных запросов от одного пользователя или с разных учетных записей с одного и того же кошелька, Paykassma будет отказывать в создании ордера, если количество неудачных попыток пользователя за последние 24 часа достигло или превысило 2-х. В этом случае пользователь должен получить соответствующую ошибку ("Too many requests. Please try again later."), что поможет предотвратить злоупотребление системой и спам отдельных пользователей с множеством попыток платежей.
Проверка статуса платежа (необязательный запрос)
URL: http://api.{URL_сервера}/api/v1/payment/easypaisa_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". |
{
"order_id": "4127afd69732325c"
}
{
"status": "success",
"message": "",
"code": 20000,
"data": {
"status": "success"
},
"paginate": {
"offset": 0,
"total": 1,
"limit": 1
}
}
{
"status": "success",
"message": "",
"code": 20000,
"data": {
"status": "wait"
},
"paginate": {
"offset": 0,
"total": 1,
"limit": 1
}
}
{
"status": "success",
"message": "",
"code": 20000,
"data": {
"status": "fail"
},
"paginate": {
"offset": 0,
"total": 1,
"limit": 1
}
}
{
"status": "fail",
"message": {
"order_id": [
"The selected order id is invalid."
]
}
}
Постбек депозита
Общую документацию по постбекам смотрите здесь.
Пример постбека на депозит EasyPaisa API
{
"signature": "23ceb452dc398b5f8b0e7ab9eb91236c7ee50911",
"wallet_type": "easypaisa_api",
"amount": 1000,
"currency_code": "PKR",
"label": "7848747947846",
"direction": "ingoing",
"created_datetime": "2023-08-01 13:37:42",
"access_key": "uowkn0b3LfBxpcWYHi4_",
"additional_data": [
{
"activated_datetime": "2024-05-13 13:05:38",
"exchanger_identifier": 03xxxxx0957,
"comment": "",
"amount": "1000",
"currency_code": "PKR",
"wallet_type": "easypaisa_api",
"stockpiling_id": 2005,
"transaction_id": "28064319767",
"transaction_type": 1,
"plugin_custom_order_id": "1234",
"withdrawal_id": null,
"withdrawal_status": null,
"account_number": "",
"account_name": "",
"account_email": "",
"bank_details": {
"bank_code": "",
"branch_code": ""
}
}
]
}
На повторные постбеки необходимо также отвечать {"status":"ok"} с кодом ответа 200.
Выводы / выплаты пользователям
Выплаты пользователям осуществляются через метод EasyPaisa (подробнее про метод EasyPaisa смотрите здесь).