RefillPhone.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace refill\lechong;
  3. require_once(BASE_HELPER_RAPI_PATH . '/lechong/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 req_params(int $phone, int $amount, int $card_type, string $order_sn)
  13. {
  14. $params['agentcode'] = config::AgentCode;
  15. $params['sellerid'] = $order_sn;
  16. $params['account'] = base64_encode($phone);
  17. $params['code'] = config::operator[$card_type][$amount];
  18. $params['num'] = 1;
  19. $params['value'] = $amount;
  20. $params['notifyurl'] = config::NOTIFY_URL;
  21. $params['remark'] = '';
  22. $params['time'] = date("YmdHis");
  23. return $params;
  24. }
  25. public function add($card_no, $card_type, $amount, $params,&$net_errno = 0)
  26. {
  27. refill\util::send_normal($params['order_sn']);
  28. return [true , '',false];
  29. }
  30. public function query($refill_info)
  31. {
  32. $params['agentcode'] = config::AgentCode;
  33. $params['sellerid'] = $refill_info['order_sn'];
  34. $params['time'] = date("YmdHis");
  35. $key = config::KEY;
  36. $body = "{$params['agentcode']}{$params['sellerid']}{$params['time']}{$key}";
  37. $params['sign'] = md5($body);
  38. $resp = http_request(config::QUERY_URL, $params, 'POST', false, config::ExtHeaders);
  39. if (empty($resp)) {
  40. return [false, '网络错误'];
  41. }
  42. else
  43. {
  44. Log::record($resp, Log::DEBUG);
  45. $resp = json_decode($resp, true);
  46. if (empty($resp)) {
  47. return [false, '网络错误'];
  48. } elseif ($resp['recode'] == 'q100') {
  49. $state = intval($resp['state']);
  50. if ($state === 2) {
  51. $updata['official_sn'] = $resp['voucher'];
  52. Model('refill_order')->edit($refill_info['order_id'], $updata);
  53. $order_state = ORDER_STATE_SUCCESS;
  54. } elseif (in_array($state,[4,-11])) {
  55. $order_state = ORDER_STATE_CANCEL;
  56. } else {
  57. $order_state = ORDER_STATE_SEND;
  58. }
  59. return [true, $order_state];
  60. } elseif ($resp['recode'] == 'q106' && (time() - $refill_info['commit_time'] >= 600)){
  61. return [true, ORDER_STATE_NOEXIST];
  62. } else {
  63. return [false, $resp['msg']];
  64. }
  65. }
  66. }
  67. public function balance()
  68. {
  69. $params['agentcode'] = config::AgentCode;
  70. $params['time'] = date("YmdHis");
  71. $key = config::KEY;
  72. $body = "{$params['agentcode']}{$params['time']}{$key}";
  73. $params['sign'] = md5($body);
  74. $resp = http_request(config::BALANCE_URL, $params, 'POST', false, config::ExtHeaders);
  75. if (empty($resp)) {
  76. return [false, '网络错误'];
  77. }
  78. else
  79. {
  80. Log::record($resp, Log::DEBUG);
  81. $resp = json_decode($resp, true);
  82. if (empty($resp)) {
  83. return [false, '网络错误'];
  84. } elseif ($resp['recode'] == 'b100') {
  85. return [true, $resp['balance']];
  86. } else {
  87. return [false, $resp['msg']];
  88. }
  89. }
  90. }
  91. private function sign($params)
  92. {
  93. $agentcode = config::AgentCode;
  94. $key = config::KEY;
  95. $content = "{$agentcode}{$params['sellerid']}{$params['account']}{$params['code']}{$params['num']}{$params['value']}{$params['notifyurl']}{$params['remark']}";
  96. $content .= "{$params['time']}{$key}";
  97. return md5($content);
  98. }
  99. }