API 2.0 по интеграции с PrMoney.
1. Регистрируетесь на сайте.
2. Заходите в меню Кассы и создаете Кассу для своего домена, проходите модерацию.
3. После модерации для кассы генерируется client_id и client_secret
4. Для инициализации платежа необходимо отправить POST запрос на адрес:
https://new.prmoney.com/payments/createS2S
Запрос обязательно должен содержать переменные:
- client_id - идентификатор кассы (который получили на предыдущем шаге)
- amount - сумма для оплаты (для отделения десятых и сотых служит - точка, к примеру amount=8.44)
- currency - код валюты в стандарте ISO 4217 (для Доллара США = 840, для российского Рубля = 643, для Евро = 978, для украинской Гривны = 980)
Также запрос может содержать следующие переменные:
- order_id - целое число - идентификатор заказа в магазине
- user_id - целое число - идентификатор пользователя в магазине
- description - краткое описание назначения платежа (максимум 512 символов)
- success_url - ссылка на страницу с успешной оплатой
- fail_url - ссылка на страницу с безуспешной оплатой
- payment_type - способ оплаты: card - перевод на карту, sbp - СБП, cis_card - трансграничный перевод на карту, cis_sbp - трансграничный СБП, nspk - НСПК, phone - перевод по номеру телефона, qrcode - оплата по QR-коду
- client_phone - номер телефона плательщика в формате 79991234567 (без «+», пробелов и скобок). Если не передан, для некоторых способов оплаты телефон будет запрошен у клиента на странице оплаты
5. После успешного запроса в ответ получите json строку с параметром redirect_url, в котором будет указан URL. На этот URL нужно перенаправить клиента для обработки платежа.
Примеры ответа. Набор полей зависит от платёжного метода.
Пример 1 — только ссылка на оплату:
{
"redirect_url": "https://new.prmoney.com/payments/s2s_redirect/5f3c9a1e7b2d4c8f0a6e1d2b3c4a5f6e",
"amount": 1500,
"usdt": 17.11,
"rate_out": 87.65
}
Пример 2 — вьетнамский метод с QR-кодом (qr_code — строка QR-кода, qr_img — ссылка на картинку QR-кода):
{
"success": true,
"redirect_url": "https://new.prmoney.com/payments/sbpform/3812457",
"form_url": "https://new.prmoney.com/payments/sbpform/3812457",
"id": 3812457,
"qr_code": "00020101021238570010A000000727012700069704180113968866123450208QRIBFTTA53037045405500005802VN62110807381245763042F1B",
"qr_img": "https://new.prmoney.com/images/qrcodes/3812457.png",
"usdt": 17.11,
"rate_out": 87.65
}
Пример 3 — оплата переводом на карту (bank_card — номер карты, bank — банк, full_name — получатель, amount — сумма к переводу):
{
"success": true,
"bank_card": "2200700123456789",
"bank": "Т-Банк",
"full_name": "Иван Петров",
"amount": "1500",
"redirect_url": "https://new.prmoney.com/payments/p2pform/3812458",
"form_url": "https://new.prmoney.com/payments/p2pform/3812458",
"id": 3812458,
"usdt": 17.11,
"rate_out": 87.65
}
Пример 4 — нет свободных реквизитов для оплаты (платёж не создан на стороне провайдера, клиента перенаправлять не нужно — повторите запрос позже или предложите другой способ оплаты):
{
"success": false,
"error": true,
"message": "No Requisits"
}
6. После успешного или проваленного платежа на Callback Url (который Вы указывали в личном кабинете в настройках кассы) будет отправлен POST запрос содержащий данные о платеже в виде json объекта в параметре payment. В объекте будут присутствовать следующие свойства
- order_id - идентификатор заказа в вашей системе
- status - статус платежа (success или fail)
- amount - запрошенная вами сума платежа
- amount_fee - к-во денег снятое системой за проведенный платеж
- actual_amount - к-во денег поступившее на ваш баланс в системе
- usdt - сумма платежа в USDT
- client_id - идентификатор вашего аккаунта
- description - описание, которое вносили в запросе
- card - маска номера карты первые и последние цифры номера карты клиента в формате 44444|2222
- comment - комментарий к платежу, если например платеж был с ошибкой, то может быть указана причина ошибки
- signature - токен, который генерируется путём обьеденения amount, client_id и client_secret
Пример генерации signature:
$signature = base64_encode(sha1($amount ."|". $client_id ."|". $client_secret));
Пример генерации signature2 (id — идентификатор платежа в нашей системе, поле id / prm_id):
$signature2 = base64_encode(sha1($id ."|". $amount ."|". $client_id ."|". $client_secret));
Колбек отправляется POST-запросом с заголовком Content-Type: application/x-www-form-urlencoded (не multipart/form-data и не JSON в теле). В теле передаётся один параметр payment, его значение — JSON-строка, закодированная для URL.
Пример тела запроса (в формате query string, для наглядности без URL-кодирования — в реальном запросе значение payment URL-кодировано):
payment={"id":3812458,"prm_id":3812458,"order_id":"12345","description":"Order 12345","currency":"643","comment":"","status":"success","amount":"1500.00","amount_fee":"75.00","actual_amount":"1425.00","usdt":17.11,"client_id":"a1B2c3D4e5F6g7H8i9J0k1L2m3N4o5P6q7R8s9T0","signature":"NDU2YjgwMjAwNmU4NjFlMjU2MjBjODBjMTZmODZjYTc1MDhmZWFjNA==","signature2":"OTliNjUwM2E2YTU4MWJkZWY1YTdkNmI0NGE2NjY2YjExODg0ZGI4NQ==","requestId":"MzgxMjQ1OHwyMDI2LTEwLTA4IDEyOjAwOjAw"}
Пример объекта payment (после декодирования):
{
"id": 3812458,
"prm_id": 3812458,
"order_id": "12345",
"description": "Order 12345",
"currency": "643",
"comment": "",
"status": "success",
"amount": "1500.00",
"amount_fee": "75.00",
"actual_amount": "1425.00",
"usdt": 17.11,
"client_id": "a1B2c3D4e5F6g7H8i9J0k1L2m3N4o5P6q7R8s9T0",
"signature": "NDU2YjgwMjAwNmU4NjFlMjU2MjBjODBjMTZmODZjYTc1MDhmZWFjNA==",
"signature2": "OTliNjUwM2E2YTU4MWJkZWY1YTdkNmI0NGE2NjY2YjExODg0ZGI4NQ==",
"requestId": "MzgxMjQ1OHwyMDI2LTEwLTA4IDEyOjAwOjAw"
}
Пример обработки параметра такого запроса:
$post = json_decode($_POST["payment"]);
$order_id = $post->order_id;