Yimadai.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace WY\app\model;
  3. use WY\app\libs\Http;
  4. use WY\app\libs\Xml;
  5. if (!defined('WY_ROOT')) {
  6. exit;
  7. }
  8. class Yimadai
  9. {
  10. function __construct()
  11. {
  12. $this->gateUrl = 'https://gwapi.yemadai.com/transfer/transferapi';
  13. $this->notifyurl = 'http://' . $_SERVER['HTTP_HOST'] . '/yimadai';
  14. $this->accountNumber = '22820';
  15. $this->key = 'OGdkk9F9adfl72kDk3';
  16. }
  17. public function put($data)
  18. {
  19. extract($data);
  20. $sign = strtoupper(md5('transId=' . $sn . '&accountNumber=' . $this->accountNumber . '&cardNo=' . $cardno . '&amount=' . $money . '&' . $this->key));
  21. $xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
  22. $xml .= '<yemadai>';
  23. $xml .= ' <accountNumber>' . $this->accountNumber . '</accountNumber>';
  24. $xml .= ' <notifyURL>' . $this->notifyurl . '</notifyURL>';
  25. $xml .= ' <tt>0</tt>';
  26. $xml .= ' <transferList>';
  27. $xml .= ' <transId>' . $sn . '</transId>';
  28. $xml .= ' <bankCode>' . $bankname . '</bankCode>';
  29. $xml .= ' <provice>' . $provice . '</provice>';
  30. $xml .= ' <city>' . $city . '</city>';
  31. $xml .= ' <branchName>' . $branchname . '</branchName>';
  32. $xml .= ' <accountName>' . $accountname . '</accountName>';
  33. $xml .= ' <cardNo>' . $cardno . '</cardNo>';
  34. $xml .= ' <amount>' . $money . '</amount>';
  35. $xml .= ' <remark>test</remark>';
  36. $xml .= ' <secureCode>' . $sign . '</secureCode>';
  37. $xml .= ' </transferList>';
  38. $xml .= '</yemadai>';
  39. $data = array('transData' => base64_encode($xml));
  40. $http = new Http($this->gateUrl, $data, 1);
  41. $http->toUrl();
  42. $ret = base64_decode($http->getResContent());
  43. $ret = str_replace('<transferList>', '', $ret);
  44. $ret = str_replace('</transferList>', '', $ret);
  45. $result = Xml::parseXml($ret);
  46. $resCode = $result['errCode'] == '0000' ? $result['resCode'] : $result['errCode'];
  47. if ($http->getResCode() == '200') {
  48. $ret = array('resCode' => $resCode, 'resContent' => $this->getRet($resCode));
  49. } else {
  50. $ret = array('resCode' => $http->getResCode(), 'resContent' => $this->res->subString($http->getErrInfo(), 0, 20));
  51. }
  52. return $ret;
  53. }
  54. public function getRet($code)
  55. {
  56. $codeList = array('0000' => '请求成功', 'ERR1001' => 'IP白名单未绑定', 'ERR1002' => 'xml格式错误', 'ERR1003' => 'secureCode验证错误', 'ERR1004' => '最大转账笔数超过50笔或者小于1笔', 'ERR1005' => '含有必要参数为空', 'ERR1006' => 'Base64解析错误', 'ERR1007' => '账户错误或者不存在此账户', 'ERR1008' => '金额小于0', 'ERR1009' => '金额错误', 'ERR1010' => '余额不足', 'ERR1011' => '系统异常', 'ERR1012' => '订单号重复', 'ERR2001' => '开户名与卡号不匹配', 'ERR2002' => '开户行与卡号不匹配', 'ERR2003' => '省、市信息不匹配', 'ERR5002' => '商户未开通下发权限', 'ERR5003' => '下发超过单笔限额设置', 'ERR5005' => '商户下发超过单日限额');
  57. return array_key_exists($code, $codeList) ? $codeList[$code] : '未知错误';
  58. }
  59. }