Осуществление выплат со счета Bpay
Данный интерфейс предназначен для осуществления автоматических выплат со своего счёта bpay на счета других пользователей Внимание! Для того, что бы иметь возможность использовать данный сервис, Вам необходиом обратиться к нам, написав письмо с указанием IP адреса, с которого будет осуществляться доступ и цели, для которой будет использоваться данный интерфейс. Значение key используемое, для подписания запросов на оплату, предоставляется так же сотрудниками нашей компании.
POST
https://www.bpay.md/user-api/transfer
<request> <auth type="1"> <login>YOUR_LOGIN</login> <password>YOUR_PASSWORD</password> </auth> <transfer> <time>TIME</time> <payer_account>YOUR_ACCOUNT</payer_account> <account>RECIPIENT_ACCOUNT</account> <amount>AMOUNT</amount> <description>TRANSACTION_DESCRIPTION</description> <txnid>TXNID</txnid> <params> <field name="Name">Anton</field> <field name="Lastname">Belcov</field> </params> <test>IS_TEST</test> </transfer> <sign>SIGNATURE</sign> </request>
» Формат: JSON
POST
https://www.bpay.md/user-api-v2/transfer
$json=[ 'auth'=> [ 'login'=> 'your login', 'password'=> 'your password' ], 'transfer'=> [ 'payer_account'=> 'your account', 'recipient_account'=> 'send id account', 'amount'=> 'your amount', 'description'=> 'your desc', 'txnid'=> 'your txnid', 'params'=> [ 'param1'=> 'value', 'param2'=> 'value' ] ], 'dtime'=> date('Ymd H:i:s'), 'sign'=> 'signature' ];
<result> <code>100</code> <text>ok</text> <params> <transid>1001</transid> <receipt>123456789012345</receipt> </params> </result>
» Формат: JSON
{ "code":"100", "transid":"5701361", "receipt":"107371012882676", "KeyWord":"w_pay_success", "paketuniqid":"5951530d622d4b5f31fd182c649ea732", "text":"Payment successfully accepted for processing" }
Подпись запроса, образованная путем генерации md5 хэша от конкатенации всех значений в тэге transfer (в той же последовательности, в какой они следуют в xml) и ключа key. MD5( TIME + YOUR_ACCOUNT + RECIPIENT_ACCOUNT + AMOUNT + TRANSACTION_DESCRIPTION + TXNID + IS_TEST + key )
» Формат: JSON
Подпись запроса, образованная путем генерации sha256 хэша от конкатенации всех значений в ключе transfer и ключа key. HASH(‘sha256’, DTIME + YOUR_ACCOUNT + RECIPIENT_ACCOUNT + AMOUNT + TRANSACTION_DESCRIPTION + TXNID + key )
<?php$time=date('Ymd His'); $payer_account='11777777'; $account='11999999'; $amount=10; $description='test payment'; $txnid=101; $test=0; $key='111111'; $sign=md5($time . $payer_account . $account . $amount . $description . $txnid . $test . $key); $xml=" <request> <auth type="1"> <login>testuser</login> <password>testpassword</password> </auth> <transfer> <time>{$time}</time> <payer_account>{$payer_account}</payer_account> <account>{$account}</account> <amount>{$amount}</amount> <description>{$description}</description> <txnid>{$txnid}</txnid> <params> <field name='Name'>Anton</field> <field name='Lastname'>Belcov</field> </params> <test>{$test}</test> </transfer> <sign>{$sign}</sign> </request>"; $resp=request($xml); echo $resp; function request($xmlrequest) { $curl=curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_URL, "https://www.bpay.md/user-api/transfer"); curl_setopt($curl, CURLOPT_USERAGENT, "User-Agent=Mozilla/5.0 Firefox/1.0.7"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_POSTFIELDS, $xmlrequest); $_PROVIDER_ANSWER=curl_exec($curl); return $_PROVIDER_ANSWER; }
/** * Class UserApi */ class UserApi { private $login='your login'; private $password='your assword'; private $apiURL='https://www.bpay.md/user-api-v2/'; private $key='your key'; /** * @param array $rdata * @return bool|string */ public function transfer(array $rdata) { $time=date('Ymd His'); $json=[ 'auth'=> [ 'login'=> $this->login, 'password'=> $this->password ], 'transfer'=> [ 'payer_account'=> $rdata['payer_account'], 'recipient_account'=> $rdata['recipient_account'], 'amount'=> $rdata['amount'], 'description'=> $rdata['description'], 'txnid'=> $rdata['txnid'], 'params'=> [ 'param1'=> 'value', 'param2'=> 'value' ] ], 'dtime'=> date('Ymd H:i:s') ]; $json['sign']=$this->makeSignature($json); $url=$this->apiURL.'transfer'; return $this->request($url, $json); } /** * @param array $rdata * @return string */ private function makeSignature(array $rdata) { $str_to_sign=''; foreach ($rdata['transfer'] as $val) { if(is_array($val)) { foreach ($val as $val2){ $str_to_sign .=$val2; } } else { $str_to_sign .=$val; } } $sign=hash('sha256',$str_to_sign.$this->key); return $sign; } /** * @param string $url * @param array $json * @return bool|string */ private function request(string $url, array $json) { $jsonrequest=json_encode($json); $curl=curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_USERAGENT, "User-Agent=Mozilla/5.0 Firefox/1.0.7"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonrequest); $_PROVIDER_ANSWER=curl_exec($curl); return $_PROVIDER_ANSWER; } } $ApiClient=new UserApi(); echo $ApiClient->transfer([ 'payer_account'=> '11287227', 'recipient_account'=> '11600653', 'amount'=> 10, 'description'=> 'P2P transfer', 'txnid'=> date('YmdHis') ]);
Поле | Формат | Описание |
---|---|---|
auth | JSON | XML | Объединяет в себе параметр login и password |
login | JSON | XML | логин, указанный при регистрации в системе bpay.md и используемый для входа |
time | XML | Текущее время в формате YYYYMMDD hhmmss Пример: 20131225 135601 |
dtime | JSON | Текущее время в формате Ymd H:i:s |
password | JSON | XML | пароль, указанный при регистрации в системе bpay.md и используемый для входа |
transfer | JSON | XML | Объединяет в себе данные: dtime, payer_account, recipient_account в json, account в xml, amount, description, txnid, |
account | XML | Ваш номер счета, с которого осуществляется оплата |
recipient_account | JSON | Ваш номер счета, с которого осуществляется оплата |
amount | JSON | XML | Сумма, в валюте Вашего счета, которую Вы хотите перевести. |
description | JSON | XML | Описание платежа |
txnid | JSON | XML | Уникальный циферный идентификатор платежа больше нуля, генерируемый на стороне отправителя. Осуществить оплату с тем же идентификатором повторно не возможно. |
sign | JSON | XML | Подпись запроса |
params | JSON | XML | Дополнительные параметры платежа |
Код | Описание |
---|---|
100 | Успешно осуществлено |
-10 | Операция не разрешена для Вашего IP. |
-20 | Ошибка авторизации |
-21 | Неверно сформирована подпись |