Описание
Сервис является внутренней разработкой Приватбанка. Он позволяет получить полную информацию о владельце карты по ее номеру. Platon выступает в качестве посредника между сервисом Привата и МФО, которые совершают верификацию карт. Сервис позволит совершать более точную верификацию заемщиков, которые хотят получить займ на карту Приватбанка.
Процесс подключения к сервису
Подписание договора
Создать Public Key и передать его в тех саппорт Platon. Он будет использован для шифрования.
Создать Private Key. Он будет использован вами для расшифровки.
Передать в тех саппорт ссылку для коллбеков Bank ID, которая будет прописана на стороне Platon.
Сообщить в тех саппорт на какой API ключ необходимо подключить сервис.
Для просмотра примера раскройте список
Пример генерации Private Key и Public Key на PHP
$config = [
"digest_alg" => "sha256",
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
];
$res = openssl_pkey_new($config); // Create the private and public key
openssl_pkey_export($res, $privateKey); // Extract the private key from $res to $privateKey
$publicKey = openssl_pkey_get_details($res); // Extract the public key from $res to $pubKey
$publicKey = $publicKey["key"]; //this is the public keys Platon needs to encrypt personal data values
Пример Public Key, который необходимо передать в Platon
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApS+BNczlkRMpWliY7Dx0
7NTxGyI1r5H97MNpEkLvARoyF0tLiR/vvkNwky9XsSNTKm9vsnjVBD5+Q1ztwoDu
Dbwu4/cHkmtXd8b45iEeKZq2uk5qfBTi0jb9zkMAgM0+Tp5wkxEvan1zdmNtyDj2
g0OQSBgcqhuUHVBgPcFIWNFT15AmpYCWEBXJhf1EPn+pRNDxMGEHYGQYpVGT4U9u
3ZwSm4E1P2UXlErgfVcT4+CNuomdAun5rfh7SbkmA7SCQPI5uyvnB38hrA+bb5td
1MIOKxUut0riZ/B20B/gBae1hZPGvn7OmNmlxcOvr53oRR876GIGc5xiEAz6sQg0
bQIDAQKL
-----END PUBLIC KEY-----
API параметры запроса
HTTP METHOD: POST
API ENDPOINT: https://secure.platononline.com/bank_id/
Параметр | Значение | Описание | Особенности | Обязательно |
---|
key
| String | API ключ мерчанта | Ключ предоставляется на почту мерчанту | ДА |
action
| GET_BANK_ID_TOKEN
| Код платежного метода | | ДА |
request_id
| String | Уникальный ID запроса мерчанта | Max 255 символов | ДА |
card_token
| String | Токен карты | card_token из коллбека первичной транзакции
| ДА |
hash
| String | Контрольная подпись |
md5(
strtoupper(
strrev($client_password).
strrev($request_id).
strrev($card_token)
)
)
| ДА |
Перечень параметров в Bank ID Callback
Для просмотра примера раскройте список
Промежуточный успешный Response
Параметр | Описание |
---|
action
| GET_BANK_ID
|
result
| ACCEPTED/DECLINED(При неправильном action) |
request_id
| Unique Order ID in merchant’s system |
Промежуточный неуспешный Response
Параметр | Описание |
---|
action
| GET_BANK_ID
|
error_message
| Description of the error |
request_id
| Unique Order ID in merchant’s system |
status
| ERROR |
Пример POST параметров Bank ID в callback при успешной верификации
{
"action": "GET_BANK_ID",
"status": "SUCCESS",
"state": "155fe6e01f11cab84a705e7baa5453fe",
"request_id": "53467567657",
"hash": "611431a06030410046ba2025ee9b02bb",
"personal_data": {
"type": "0n19rYzVpBF16MjiSBYoCL\/FenhjQz+Xbi9PLTdCHchqZVAFca0B409Aakby2boZ23bmJ3JpIDtHhApI37yDwOdJAtz\/ZkWrdzSy1aKIU0pdvpJvI5OzsjiE7dSHKFEFmryljCQL5rYObI0e4LDFApnLw5nkBLiaOEkZ8XEZirS6sSajFd33u0zrrC7TiAZccIqs4ANZlPP\/f67MhE\/FiVI5Lpma0Xcwy7tnT\/zNPgVp3L12TJ0Ms7vd+j4TC0\/xTMGUKHgtHa433wirQoOfib9Xe1ld+3WOWRW0f\/z1JNEVnjKAxzwEwO8v3YX0o5UA\/45iwVbUGWKSq4vZ9VpX2A==",
"inn": "DTuiYjvX8oqLuNaJ+d+7WDOIL6FNZrFa\/ENynvAs88cbqyIk0kyeDqDckAuDTawRH7znXPVSeVH3zIMONFPmcWRnfJK99iWBHvdfc9VFrL6SXHVPTwS4Ca48J0tWU7cW+36bTjTyU6gmfbWWDeVJ8xcJg31bJqWxJ81kFckU8xlLvL9gdCLBXuX+IwtymByJpyrhFa1qhMytJLoteMCWB4cGcHUIhuy9dP0tAQAYscKCWXdH1856x5PCARtUvMRwH5uWDz2f2KCx53YUhRZbwas0UzxSQRV+9YqcNWLqgEIHn5zTkPEchxF98K\/u61M48mx7aulXqKB2H7DlnxK6\/Q==",
"birthday": "AcdCKqcF8q3LLr18rAcQ+7e3UZ12w1+\/X094amXFWMKdm10jDFBNSA9pX\/bWoGTU+BAZiNXMa6DTiDEBwogGpoRobvSTyOUJJ+OuDH8mwJt3uDJZXO5aJLeF539WvS\/705xuNTee44JG8p1KKnKi5sITzXSajmMZ0WF4ARJc0C8bA1zsXOqsAaB9t1dXeBu6Ei8W4uv63OAWA1tWRwz\/81YzC\/in2Kkm3QElPtlxz1TJBroyAq7hHxpUGq89mhFY6aQbVoEVqnQHOvTyLCdIdmDDXNUN+uuFMltSRf5OmLm5We2gCZrcIGN7Kz9a6mS7GvW1deQamc0BSqzR8FxjRw==",
"firstName": "Dr7UWWJPH3fOgg+Wqz\/VZsZdz75rEKzbhFFeJ03qYNe9Vc+xPwjSdSmnWg3XBUU2iXd0KCmx2jQ7SE0Xsj\/EkoW1ZhN1pHxx1UCcX2zSCOk711QYCpDAhBO3FAAI5D8+JrI6+FfmBk3L9GmgkM4RXn9rES1FzV3UYI5GRUBjGot9xX3OVI9tlTL2JdblZOlVDQkD0L8pWlEReiDXBS\/Mv6JoTw0HdbH5aPqVj7m32IlV3u+hKc12kJGGkyBHaCziSkzjruzmgIWWzCVdwTQ60hHUqU2DzYfG5Dad2LwVqzgFt1t2lac4Oj\/RmSlsPnqlRXlVDy3roPXbcGS62PM5CA==",
"lastName": "NRZO3mQNiwiIiusK2zc5ABh+jdVRQSqsdAOq4ZVmRlsVsccjEtfUkpN1l\/0EiWdB5uXITkMAai6ot3aiQxoXx0GX8KXQ56MW0cjwSrJkqE4e0dm7fuBT2YlSMu\/c+krDJzbk4xN5ypRTWd6r6bITNr67PzgjQIGI9gTzbhmMRv0HwYPiR0f0OXfRtIGOTAcwHJEMtEhmiWCgKyM\/mY5SDNa3GFpFCIJRzw1XbxujpKOzNbxMHA0SvxMVF6Mex+zmnbjIGEGeGDa2GdLizFoTKswn3+XXyivlZ354A8efsBKNnowLhIxvo3vfdDIdswGxPdGmBd+dHI3AkYDdOoigLA==",
"middleName": "AqCla4V+s1Eqb\/wZ1L4adfEWmtDoqSxOeS4JeAYAjY7KnWLs3ZntEyDxPI4qAa8kqLyXe0to9IpOPnUht8iN6EkM0g4pYJ2FuR\/IRlENhkhKaw0P7qgIxjvp7vh5sNxC5uw9xCBQY68OHSJv33E91qzBXvoTyiButK0cgbLnnMUBFfyFbJVqd+uZ1PROAQeQg9p4k3gJ6NyHd7cVuAuONl7wsubtP3vJ9+AX197xh4GuR\/J3cdUfjGNFR+U2PH8l7ecyS00OMbCU\/FRcj+jtkPNHqW9gThKGTwi8BGAQOzktbxwOxRgWqutG+UlVWIkeR8X\/iBUgh3C\/SuMk8phdWg==",
"phone": "tS9bICWq378wxRBKDmfI+kgCQcdc+aB742MvB6AIkmFObB4ct0+TI4xIGy+ACuNgKSG\/fD\/JzKjxeLfs2BYGLspxoWc4m\/kayIvV40hFWBkIn822zItn\/LXlQym+Ea2l+slvFfmEIRl+bguuRZzaOfF84TibPNY0fzOkZ5pP75D6ZHO51R8VovIYp\/UOtXq2FW+6KSapx+v8BpRsnEKT8trayCIj4B8vnJhWlANXpbg4fC2phfA5IBOyxbehNKgR1yF5avp5cntGgVPzDw454hHKgWo177BY2ISnUuJ\/FlvJVZ00PN+ZOffWGZGNYkktIcZjjPft64Qx7vUvwzcX+w==",
"sex": "m3lsQqrL3W7xzLYOhf65XxdR0WDFweRNXQTFZmIrhJWFstTyDjXKbdf\/EHxMqutieWkrVA+v7G\/2c8TJAKJ\/ngBL21VLMD08ulp2knaQerH8jwxDZGXtCHNVwReswFcKgkOifHpoQlm6SbgGRXa3Ui+MW639JlK278e2hZQsktmLYROOLzPvJepThZb8B2iwLPTlN4L4wRWbXFXTwZxc4xk5AL3kSmd4h0U5jyB+JToBW\/jhh6XWauNyM8RTxeORjGU7F0kUAE20nd8QlSd2rXyixeZEYBsJeXLHuwQn6Ix3xlSat1rBTEnDTwi4ckU8eQbjSCS3B8e01G6hSmmwfg==",
"resident": "oongqY83C90TdkNcfR14tj9UYa5ANM\/VDT2g7Sd3c5blD26lL+zQrnJJJC7nhQZwnMikx2lsu09+bWtxzGuhnYg+PB7A8daK1EMga1KoZ0WWnlNKQWypus8nUlAzWEOfD7xMkrKPjIKEA8lJEl5PdTCXRtLet8gK7JnpvjQAXCJLzQt\/qykd5tA1dCPpMci0wCGuAPSSvfVWtSXD++xuuO7\/MR\/rN7Xrw8YWUoHYrjsYuhq0Nxvxa1R4jCjjFEvZK7fTEIVJidLmaTS4qQ+HKSEVHcNrA\/mt9PjLoVGsx4zDlA5X018q3ciKYeRoIXzNrSuUU\/A9bK1rO4jzJyQ03A=="
},
"date": {
"date": "2021-01-19 21:49:37.799296",
"timezone_type": "3",
"timezone": "UTC"
}
}
Параметр | Описание |
---|
action
| GET_BANK_ID
|
status
| SUCCESS
|
state
| Ордер запроса Bank ID |
request_id
| Ордер в системе мерчанта |
hash
| Зашифрованная подпись для проверки достоверности коллбека
md5(
strrev(
json_encode(personal_data)
).
strrev(CLIENT_PASSWORD)
)
|
type
| Физ/юр лицо |
inn
| ИНН |
birthday
| Дата рождения |
firstName
| Имя |
lastName
| Фамилия |
middleName
| Отчество |
phone
| Номер телефона |
sex
| Пол |
resident
| Гражданство |
date
| Дата получения информации |
Расшифровка Bank ID Callback
После этого необходимо провести расшифровку используя ранее созданный Private Key.
Для просмотра примера раскройте список
Пример функции для дешифровки
function decryptPersonalData(array $encryptPersonalData): array {
$result = [];
foreach ($encryptPersonalData as $key => $value)
{
if (is_iterable($value)) {
$result[$key] = $this->decryptPersonalData($value);
}
else {
$result[$key] = $this->decrypt($value);
}
}
return $result;
}
function decrypt(string $data): string {
if (openssl_private_decrypt(base64_decode($data), $encrypted, '----- PRIVATE KEY-----'))
{
return $encrypted;
}
return '';
}
Тестирования
В целях тестирования необходимо использовать реальную картку Приватбанк на реальных транзакциях.
Ошибки запросов
В ходе проведения запрос вы можете получить разные ошибки. Пожалуйста, ознакомьтесь со списком возможных ошибок, их причин и возможности решения.
Для просмотра примера раскройте список
Список ошибок и их решение
Ошибка | Причины | Решение |
---|
Merchant not active
| Мерчант не активен | |
Invalid signature
| Неверная подпись hash | Проверьте формулу формирования hash |
Incorect input data
| Токен не принадлежит этому мерчанту | Отправьте запрос с того ключа, где был получен токен |
System error
| Ситуация требует внимания сотрудников Platon. | Рекомендуем обратиться в тех саппорт Platon для проверки причины. |
Card is not issued by Privatbank
| Карта не принадлежит Приватбанку или по карте не получили Personal Data от Bank ID | |
Request limit exceeded
| Исчерпан лимит запросов | |
Duplicate request
| Повторный запрос с уже существующим request_id в рамках данного client_key | Создайте новый запрос с новым уникакальным request_id |
Inactive/blocked card
| Неактивная/заблокированная карта | |