BridgeTrait.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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. $detail_checker = function($mchid, $mch_order)
  17. {
  18. $mod_refill = Model('refill_order');
  19. $detail = $mod_refill->get_detail($mchid,$mch_order);
  20. if (empty($detail)) {
  21. return false;
  22. } else {
  23. return true;
  24. }
  25. };
  26. $send = ['mchid' => $mchid,'order_sn' => $mch_order,'order_state' => ORDER_STATE_SEND];
  27. $order_state = refill\util::query_queue_order($mchid,$mch_order);
  28. if ($order_state == ORDER_STATE_QUEUE || $order_state == ORDER_STATE_SEND) {
  29. Log::record("query_state in queue mchid=$mchid mch_order=$mch_order order_state=$order_state", Log::DEBUG);
  30. return [200,$send];
  31. }
  32. else
  33. {
  34. $mod_refill = Model('refill_order');
  35. $refill_info = $mod_refill->partition(refill\util::part_query())->getOrderInfo(['mch_order' => $mch_order,'mchid' => $mchid,'inner_status' => 0]);
  36. if(empty($refill_info))
  37. {
  38. $mod_qerr = Model('refill_query_err');
  39. $insert = ['mch_order' => $mch_order,'mchid' => $mchid];
  40. $items = $mod_refill->getOrderInfo(['mch_order' => $mch_order,'mchid' => $mchid]);
  41. if (empty($items))
  42. {
  43. Log::record("query_state in db no order mchid=$mchid mch_order=$mch_order", Log::DEBUG);
  44. $insert['code'] = 202;
  45. $insert['msg'] = "检索充值中的单子,查不到任何订单信息.";
  46. $mod_qerr->add($insert);
  47. $detail = $detail_checker($mchid,$mch_order);
  48. if($detail == false) {
  49. return [201, []];
  50. }
  51. else {
  52. return [200, $send];
  53. }
  54. }
  55. else
  56. {
  57. Log::record("DEBUG_TAG: query_state in db mchid=$mchid mch_order=$mch_order order_state not completed.", Log::DEBUG);
  58. $insert['code'] = 200;
  59. $insert['msg'] = "检索充值中的单子能查到,但inner_status=0时查不到,回调充值中状态.";
  60. $mod_qerr->add($insert);
  61. return [200, $send];
  62. }
  63. }
  64. else
  65. {
  66. $vr_order = Model('vr_order');
  67. $order_info = $vr_order->partition(refill\util::part_query())->getOrderInfo(['order_sn' => $refill_info['order_sn']]);
  68. Log::record("query_state in db mchid=$mchid mch_order=$mch_order order_state={$order_info['order_state']}" ,Log::DEBUG);
  69. if (empty($order_info))
  70. {
  71. $mod_qerr = Model('refill_query_err');
  72. $insert = ['mch_order' => $mch_order,'mchid' => $mchid];
  73. $insert['code'] = 203;
  74. $insert['msg'] = "检索充值中的单子能查到,但inner_status=0时查不到vr_order中的订单.";
  75. $mod_qerr->add($insert);
  76. return [200, $send];
  77. } else {
  78. $result = $this->format($order_info, $refill_info);
  79. return [200, $result];
  80. }
  81. }
  82. }
  83. }
  84. private function format($order_info,$refill_info)
  85. {
  86. $result = [];
  87. $result['mchid'] = $refill_info['mchid'];
  88. $result['trade_no'] = $refill_info['order_sn'];
  89. $result['order_sn'] = $refill_info['mch_order'];
  90. $result['card_no'] = $refill_info['card_no'];
  91. $result['card_type'] = $refill_info['card_type'];
  92. $result['refill_amount'] = $refill_info['refill_amount'];
  93. $result['order_amount'] = $refill_info['mch_amount'];
  94. $result['order_time'] = $refill_info['order_time'];
  95. $result['success_time'] = $refill_info['notify_time'];
  96. $result['official_sn'] = $refill_info['official_sn'] ?? "";
  97. $result['order_state'] = $order_info['order_state'];
  98. return $result;
  99. }
  100. }