RefillPhone.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. namespace refill\quanzhen_hf_man;
  3. require_once(BASE_HELPER_RAPI_PATH . '/quanzhen_hf_man/config.php');
  4. use refill;
  5. use Log;
  6. use QueueClient;
  7. use mtopcard;
  8. class RefillPhone extends refill\IRefillPhone
  9. {
  10. public function __construct($cfgs)
  11. {
  12. parent::__construct($cfgs);
  13. }
  14. private function req_params(int $card_no, int $amount, int $card_type, string $order_sn, $regin_no)
  15. {
  16. $params['appid'] = config::APP_ID;
  17. $params['orderId'] = $order_sn;
  18. $params['phone'] = $card_no;
  19. $params['official'] = config::operator[$card_type];
  20. $params['area'] = mtopcard\ProvinceList[$regin_no];
  21. $params['amount'] = $amount * 100;
  22. $params['asynchUrl'] = config::NOTIFY_URL;
  23. return $params;
  24. }
  25. public function add($card_no, $card_type, $amount, $params, &$net_errno = 0)
  26. {
  27. $order_id = $params['order_id'];
  28. $regin_no = $params['regin_no'] ?? -1;
  29. if($regin_no <= 0) {
  30. return [false, '省份获取错误', false];
  31. }
  32. $params = $this->req_params($card_no, $amount, $card_type, $params['order_sn'], $regin_no);
  33. $sign = config::sign($params);
  34. $params['sign'] = $sign;
  35. $params = json_encode($params);
  36. $resp = http_post_data(config::ORDER_URL, $params, config::ExtHeaders, $net_errno);
  37. if (empty($resp)) {
  38. return [false, '系统错误', true];
  39. }
  40. else
  41. {
  42. Log::record($resp, Log::DEBUG);
  43. $resp = json_decode($resp, true);
  44. if (empty($resp)) {
  45. return [false, '系统错误', true];
  46. } elseif ($resp['code'] === 0) {
  47. if (in_array($resp['status'], [2, 3], true)) {
  48. QueueClient::async_push("QueryRefillState", ['order_id' => $order_id], 5);
  49. }
  50. return [true, '', false];
  51. } else {
  52. return [false, $resp['msg'], false];
  53. }
  54. }
  55. }
  56. public function query($refill_info)
  57. {
  58. $params['appid'] = config::APP_ID;
  59. $params['orderId'] = $refill_info['order_sn'];
  60. $sign = config::sign($params);
  61. $params['sign'] = $sign;
  62. $params = json_encode($params);
  63. $resp = http_post_data(config::QUERY_URL, $params, config::ExtHeaders);
  64. if (empty($resp)) {
  65. return [false, '网络错误', ''];
  66. }
  67. else
  68. {
  69. Log::record($resp, Log::DEBUG);
  70. $resp = json_decode($resp, true);
  71. if (empty($resp)) {
  72. return [false, '网络错误', ''];
  73. }
  74. elseif ($resp['code'] === 0)
  75. {
  76. $offical_sn = '';
  77. $status = $resp['status'];
  78. if ($status === 2) {
  79. $offical_sn = $resp['voucher'];
  80. $updata['official_sn'] = $offical_sn;
  81. Model('refill_order')->edit($refill_info['order_id'], $updata);
  82. $order_state = ORDER_STATE_SUCCESS;
  83. } elseif ($status === 3) {
  84. $order_state = ORDER_STATE_CANCEL;
  85. } elseif ($status === 1) {
  86. $order_state = ORDER_STATE_SEND;
  87. } else {
  88. return [false, $status, $offical_sn];
  89. }
  90. return [true, $order_state, $offical_sn];
  91. }
  92. else {
  93. return [false, $resp['msg'], ''];
  94. }
  95. }
  96. }
  97. public function balance()
  98. {
  99. $params['appid'] = config::APP_ID;
  100. $params['queryDate'] = date("YmdHis");
  101. $sign = config::sign($params);
  102. $params['sign'] = $sign;
  103. $params = json_encode($params);
  104. $resp = http_post_data(config::BALANCE_URL, $params, config::ExtHeaders);
  105. if (empty($resp)) {
  106. return [false, '系统错误'];
  107. }
  108. else
  109. {
  110. Log::record($resp, Log::DEBUG);
  111. $resp = json_decode($resp, true);
  112. if (empty($resp)) {
  113. return [false, '系统错误'];
  114. } elseif ($resp['code'] === 0) {
  115. return [true, ncPriceFormat($resp['storeFee'] / 100)];
  116. } else {
  117. return [false, $resp['msg']];
  118. }
  119. }
  120. }
  121. }