Данный способ интеграции является НЕ рекомендуемым, если Вы ранее не интегрировали похожие платежные решения, требующие активации. Рекомендуемый способ интеграции. При выборе интеграции по API, мы рекомендуем дополнительно провести следующие доработки:
|
Доступ к общему API реализован по секретному ключу. PLUGINAPI_SECRET - строка секретного ключа. Ее необходимо будет добавлять ко всем запросам в виде get-параметра secret.
Например: https://api.{URL_сервера_Paykassma}/api/v1/deposit-info?secret=pluginapi_secret
При отправки запроса без использования данных параметров, будет выдаваться ошибка 404 'Не найдено'
https://api.{URL_server_Paykassma}/api/v1/payment-systems/available |
Request method: GET
Format: JSON
Parameters:
Параметр | Тип | Обязательность | Описание |
currency_code | string[] (3) | ДА | Массив состоящий из кодов валют. Отобразятся ПС работающие по указанным валютам |
label | string (190) | ДА | Уникальный идентификатор (ID) пользователя, осуществляющего платеж |
{ "currency_code": [ "USD", "INR" ], "label": "55" } |
{ "status": "ok", "params": { "currency_data": [ { "code": "INR", "symbol": "₹" } ], "wallets": [ { "type": "paytm", "currency_code": "INR", "order": 5, "logo": "http:\/\/api.pay.test\/storage\/payment_system\/logos\/paytm_default.svg", "name": "PayTM" }, { "type": "paytm", "currency_code": "INR", "order": 5, "logo": "http:\/\/api.pay.test\/storage\/payment_system\/logos\/paytm_34.svg", "name": "paytm", "hints": [ { "type": "requisites_hint", "text": null }, { "type": "payment_hint", "text": null }, true ], "show_limits": true } ], "imps_ib": { "INR": { "min": "8000", "max": "560000" } }, "bkash": { "BDT": { "min": "100", "max": "1000000" } }, "upi_ib": { "INR": { "min": "20000", "max": "50000" } }, "paytm": { "INR": { "min": "100000", "max": "20000000" } }, "phone_pe": { "INR": { "min": "100", "max": "800000" } } } } } |
{ "status": "fail" "message": "MESSAGE" } |
Для получения медиаподсказок о том, как совершить депозит по платежной системе, необходимо отправить запрос:
https://api.{URL_server_Paykassma}/wallet-type/images/ |
Request method: GET
Format: JSON
"status": "success", "message": "", "code": 20000, "data": { "imps": { "id": 486, "url": "https://api.staging.client-paykassma.com/storage/guide-image/bkash.mp4" }, "paytm": { "id": 500, "url": "https://api.staging.client-paykassma.com/storage/guide-image/Ghjkfre22.gif" }, "upi": { "id": 506, "url": "https://api.staging.client-paykassma.com/storage/guide-image/upi_in.mp4" } } } |
{ "status": "fail" "message": "MESSAGE" } |
В данный момент существуют два типа запросов для создания платежа, в зависимости от необходимости активации платежа при проведении.
Внимание! Для получения полного списка ПС, для которых необходима активация, обратитесь в ТП Paykassma. ТП предоставят полные примеры запросов для доступных в данный момент ПС. |
https://api.{{URL_server_Paykassma}/api/v1/transaction/create/{wallet_type} |
https://api.{URL_server_Paykassma}/api/v1/transaction/create/paytm |
Request method: POST
Format: JSON
Parameters:
Параметр | Тип | Обязательность | Описание |
currency | string (3) | ДА | Код валюты |
label | string (190) | ДА | Уникальный идентификатор пользователя, осуществляющего платеж |
{ "currency": "INR", "label": "eligendi" } |
{ "status": "ok", "params": { "identifier": "6234234234" } } |
{ "status": "fail" "message": "MESSAGE" } |
https://api.{URL_server_Paykassma}/api/v1/transaction/activate |
Request method: POST
Format: JSON
Parameters:
Параметр | Тип | Обязательность | Описание |
currency_code | string (3) | ДА | Код валюты |
wallet_type | string (190) | ДА | Значение из списка доступных ПС. |
label | string (190) | ДА | Уникальный идентификатор пользователя, осуществляющего платеж |
key1 | string (190) | ДА | Код, по которому происходит активация (Transaction_ID), полученный от пользователя |
amount | numeric | *required if | Сумма транзакции |
custom_transaction_id | string (190) | НЕТ | Идентификатор транзакции в системе Клиента |
{ "currency_code": "USD", "wallet_type": "paytm", "label": "55", "key1": "123-ABC-456-DEF" "custom_transaction_id": "123465477897" } |
{ "status": "ok" } |
{ "status": "fail" "message": "MESSAGE" } |
{ "status": "possible_transaction_created", "message": "Transaction not found. Possible transaction created" } |
**Для некоторых ПС, так же в запросе необходимо передать поле amount:
Платежная система | currency_code | wallet_type | label | key1 | amount | custom_transaction_id |
---|---|---|---|---|---|---|
IMPS IB/UPI IB | required | required | required | required | required | - |
Paytm | required | required | required | required | - | - |
PhonePe | required | required | required | required | required | - |
bKash | required | required | required | required | - | - |
Nagad | required | required | required | required | - | - |
https://api.{URL_server_Paykassma}/api/v1/payment/create/{payment_system} |
Request method: POST
Format: JSON
Parameters:
Параметр | Тип | Обязательность | Описание |
language | string (2) | ДА | Язык интерфейса |
currency | string (3) | ДА | Код валюты |
bank | string (3) | ДА | Банк, через который осуществляется платеж |
amount | numeric (ограничена max. | ДА | Сумма платежа |
label | string (190) | ДА | Уникальный идентификатор пользователя, осуществляющего платеж |
redirect_url | url | ДА | URL страницы для редиректа после платежа |
custom_transaction_id | string (190) | НЕТ | Идентификатор транзакции в системе Клиента |
{ "language": "en", "currency": "USD", "bank": "MBB", "amount": "1000", "label": "55", "redirect_url": "https:\/\/google.com" "custom_transaction_id": "123465477897" } |
{ "status": "ok" } |
{ "status": "fail" "message": "MESSAGE" } |
Для сохранения информации о транзакциях, сумма которых не превышает размер минимального депозита для конкретной платёжной системы, был реализован функционал накоплений. Транзакции пользователя (выборка по параметру label) копятся в системе и не зачисляются на счёт пользователя до тех пор, пока их сумма не достигнет минимального депозита этой платёжной системы. Постбек на сервер клиента отправится только после достижения суммы минимального депозита. До момента отправки postback транзакция не считается зачисленной на счёт.
В постбеке ввода, можно увидеть поле Stockpiling, в нем указана сконвертированная во все валюты сумма транзакций, участвующих в накоплении (одна и более транзакции). Конвертация осуществляется на основе открытых данных о курсах валют. Все валюты передаются с точностью до сотых долей, криптовалюты имеют 8 знаков в дробной части (стомиллионная точность). Так же в поле transactions передается информация о совершённых транзакциях, участвующих в накоплении (одна и более). Передается в виде массива.
Запрос на предоставление информации о накоплениях определенного пользователя
https://api.{URL_server_Paykassma}/api/v1/deposit-info |
Request method: GET
Format: JSON
Parameters:
Параметр | Тип | Обязательность | Описание |
label | string (190) | ДА | Уникальный идентификатор пользователя, осуществляющего платеж |
wallet_type | url | ДА | Значение из списка доступных ПС. |
currency | string (3) | ДА | Код валюты |
code | string (190) | НЕТ | Название ручной платёжной системы. |
{ "label": "55", "wallet_type": "paytm", "currency": "UDS" } |
{ "status": "ok" "stockpiling_sum": 0, "lacks_sum": 0, "minimum_deposit": 148 } |
{ "status": "fail" "message": "MESSAGE" } |
В коде виджета заданы параметры для указания адресов для редиректа. Указывать адреса необходимо в хешированном виде. Для хеширования адресов необходимо отправить следующий запрос:
https://api.{URL_server_Paykassma}/payment-plugin/hash-url |
Request method: POST
Format: JSON
Parameters:
Параметр | Тип | Обязательность | Описание | |
success_urls | array | ДА | Список адресов для редиректа при успешной оплате. | |
order | integer | *ДА | Номер адреса для редиректа в списке. | |
url | string | *ДА | Адрес для редиректа пользователя при успешной оплате. | |
fail_urls | array | ДА | Список адресов для редиректа при неуспешной оплате. | |
order | integer | *ДА | Номер адреса для редиректа в списке. | |
url | string | *ДА | Адрес для редиректа пользователя при неуспешной оплате. |
*Один из массивов success_urls или fail_urls может быть пустым.
{ "success_urls": [ { "order": 2, "url": "https://test.com/success2.jpg" }, { "order": 1, "url": "https://test.com/success1.jpg" } ], "fail_urls": [ { "order": 1, "url": "https://test.com/fail1.jpg" }, { "order": 2, "url": "https://test.com/fail2.jpg" } ] } |
{ "status": "ok", "urls": { "success_url": [ { "order": 1, "url": "a93558ba9e4f04eef3b1f759ae4281305776559ce86ae2af5f6e6498d84b99be" }, { "order": 2, "url": "7c51f9d6b35a80a8fcce9cf3f4f0ae56b818c2e375a8b3297cb3fafb41a921eb" } ], "fail_url": [ { "order": 1, "url": "8b99db57e0bda63400b0e852d7fe73d8c6da52b8e32894987a8bd00bcadf8c66" }, { "order": 2, "url": "e72ed31e2f3814563a3bc446f6a59f43c946c3a4339c7b2f5c29d12e8066b37c" } ] } } |
{ "status": "fail" "message": "MESSAGE" } |
Время жизни хеша - 1 день. По истечении срока при необходимости запросить хеш для адреса повторно. |
Для вывода денежных средств пользователем через доступные для Клиента платежные системы, необходимо:
https://api.{URL_server_Paykassma}/v2/withdrawal/create |
Request method:
POST
Format:
JSON
Внимание: При передаче данных не должно быть пробелов в начале и конце параметров в JSON файле |
Каждый запрос на вывод подписывается signature, она формируется следующим образом:
$data = [ ... ]; $data['signature'] = generateSignature($data); // return fa0ee1e2acf7f898635ec417491381c0a4f9d35c //send $data like json ... function generateSignature(array $data) { $privateKey = 'yourprivatekey'; ksort($data); $implode = self::multiImplode( ':', $data); return sha1($privateKey . md5($implode)); } function multiImplode($glue, $array): string { $finArray = []; foreach ($array as $val) { $finArray[] = is_array($val) ? self::multiImplode($glue, $val) : $val; } return implode($glue, $finArray); } |
Необходимые параметры для передачи в POST запросе
Наименование | Тип | Обязательность | Описание | |
withdrawal_id | string(1-36) | optional | Идентификатор вывода, если параметр не передается, то система генерирует withdrawal_id | |
payment_system | string | required | Платежная система | |
amount | int | required | Дополнительные требования:
| |
currency_code | string(3) | required | Код валюты | |
label | string | required | Label пользователя, для которого проводится вывод | |
is_test | boolean | required | Параметр is_test может принимать одно из двух значений:
| |
account_number | string | *required_if | Номер счета получателя
| |
account_name | string | *required_if ПС = imps_ib, upi_ib,.... | Имя держателя счета | |
account_email | string | *required_if ПС = bkash,... | Е-mail держателя счета | |
payments_details.payments_method | string | *required_if | Способ оплаты | |
payments_details.payments_provider | string | optional | Поставщик, который осуществляет электронный платеж, выбранным способом оплаты | |
bank_details.bank_code | string(11) | *required_if | Уникальный идентификатор присваиваемый центральным банком страны
| |
bank_details.branch_code | string | *required_if | Код филиала (отделения) банка | |
bank_details.bank_code_in_payments_system | string | *required_if | Код банка в платежной системе, с которой осуществляется обмен данными | |
account_type | string | *required_if | Тип аккаунта | |
document_type | string | *required_if | Тип документа | |
document_id | string | *required_if | Идентификатор документа получателя | |
account_digit | string | *required_if | Цифра счета | |
iban | string | *required_if | IBAN |
*В запросе на вывод, имеются поля обязательные только для некоторых платежных систем(required_if), для полного списка обязательных полей для определенной ПС, необходимо обратиться в Техническую поддержку Paykassma. |
Обязательные поля для ПС Bkash, PayTm, IMPS IB/UPI IB:
Платежная система | account_number | account_name | account_email | payments_details | bank_details | |||
---|---|---|---|---|---|---|---|---|
payments_method | payments_provider | bank_code | branch_code | bank_code_in_payment_system | ||||
Bkash | required | - | required | - | - | - | - | - |
IMPS IB | required | required | - | - | - | required | - | - |
Paytm | required | - | - | - | - | - | - | - |
Request:
{ "withdrawal_id": "1234567", "payment_system": "paytm", "amount" : 1000, "currency_code": "INR", "label": "55", "is_test": false, "comment: "withdrawal", "account_number": "11111111", "signature":"fae51673a8a9c85f724317214bd0bcc665ebc799" } |
{ "status": "ok" } |
{ "status": "fail" "message": "MESSAGE" } |
После обработки вывода, Paykassma пришлет постбек о результате вывода с определенным статусом, подписанной сигнатурой
Статус | Описание |
---|---|
PROCESSED (1) | Статус для вывода, когда заявка на вывод была успешно обработана |
REJECTED (5) | Статус для вывода, когда заявка на вывод была отклонена |
Запрос на предоставление информации о ранее успешно отправленном постбеке.
PLUGINAPI_SECRET - строка секретного ключа. Ее необходимо будет добавлять ко всем запросам в виде get-параметра secret.
Например: https://api.{URL_сервера_Paykassma}/api/v1/postback?secret=pluginapi_secret
https://api.{URL_server_Paykassma}/api/v1/postback |
Request method: GET
Format: JSON
Parameters:
Параметр | Тип | Обязательность | Описание |
type | string | ДА | Тип постбека. Возможные значения:
|
transaction_id | string | Обязателен хотя бы один из параметров, если type = deposit | Номер транзакции |
custom_id | string | Номер заказа
| |
withdrawal_id | string | Обязателен, если type = withdrawal | ID вывода |
{ "status": "ok", "postback": { "transaction_id": "453535345", "label": "435", "stockpiling": { "USD": 4610062.05, "INR": 345345345, "EUR": 3983190.43, "IDR": 65837909699.54, "MYR": 19134062.55, "VND": 104893839449.17, "SGD": 6221984.08, "THB": 153749990.51, "NGN": 1898193050.29, "TRY": 43873352.03, "AED": 16933679.93, "CAD": 5706403.96, "AUD": 6134591.13, "BDT": 394891290.79, "AFN": 418156964.72, "ALL": 488772456.91, "AMD": 2202143869.02, "AOA": 2752207045.6, "ARS": 459519460.28, "AWG": 8300416.73, "AZN": 7840816.59, "BAM": 7789732.49, "BBD": 9220124.11, "BGN": 7790566.91, "BHD": 1737744.45, "BIF": 9169348711.83, "BMD": 4610062.05, "BND": 6216396.68, "BOB": 31801277.58, "BRL": 26023403.82, "BSD": 4610062.05, "BTC": 74.54470339, "BTN": 345299119.91, "BWP": 52763690.74, "BYN": 11244314.76, "BZD": 9240952.37, "CDF": 9143497429.28, "CHF": 4208184.5, "CLF": 135913.85, "CLP": 3750285480.05, "CNH": 29495130.91, "CNY": 29495177.01, "COP": 17331717342.01, "CRC": 2939207744.86, "CUC": 4610062.05, "CUP": 118709097.86, "CVE": 436572876.41, "CZK": 102052399.68, "DJF": 820509207.6, "DKK": 29632944.11, "DOP": 260174176.58, "DZD": 634030335.09, "EGP": 72425457.87, "ERN": 69153789.03, "ETB": 218717216.23, "FJD": 9542828.45, "FKP": 3369190.09, "GBP": 3369190.09, "GEL": 14521695.47, "GGP": 3369190.09, "GHS": 28121143.41, "GIP": 3369190.09, "GMD": 239723226.75, "GNF": 44360498102.61, "GTQ": 35672982.87, "GYD": 964839822.52, "HKD": 35879882.45, "HNL": 111443474.11, "HRK": 29978196.27, "HTG": 452476986.58, "HUF": 1435716207.54, "ILS": 14476908.71, "IMP": 3369190.09, "IQD": 6725977357.42, "IRR": 194775122390.71, "ISK": 598293853.23, "JEP": 3369190.09, "JMD": 712559367.6, "JOD": 3268534, "JPY": 526637353.71, "KES": 513053805.87, "KGS": 390935115.33, "KHR": 18835091650.05, "KMF": 1942681734.96, "KPW": 4149055847.63, "KRW": 5430630260.1, "KWD": 1391132.33, "KYD": 3840638.09, "KZT": 1971237418.21, "LAK": 47201661108.42, "LBP": 6965551762.15, "LKR": 930998873.7, "LRD": 698424377.97, "LSL": 70723847.09, "LYD": 21015783.85, "MAD": 41858708.81, "MDL": 80357078.85, "MGA": 18336748035.86, "MKD": 245401836.65, "MMK": 8326080171.86, "MNT": 13147861127.1, "MOP": 36946291.23, "MRO": 1645791359.96, "MRU": 166749005.54, "MUR": 198463171.38, "MVR": 71225458.72, "MWK": 3763215975.72, "MXN": 95382589.56, "MZN": 294260260.84, "NAD": 69704138.24, "NIO": 162371876.09, "NOK": 38796622.62, "NPR": 552477876.37, "NZD": 6414537.15, "OMR": 1774767.86, "PAB": 4610062.05, "PEN": 18422162.94, "PGK": 16182622.45, "PHP": 233052471.57, "PKR": 792501444.06, "PLN": 18414837.55, "PYG": 31817465481.06, "QAR": 16780842.55, "RON": 19712487.04, "RSD": 468340620.4, "RUB": 327660160.41, "RWF": 4695797248.61, "SAR": 17293947.06, "SBD": 37028825.17, "SCR": 63024218.26, "SDG": 2030732334.31, "SEK": 39500786.54, "SHP": 3369190.09, "SLL": 49746487532.16, "SOS": 2666103446.02, "SRD": 99148604.57, "SSP": 600506683.01, "STD": 96610491131.87, "STN": 98424824.83, "SVC": 40330104.44, "SYP": 5794559138.65, "SZL": 70735399.9, "TJS": 51758475.93, "TMT": 16158267.5, "TND": 12965799.52, "TOP": 10312565.9, "TTD": 31286296.76, "TWD": 128400374.92, "TZS": 10616972907.89, "UAH": 121246397.65, "UGX": 16393718610.02, "UYU": 202666561.42, "UZS": 49202252751, "VEF": 1145543450116.04, "VES": 19910627.5, "VUV": 512750542.16, "WST": 11839063.48, "XAF": 2612802535.54, "XAG": 192248.81, "XAU": 2577.02, "XCD": 12458923.2, "XDR": 3272982.71, "XOF": 2612802535.54, "XPD": 2235.88, "XPF": 475321217.85, "XPT": 4398, "YER": 1153668019.52, "ZAR": 70640049.99, "ZMW": 79757295.95, "ZWL": 1484439981.04, "ETH": 1054.27509088, "LTC": 110641.4892702, "DOGE": 16950326.08316667, "DASH": 65854.73642603, "BCH": 18901.25441699, "ZEC": 126163.56820239, "ETC": 878106.17959294, "XRP": 24711011.35819838, "TRX": 45776463.64719361, "XLM": 98741900.28788687, "WAVES": 172375.10682464 }, "stockpiling_id": 1585, "transactions": [ { "amount": 345345345, "currency_code": "INR", "wallet_type": "phone_pe", "transaction_id": "453535345", "transaction_type": 0, "from": null, "created_datetime": "2021-10-21 13:34:12", "activated_datetime": "2021-11-01 14:16:51", "custom_id": null } ] } } |
{ "status": "ok", "postback": { "withdrawal_id": "2298635", "status": 1, "comment": "test", "payment_system": "paytm", "amount": 500, "currency_code": "INR", "label": "55", "account_number": "5422222225", "account_name": "5645646", "account_email": null, "payments_details": { "payments_provider": null }, "bank_details": { "bank_code": null, "branch_code": null } } } |
{ "status": "fail" "message": "MESSAGE" } |