BridgeTrait.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. /**
  3. * BridgeTrait.php
  4. * stanley-king
  5. * 2023/12/17
  6. * PhpStorm
  7. * PHPProject
  8. */
  9. namespace rbridge;
  10. use refill;
  11. use Log;
  12. trait BridgeTrait
  13. {
  14. public function order_query($mchid,$mch_order)
  15. {
  16. $order_state = refill\util::query_queue_order($mchid,$mch_order);
  17. if ($order_state == ORDER_STATE_QUEUE || $order_state == ORDER_STATE_SEND) {
  18. Log::record("query_state in queue mchid=$mchid mch_order=$mch_order order_state=$order_state", Log::DEBUG);
  19. $result['mchid'] = $mchid;
  20. $result['order_sn'] = $mch_order;
  21. $result['order_state'] = ORDER_STATE_SEND;
  22. return [200,$result];
  23. }
  24. else
  25. {
  26. $mod_refill = Model('refill_order');
  27. $refill_info = $mod_refill->partition(refill\util::part_query())->getOrderInfo(['mch_order' => $mch_order,'mchid' => $mchid,'inner_status' => 0]);
  28. if(empty($refill_info))
  29. {
  30. $mod_qerr = Model('refill_query_err');
  31. $insert = ['mch_order' => $mch_order,'mchid' => $mchid];
  32. $items = $mod_refill->getOrderInfo(['mch_order' => $mch_order,'mchid' => $mchid]);
  33. if (empty($items)) {
  34. Log::record("query_state in db no order mchid=$mchid mch_order=$mch_order", Log::DEBUG);
  35. $insert['code'] = 202;
  36. $insert['msg'] = "检索充值中的单子,查不到任何订单信息.";
  37. $mod_qerr->add($insert);
  38. return [201, []];
  39. } else {
  40. Log::record("DEBUG_TAG: query_state in db mchid=$mchid mch_order=$mch_order order_state not completed.", Log::DEBUG);
  41. $insert['code'] = 200;
  42. $insert['msg'] = "检索充值中的单子能查到,但inner_status=0时查不到,回调充值中状态.";
  43. $mod_qerr->add($insert);
  44. $result['mchid'] = $mchid;
  45. $result['order_sn'] = $mch_order;
  46. $result['order_state'] = ORDER_STATE_SEND;
  47. return [200, $result];
  48. }
  49. }
  50. else
  51. {
  52. $vr_order = Model('vr_order');
  53. $order_info = $vr_order->partition(refill\util::part_query())->getOrderInfo(['order_sn' => $refill_info['order_sn']]);
  54. Log::record("query_state in db mchid=$mchid mch_order=$mch_order order_state={$order_info['order_state']}" ,Log::DEBUG);
  55. if (empty($order_info))
  56. {
  57. $mod_qerr = Model('refill_query_err');
  58. $insert = ['mch_order' => $mch_order,'mchid' => $mchid];
  59. $insert['code'] = 203;
  60. $insert['msg'] = "检索充值中的单子能查到,但inner_status=0时查不到vr_order中的订单.";
  61. $mod_qerr->add($insert);
  62. $result['mchid'] = $mchid;
  63. $result['order_sn'] = $mch_order;
  64. $result['order_state'] = ORDER_STATE_SEND;
  65. return [200, $result];
  66. } else {
  67. $result = $this->format($order_info, $refill_info);
  68. return [200, $result];
  69. }
  70. }
  71. }
  72. }
  73. private function format($order_info,$refill_info)
  74. {
  75. $result = [];
  76. $result['mchid'] = $refill_info['mchid'];
  77. $result['trade_no'] = $refill_info['order_sn'];
  78. $result['order_sn'] = $refill_info['mch_order'];
  79. $result['card_no'] = $refill_info['card_no'];
  80. $result['card_type'] = $refill_info['card_type'];
  81. $result['refill_amount'] = $refill_info['refill_amount'];
  82. $result['order_amount'] = $refill_info['mch_amount'];
  83. $result['order_time'] = $refill_info['order_time'];
  84. $result['success_time'] = $refill_info['notify_time'];
  85. $result['official_sn'] = $refill_info['official_sn'] ?? "";
  86. $result['order_state'] = $order_info['order_state'];
  87. return $result;
  88. }
  89. }