RefillPhone.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace refill\shuoruan;
  3. require_once(BASE_HELPER_RAPI_PATH . '/shuoruan/config.php');
  4. use refill;
  5. use Log;
  6. class RefillPhone extends refill\IRefillPhone
  7. {
  8. public function __construct($cfgs)
  9. {
  10. parent::__construct($cfgs);
  11. }
  12. private function pack_params($params)
  13. {
  14. $json_str = json_encode($params);
  15. $content = $json_str . config::KEY;
  16. $content = md5($content);
  17. $req = [];
  18. $req['sign'] = $content;
  19. $req['agentAccount'] = config::ACCOUNT;
  20. $req['busiBody'] = $params;
  21. return json_encode($req);
  22. }
  23. public function add($card_no, $card_type, $amount, $params,&$net_errno = 0)
  24. {
  25. $params_getter = function ($order_sn,$phone,$amount,$card_type) {
  26. $params = [];
  27. $params['orderId'] = $order_sn;
  28. $params['chargeAcct'] = $phone;
  29. $params['chargeCash'] = $amount;
  30. $params['chargeType'] = 0;
  31. $params['ispName'] = urlencode(config::operator[$card_type]);
  32. $params['retUrl'] = urlencode(config::NOTIFY_URL);
  33. $params['action'] = 'CZ';
  34. return $params;
  35. };
  36. $params = $params_getter($params['order_sn'], $card_no, $amount, $card_type);
  37. $body = $this->pack_params($params);
  38. $resp = http_post_data(config::API_URL, $body, config::ExtHeaders, $net_errno);
  39. $resp = iconv('GB2312', 'UTF-8', $resp);
  40. if (empty($resp)) {
  41. return [false, '系统错误', true];
  42. }
  43. else
  44. {
  45. Log::record($resp, Log::DEBUG);
  46. $resp = json_decode($resp, true);
  47. if (empty($resp)) {
  48. return [false, '系统错误', true];
  49. } elseif ($resp['errorCode'] === 1) {
  50. return [true, $resp['chargeId'], false];
  51. } elseif (in_array($resp['errorCode'], [-992, -993, -994, -995, -996, -997, -998], true)) {
  52. $net_errno = "HTTP-{$resp['errorCode']}";
  53. return [false, $net_errno, true];
  54. } else {
  55. return [false, $resp['errorDesc'], false];
  56. }
  57. }
  58. }
  59. public function query($refill_info)
  60. {
  61. $params_getter = function ($order_sn) {
  62. $params = [];
  63. $params['orderId'] = $order_sn;
  64. $params['action'] = 'CX';
  65. return $params;
  66. };
  67. $params = $params_getter($refill_info['order_sn']);
  68. $body = $this->pack_params($params);
  69. $resp = http_post_data(config::API_URL, $body, config::ExtHeaders, $net_errno);
  70. $resp = iconv('GB2312', 'UTF-8', $resp);
  71. if (empty($resp)) {
  72. return [false, '系统错误'];
  73. }
  74. else
  75. {
  76. Log::record($resp, Log::DEBUG);
  77. $resp = json_decode($resp, true);
  78. if (empty($resp)) {
  79. return [false, '系统错误'];
  80. } elseif ($resp['errorCode'] === 1) {
  81. $status = $resp['orderStatuInt'];
  82. if (in_array($status, ['11', '16'], true)) {
  83. $order_state = ORDER_STATE_SUCCESS;
  84. } elseif (in_array($status, ['20', '21', '26'], true)) {
  85. $order_state = ORDER_STATE_CANCEL;
  86. } elseif (in_array($status, ['0', '1', '2', '6'], true)) {
  87. $order_state = ORDER_STATE_SEND;
  88. } else {
  89. return [false, $resp['errorDesc']];
  90. }
  91. return [true, $order_state];
  92. } elseif ($resp['errorCode'] === -201 && (time() - $refill_info['commit_time'] >= 180)) {
  93. return [true, ORDER_STATE_NOEXIST];
  94. } else {
  95. return [false, $resp['errorDesc']];
  96. }
  97. }
  98. }
  99. public function balance()
  100. {
  101. $params_getter = function () {
  102. $params['action'] = 'YE';
  103. return $params;
  104. };
  105. $params = $params_getter();
  106. $body = $this->pack_params($params);
  107. $resp = http_post_data(config::API_URL, $body, config::ExtHeaders, $net_errno);
  108. $resp = iconv('GB2312', 'UTF-8', $resp);
  109. if (empty($resp)) {
  110. return [false, '系统错误'];
  111. }
  112. else
  113. {
  114. Log::record($resp, Log::DEBUG);
  115. $resp = json_decode($resp, true);
  116. if (empty($resp)) {
  117. return [false, '系统错误'];
  118. } elseif ($resp['errorCode'] === 1) {
  119. return [true, $resp['agentBalance']];
  120. } else {
  121. return [false, $resp['errorDesc']];
  122. }
  123. }
  124. }
  125. }