Efectuarea de plăți dintr-un cont Bpay
Această interfață este concepută pentru a efectua plăți automate din contul dvs. BPay către conturile altor utilizatori. Atenție! Pentru a putea utiliza acest serviciu, trebuie să ne contactați, scriind o scrisoare în care să indicați adresa IP utilizată pentru accesul și scopul cu care va fi utilizat acest funcțional. Valoarea key utilizată pentru semnarea cererilor de plată este furnizată de angajații companiei noastre.
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>
» Format: 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>
» Format: JSON
{ "code":"100", "transid":"5701361", "receipt":"107371012882676", "KeyWord":"w_pay_success", "paketuniqid":"5951530d622d4b5f31fd182c649ea732", "text":"Payment successfully accepted for processing" }
Semnătura cererii se generează prin hashing-ul MD5 a tuturor valorilor concatenate (în aceeași secvență care urmează în xml). MD5( TIME + YOUR_ACCOUNT + RECIPIENT_ACCOUNT + AMOUNT + TRANSACTION_DESCRIPTION + TXNID + IS_TEST + key )
» Format: JSON
Solicitați semnătura formată prin generarea unui hash sha256 din concatenarea tuturor valorilor din cheile transfer și 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') ]);
Parametru | Format | Descriere |
---|---|---|
auth | JSON | XML | Conține parametrii login și password |
login | JSON | XML | Login-ul indicat la înregistrarea unui cont în sistemul BPay.md, folosit de asemenea și pentru autentificare în cabinetul personal |
time | XML | Timpul curent în format YYYYMMDD hhmmss Exemplu: 20131225 135601 |
dtime | JSON | Timpul curent în formatul Ymd H:i:s |
password | JSON | XML | Parola indicată la înregistrarea unui cont în sistemul BPay.md, folosit de asemenea și pentru autentificare în cabinetul personal |
transfer | JSON | XML | Conține următorii parametri: dtime, payer_account, recipient_account в json, account в xml, amount, description, txnid |
account | XML | Numărul contului în sistemul BPay.md utilizat pentru efectuarea plății |
recipient_account | JSON | Numărul contului dvs. utilizat pentru efectuarea plății |
amount | JSON | XML | Suma pe care doriți să o transferați (indicată în valuta contului dvs.). |
description | JSON | XML | Descrierea plății |
txnid | JSON | XML | Identificatorul numeric unic al plății, mai mare decât zero, generat de partea expeditorului. Nu este posibil să efectuați din nou o plată cu același identificator. |
sign | JSON | XML | Semnătura solicitării |
params | JSON | XML | Parametrii suplimentari a plății |
Cod | Descriere |
---|---|
100 | Efectuat cu succes |
-10 | Operațiunea nu este permisă pentru adresa dvs. IP. |
-20 | Eroare la identificare |
-21 | Semnătura a fost formată incorect |