RefillPhone.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. namespace refill\yinghuochong;
  3. require_once(BASE_HELPER_RAPI_PATH . '/yinghuochong/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 $card_no, string $order_sn, int $amount)
  13. {
  14. $params['orderId'] = $order_sn;
  15. $params['faceValue'] = $amount;
  16. $params['account'] = $card_no;
  17. $params['qyKey'] = config::QYKey;
  18. $params['times'] = date("YmdHis");
  19. return $params;
  20. }
  21. //提单成功、上游单号/错误信息、是否是网络错误
  22. public function add($card_no, $card_type, $amount, $params,&$net_errno = 0)
  23. {
  24. $params = $this->req_params($card_no, $params['order_sn'], $amount);
  25. $sign = $this->sign($params);
  26. $params['sign'] = $sign;
  27. $resp = http_request(config::ORDER_URL, $params, 'POST', false, [], $net_errno);
  28. if (empty($resp)) {
  29. return [false, '系统错误', true];
  30. }
  31. else
  32. {
  33. Log::record($resp, Log::DEBUG);
  34. $resp = json_decode($resp ,true);
  35. if (empty($resp)) {
  36. return [false, '系统错误', true];
  37. } elseif ($resp['code'] === 0) {
  38. return [true, $resp['data']['orderId'], false];
  39. } elseif ($resp['code'] === 208999){
  40. $net_errno = "HTTP-{$resp['code']}";
  41. return [false, $net_errno, true];
  42. } else {
  43. return [false, $resp['message'], false];
  44. }
  45. }
  46. }
  47. public function query($refill_info)
  48. {
  49. $params['orderId'] = $refill_info['order_sn'];
  50. $params['qyKey'] = config::QYKey;
  51. $params['times'] = date("YmdHis");
  52. $sign = $this->sign($params);
  53. $params['sign'] = $sign;
  54. $resp = http_request(config::QUERY_URL, $params, 'POST');
  55. if (empty($resp)) {
  56. return [false, '系统错误'];
  57. }
  58. else
  59. {
  60. Log::record($resp, Log::DEBUG);
  61. $resp = json_decode($resp, true);
  62. if (empty($resp))
  63. {
  64. return [false, '系统错误'];
  65. }
  66. elseif ($resp['code'] === 0)
  67. {
  68. $status = intval($resp['data']['status']);
  69. if ($status === 1) {
  70. Model('refill_order')->edit($refill_info['order_id'], ['official_sn' => $resp['data']['voucher']]);
  71. $order_state = ORDER_STATE_SUCCESS;
  72. } elseif ($status === 2) {
  73. $order_state = ORDER_STATE_CANCEL;
  74. } elseif ($status === 0) {
  75. $order_state = ORDER_STATE_SEND;
  76. } else {
  77. return [false, $status];
  78. }
  79. return [true, $order_state];
  80. }
  81. else
  82. {
  83. return [false, $resp['message']];
  84. }
  85. }
  86. }
  87. public function balance()
  88. {
  89. $params['account'] = config::Account;
  90. $params['times'] = date("YmdHis");
  91. $sign = $this->sign($params);
  92. $params['sign'] = $sign;
  93. $resp = http_request(config::BALANCE_URL, $params, 'POST');
  94. if (empty($resp)) {
  95. return [false, '网络错误'];
  96. } else {
  97. Log::record($resp, Log::DEBUG);
  98. $resp = json_decode($resp, true);
  99. if ($resp['code'] === 0) {
  100. return [true, $resp['data']['onlineBalance']];
  101. } else {
  102. return [false, $resp['message']];
  103. }
  104. }
  105. }
  106. private function sign($params)
  107. {
  108. ksort($params);
  109. $content = "";
  110. foreach ($params as $k => $v) {
  111. $content .= "{$k}={$v}&";
  112. }
  113. $content = rtrim($content, '&');
  114. $content .= config::AppSecret;
  115. return strtoupper(md5($content));
  116. }
  117. }