RefillPhone.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace refill\afandeng;
  3. require_once(BASE_HELPER_RAPI_PATH . '/afandeng/config.php');
  4. use refill;
  5. use Log;
  6. use mtopcard;
  7. class RefillPhone extends refill\IRefillPhone
  8. {
  9. public function __construct($cfgs)
  10. {
  11. parent::__construct($cfgs);
  12. }
  13. private function req_params(int $phone, int $amount, string $order_sn)
  14. {
  15. $params['merchantId'] = config::MCHID;
  16. $params['orderType'] = 1;
  17. $params['mobile'] = $phone;
  18. $params['tradeNoThird'] = $order_sn;
  19. $params['amount'] = sprintf("%.2f" , $amount);
  20. $params['notifyUrl'] = config::NOTIFY_URL;
  21. return $params;
  22. }
  23. public function add($card_no, $card_type, $amount, $params)
  24. {
  25. $params = $this->req_params($card_no, $amount, $params['order_sn']);
  26. $sign = $this->sign($params);
  27. $params['signstr'] = $sign;
  28. $resp = http_request(config::ORDER_URL, $params , 'POST' , false , config::ExtHeaders);
  29. if ($resp === false) {
  30. return [false, '系统错误'];
  31. } else {
  32. Log::record($resp, Log::DEBUG);
  33. $resp = json_decode($resp, true);
  34. if ($resp['code'] == 200) {
  35. return [true, $resp['body']['tradeNoSelf']];
  36. } else {
  37. return [false, $resp['msg']];
  38. }
  39. }
  40. }
  41. public function query($refill_info)
  42. {
  43. $params['merchantId'] = config::MCHID;
  44. $params['tradeNoThird'] = $refill_info['order_sn'];
  45. $content = $params['merchantId'] . $params['tradeNoThird'] . config::KEY;
  46. $params['signstr'] = md5($content);
  47. $resp = http_request(config::QUERY_URL, $params , 'GET' , false);
  48. if ($resp === false) {
  49. return [false, '系统错误'];
  50. } else {
  51. Log::record($resp, Log::DEBUG);
  52. $resp = json_decode($resp, true);
  53. $order_state = -1;
  54. if ($resp['code'] == 200) {
  55. $order_state = ORDER_STATE_SUCCESS;
  56. } elseif ($resp['code'] == 604) {
  57. $order_state = ORDER_STATE_CANCEL;
  58. } elseif ($resp['code'] == 603){
  59. $order_state = ORDER_STATE_SEND;
  60. }
  61. if ($order_state == -1) {
  62. return [false, $resp['msg']];
  63. }
  64. return [true, $order_state];
  65. }
  66. }
  67. private function sign($params)
  68. {
  69. $key = config::KEY;
  70. $content = $params['merchantId'] . $params['orderType'] . $params['mobile'] . $params['tradeNoThird'] . $params['amount'] . $params['notifyUrl'] . $key;
  71. return md5($content);
  72. }
  73. }