P2P API
Info
Чтобы использовать данное API и обрабатывать нешифрованные данные карты, требуется наличие PCI DSS сертификата.
Проверка возможности P2P перевода
Запросы, описанные ниже, используются:
- для проверки возможности P2P перевода между картой-источником и картой-приёмником;
- для получения информации о комиссии и дополнительно запрашиваемых данных о карте-источнике или карте-приёмнике.
Используйте один из HTTP POST запросов в зависимости от способа вашей интеграции.
Запрос с авторизацией по секретному ключу
Отправьте POST запрос с авторизацией типа Basic с ID и Secret key магазина как имя пользователя и пароль соответственно на https://gateway.pay-cross.com/p2p-restrictions. Укажите параметры, описанные здесь.
Запрос с авторизацией по публичному ключу в синхронном режиме
При работе в синхронном режиме, вы получите ответ на ваш запрос со всеми параметрами после того, как система обработает запрос.
Отправьте POST запрос с Bearer авторизацией по публичному ключу и обязательной передачей заголовка X-Api-Version в значении 2 на https://panel.pay-cross.com/ctp/api/verify-p2p. Укажите параметры, описанные здесь.
Запрос с авторизацией по публичному ключу в асинхронном режиме
При работе в асинхронном режиме на ваш запрос вы получите в ответе статус задачи new и job_id, который система назначила вашему запросу. Далее вам необходимо узнать статус обработки запроса.
Отправьте HTTP POST запрос с Bearer авторизацией по публичному ключу и обязательной передачей заголовка X-Api-Version в значении 2 на https://panel.pay-cross.com/ctp/api/async/verify-p2p. Укажите параметры, описанные здесь.
Пример ответа со статусом задачи new и job_id
{
"status": "new",
"job_id": "62c5b51a1d69bde6e5afaa70"
}
Для получения статуса задачи по обработке запроса отправьте GET запрос с полученным значением job_id на https://panel.pay-cross.com/ctp/api/async/jobs/{job_id}.
Пример ответа для задачи со статусом new
{
"status": "new",
"job_id": "62c5b51a1d69bde6e5afaa70"
}
Пример ответа для задачи со статусом failed
{
"job_id": "62c5b51a1d69bde6e5afaa70",
"status": "failed",
"response": {
"status": "error",
"errors": [
"error"
],
"message": "Request processing error. Please try again later",
"finished": false
}
}
Пример ответа для задачи со статусом done
{
"status": "done",
"job_id": "62c5b51a1d69bde6e5afaa70",
"response": {
//Параметры стандартного ответа
}
}
Параметры запроса
|
|||||||||||||||||||||||||||||||||||||||||||||||||
Пример запроса
{
"request": {
"amount": 100,
"currency": "USD",
"credit_card": {
"number": "4012001037141112"
},
"recipient_card": {
"number": "4200000000000000"
},
"test": true
}
}
Параметры ответа
Если перевод возможен, ответ будет содержать следующие параметры:
|
|||||||||||||||||||
Пример ответа
{
"status": "successful",
"message": "p2p is allowed",
"commission": {
"minimum": 0.7,
"percent": 1.5,
"bank_fee": 7.35,
"currency": "USD"
}
}
Если перевод невозможен, ответ будет содержать следующие параметры:
|
|||||||||||||
Пример ответа
{
"status": "failed",
"message": "Missed credit card fields: holder.Missed recipient card fields: holder.",
"required_fields": {
"credit_card": [
"holder"
],
"recipient_card": [
"holder"
]
}
}
В случае ошибки ответ будет содержать следующие параметры:
| |||||||||||
Пример ответа: http 422
{
"error_code": "invalid_params",
"message": "Unprocessable entity",
"errors": {
"amount": [
"must be an integer"
],
"currency": [
"is unknown ISO 4217 Alpha-3 code"
],
"credit_card": {
"number": [
"is not a card number"
]
},
"recipient_card": {
"number": [
"is not a card number"
]
}
}
}
Пример ответа: http 403
{
"error_code": "absent_allowed_gateways",
"message": "No available gateways. Allowed gateways are missing. Contact the payment service provider for details."
}
Осуществление P2P перевода
Для осуществления P2P перевода посредством PayCross API необходимо отправить один из HTTP POST запросов в зависимости от вашего способа интеграции.
Запрос с авторизацией по секретному ключу
Отправьте HTTP POST запрос с авторизацией типа Basic с ID и Secret key магазина как имя пользователя и пароль соответственно на https://gateway.pay-cross.com/transactions/p2ps. Укажите параметры, описанные здесь.
Запрос с авторизацией по публичному ключу в синхронном режиме
При работе в синхронном режиме, вы получите ответ на ваш запрос со всеми параметрами после того, как система обработает запрос.
Отправьте HTTP POST запрос с Bearer авторизацией по публичному ключу и обязательной передачей заголовка X-Api-Version в значении 2 на https://panel.pay-cross.com/ctp/api/p2p. Укажите параметры, описанные здесь.
Запрос с авторизацией по публичному ключу в асинхронном режиме
При работе в асинхронном режиме на ваш запрос вы получите в ответе статус задачи new и job_id, который система назначила вашему запросу. Далее вам необходимо узнать статус обработки запроса.
Отправьте HTTP POST запрос с Bearer авторизацией по публичному ключу и обязательной передачей заголовка X-Api-Version в значении 2 на https://panel.pay-cross.com/ctp/api/async/p2p. Укажите параметры, описанные здесь.
Пример ответа со статусом задачи new и job_id
{
"status": "new",
"job_id": "62c5b51a1d69bde6e5afaa70"
}
Для получения статуса задачи по обработке запроса отправьте GET запрос с полученным значением job_id на https://panel.pay-cross.com/ctp/api/async/jobs/{job_id}.
Ответы для статусов задач new, failed, done такие же, как описаны для запроса проверки возможности P2P перевода.
Параметры запроса
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Пример запроса
{
"request": {
"test": false,
"amount": 100,
"currency": "EUR",
"description": "Test transaction ütf",
"tracking_id": "tracking_id_000",
"billing_address": {
"phone": "123"
},
"credit_card": {
"number": "4012001037141112",
"verification_value": "123",
"exp_month": "01",
"exp_year": "2027",
"holder": "John Doe"
},
"recipient_card": {
"number": "4200000000000000",
"holder": "Mary Doe"
},
"customer": {
"ip": "127.0.0.1",
"device_id": "12312312321fff67",
"email": "[email protected]"
},
"sender_billing_address": {
"first_name": "John",
"last_name": "Doe",
"country": "PL",
"city": "Warsaw",
"address": "Gilbert 104"
},
"recipient_billing_address": {
"first_name": "Mary",
"last_name": "Doe",
"country": "PL",
"city": "Warsaw",
"address": "Gilbert 104"
},
"additional_data": {
"referer": "https://example.com/server/cs_post/post.php?order_id=5304380&security=949247¤cy=USD"
}
}
}
Параметры ответа
Параметры ответа копируют параметры запроса, но содержат и дополнительные параметры:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Пример ответа требующего 3-D Secure проверки P2P перевода
{
"transaction": {
"uid": "1-82cc07d15d",
"status": "incomplete",
"amount": 100,
"currency": "EUR",
"description": "Test transaction ütf",
"type": "p2p",
"payment_method_type": "credit_card",
"tracking_id": "tracking_id_000",
"message": null,
"test": false,
"created_at": "2021-06-08T09:28:18.073Z",
"updated_at": "2021-06-08T09:28:20.280Z",
"paid_at": null,
"language": "en",
"redirect_url": "http://127.0.0.1:9887/process/1-82cc07d15d",
"credit_card": {
"holder": "John Doe",
"stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
"brand": "visa",
"last_4": "1112",
"first_1": "4",
"bin": "401200",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": 1,
"exp_year": 2027,
"token_provider": null,
"token": null
},
"recipient_card": {
"holder": "Mary Doe",
"stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
"brand": "visa",
"last_4": "0000",
"first_1": "4",
"bin": "420000",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": null,
"exp_year": null,
"token_provider": null,
"token": null
},
"receipt_url": "https://admin.pay-cross.com/customer/transactions/1-82cc07d15d/89caa14443680985ce8ac2452fb9f82b4947926ff5bce0f15a7b4c4d0834ea5d",
"recipient_billing_address": {
"first_name": "Mary",
"last_name": "Doe",
"address": "Gilbert 104",
"country": "PL",
"city": "Warsaw",
"zip": null,
"state": null,
"phone": null
},
"sender_billing_address": {
"first_name": "John",
"last_name": "Doe",
"address": "Gilbert 104",
"country": "PL",
"city": "Warsaw",
"zip": null,
"state": null,
"phone": null
},
"status_code": null,
"id": "1-82cc07d15d",
"verify_p2p": {
"status": "successful",
"message": "3DS",
"amount": 100,
"currency": "EUR",
"bank_fee": null,
"required_fields": null
},
"p2p": {
"ref_id": null,
"message": null,
"amount": 100,
"currency": "EUR",
"billing_descriptor": null,
"gateway_id": 1,
"status": "incomplete",
"auth_code": null,
"rrn": null,
"bank_code": null
},
"customer": {
"ip": "127.0.0.1",
"email": "[email protected]",
"device_id": "12312312321fff67",
"birth_date": null
},
"additional_data": {
"referer": "https://example.com/server/cs_post/post.php?order_id=5304380&security=949247¤cy=USD"
}
}
}
Пример ответа успешно завершенного P2P перевода
{
"transaction": {
"uid": "1-4f4db7559d",
"status": "successful",
"amount": 100,
"currency": "EUR",
"description": "Test transaction ütf",
"type": "p2p",
"payment_method_type": "credit_card",
"tracking_id": "tracking_id_000",
"message": "Successfully processed",
"test": false,
"created_at": "2021-06-08T11:54:11.725Z",
"updated_at": "2021-06-08T11:54:39.219Z",
"paid_at": "2021-06-08T11:54:39.203Z",
"language": "en",
"redirect_url": "http://127.0.0.1:9887/process/1-4f4db7559d",
"credit_card": {
"holder": "John Doe",
"stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
"brand": "visa",
"last_4": "1112",
"first_1": "4",
"bin": "401200",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": 1,
"exp_year": 2027,
"token_provider": null,
"token": null
},
"recipient_card": {
"holder": "Mary Doe",
"stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
"brand": "visa",
"last_4": "0000",
"first_1": "4",
"bin": "420000",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": null,
"exp_year": null,
"token_provider": null,
"token": null
},
"receipt_url": "https://admin.pay-cross.com/customer/transactions/1-4f4db7559d/1b653d8b2c18f48a17b88435ca51e7b22bb69e5080a400faa40e3918ae6552d7",
"recipient_billing_address": {
"first_name": "Mary",
"last_name": "Doe",
"address": "Gilbert 104",
"country": "PL",
"city": "Warsaw",
"zip": null,
"state": null,
"phone": null
},
"sender_billing_address": {
"first_name": "John",
"last_name": "Doe",
"address": "Gilbert 104",
"country": "PL",
"city": "Warsaw",
"zip": null,
"state": null,
"phone": null
},
"status_code": null,
"id": "1-4f4db7559d",
"verify_p2p": {
"status": "successful",
"message": "3DS",
"amount": 100,
"currency": "EUR",
"bank_fee": null,
"required_fields": null
},
"p2p": {
"ref_id": "000005800042000145210608125426&000005800042000146210608125433",
"message": "Approved",
"amount": 100,
"currency": "EUR",
"billing_descriptor": null,
"gateway_id": 1,
"status": "successful",
"auth_code": null,
"rrn": null,
"bank_code": null
},
"customer": {
"ip": "127.0.0.1",
"email": "[email protected]",
"device_id": "12312312321fff67",
"birth_date": null
}
}
}
Пример ответа неуспешно завершенного P2P перевода
{
"transaction": {
"uid": "1-d8d4cd2503",
"status": "failed",
"amount": 100,
"currency": "EUR",
"description": "Test transaction ütf",
"type": "p2p",
"payment_method_type": "credit_card",
"tracking_id": "tracking_id_000",
"message": "Failed",
"test": false,
"created_at": "2021-06-08T11:48:15.002Z",
"updated_at": "2021-06-08T11:48:15.165Z",
"paid_at": null,
"language": "en",
"redirect_url": "http://127.0.0.1:9887/process/1-d8d4cd2503",
"credit_card": {
"holder": "John Doe",
"stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
"brand": "visa",
"last_4": "1112",
"first_1": "4",
"bin": "401200",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": 1,
"exp_year": 2027,
"token_provider": null,
"token": null
},
"recipient_card": {
"holder": "Mary Doe",
"stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
"brand": "visa",
"last_4": "0000",
"first_1": "4",
"bin": "420000",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": null,
"exp_year": null,
"token_provider": null,
"token": null
},
"receipt_url": "https://admin.pay-cross.com/customer/transactions/1-d8d4cd2503/047da8244b961a41b5ad52e138dd8b866e6e6e773c3510ec1eb1476192b62397",
"recipient_billing_address": {
"first_name": "Mary",
"last_name": "Doe",
"address": "Gilbert 104",
"country": "PL",
"city": "Warsaw",
"zip": null,
"state": null,
"phone": null
},
"sender_billing_address": {
"first_name": "John",
"last_name": "Doe",
"address": "Gilbert 104",
"country": "PL",
"city": "Warsaw",
"zip": null,
"state": null,
"phone": null
},
"status_code": null,
"id": "1-d8d4cd2503",
"verify_p2p": {
"status": "failed",
"message": "3DS",
"amount": 100,
"currency": "EUR",
"bank_fee": null,
"required_fields": null
},
"p2p": {
"ref_id": null,
"message": null,
"amount": 100,
"currency": "EUR",
"billing_descriptor": null,
"gateway_id": 1,
"status": "incomplete",
"auth_code": null,
"rrn": null,
"bank_code": null
},
"customer": {
"ip": "127.0.0.1",
"email": "[email protected]",
"device_id": "12312312321fff67",
"birth_date": null
}
}
}
3-D Secure проверка P2P перевода
Процес 3-D Secure проверки карты-источника полностью аналогичен процессу проверки карты в случае операции оплата или авторизация.