RefillPhone.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. namespace refill\bxtwt;
  3. require_once(BASE_HELPER_RAPI_PATH . '/bxtwt/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, string $order_sn)
  13. {
  14. $params['phone'] = $phone;
  15. $params['product_id'] = $amount;
  16. $params['tradeNo'] = $order_sn;
  17. $params['notify_url'] = config::NOTIFY_URL;
  18. return json_encode($params);
  19. }
  20. public function add($card_no, $card_type, $amount, $params,&$net_errno = 0)
  21. {
  22. refill\util::send_test($params['order_sn']);
  23. return [true , '',false];
  24. }
  25. public function query($refill_info)
  26. {
  27. $params['order_number'] = $refill_info['ch_trade_no'];
  28. $params['tradeNo'] = $refill_info['order_sn'];
  29. $time = time();
  30. $api_user_name = config::API_USER_NAME;
  31. $sign = $this->sign($time);
  32. $header = [
  33. 'Content-Type: application/json',
  34. "API-USER-NAME: {$api_user_name}",
  35. "API-NAME: OrderQuery",
  36. "API-TIMESTAMP: {$time}",
  37. "API-SIGNATURE: {$sign}",
  38. ];
  39. $resp = http_post_data(config::REQUEST_URL, json_encode($params), $header);
  40. if (empty($resp)) {
  41. return [false, '系统错误'];
  42. }
  43. else
  44. {
  45. Log::record($resp, Log::DEBUG);
  46. $resp = json_decode($resp, true);
  47. if (empty($resp)) {
  48. return [false, '系统错误'];
  49. }
  50. elseif ($resp['ack'] == 'success')
  51. {
  52. $data = $resp['order'];
  53. if ($data['shipping_status'] == 1) {
  54. $order_state = ORDER_STATE_SUCCESS;
  55. } elseif (in_array($data['shipping_status'], [0,3,4])) {
  56. $order_state = ORDER_STATE_CANCEL;
  57. } elseif (in_array($data['shipping_status'], [2,5])) {
  58. $order_state = ORDER_STATE_SEND;
  59. } else {
  60. return [false, $resp['message']];
  61. }
  62. return [true, $order_state];
  63. }
  64. else {
  65. return [false, $resp['message']];
  66. }
  67. }
  68. }
  69. public function balance()
  70. {
  71. return [false, '暂无余额接口'];
  72. }
  73. private function sign($time)
  74. {
  75. $ip = config::API_IP;
  76. $cert = config::API_CERT;
  77. $content = $ip . $time . $cert;
  78. return md5($content);
  79. }
  80. }