Notify.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace app\controller\mini;
  3. use app\extra\basic\Base;
  4. use app\model\saas\SaasGoods;
  5. use app\model\saas\SaasOrderLife;
  6. use LinFly\Annotation\Route\Controller;
  7. use LinFly\Annotation\Route\Route;
  8. use support\Request;
  9. use support\Response;
  10. #[Controller(prefix: "/notify")]
  11. class Notify extends Base
  12. {
  13. /**
  14. * 小程序webhook
  15. * @param Request $request
  16. * @return Response
  17. */
  18. #[Route(path: "hook",methods: "post")]
  19. public function webhook(Request $request): Response
  20. {
  21. try {
  22. $param = $request->post();
  23. echo getDateFull()."==webhook==\n";
  24. print_r($param);
  25. if (empty($param['event'])) return error("参数错误");
  26. if (empty($param['content'])) return error("参数错误");
  27. $content = json_decode($param['content'], true);
  28. switch ($param['event']) {
  29. case "verify_token":
  30. return json(['challenge' => $content['challenge']]);
  31. break;
  32. default:
  33. break;
  34. }
  35. return json([]);
  36. } catch (\Throwable $e) {
  37. return error($e->getMessage());
  38. }
  39. }
  40. /**
  41. * 核销工具解决方案-spi
  42. * @param Request $request
  43. * @return Response
  44. */
  45. #[Route(path: "pay",methods: "post")]
  46. public function getPayStatue(Request $request): Response
  47. {
  48. try {
  49. $param = $request->post();
  50. echo getDateFull()."==支付结果回调==\n";
  51. print_r($param);
  52. return json([
  53. "err_no" => 0,
  54. "err_tips" => "success"
  55. ]);
  56. } catch (\Throwable $throwable) {
  57. return error($throwable->getMessage());
  58. }
  59. }
  60. /**
  61. * 核销工具解决方案-spi
  62. * @param Request $request
  63. * @return Response
  64. */
  65. #[Route(path: "mini",methods: "post")]
  66. public function getSpiData(Request $request): Response
  67. {
  68. try {
  69. $param = $request->post();
  70. echo getDateFull()."=={$param['type']}==\n";
  71. print_r($param);
  72. return json([
  73. "err_no" => 0,
  74. "err_tips" => "success"
  75. ]);
  76. } catch (\Throwable $throwable) {
  77. return error($throwable->getMessage());
  78. }
  79. }
  80. /**
  81. * 核销工具解决方案-扩展点-spi
  82. * @param Request $request
  83. * @return Response
  84. */
  85. #[Route(path: "expand",methods: "post")]
  86. public function getExpandData(Request $request): Response
  87. {
  88. try {
  89. $param = $request->post();
  90. switch ($param['type'])
  91. {
  92. case "pre_create_order": // 预下单回调
  93. $orderData = json_decode($param['msg']);
  94. $orderGoods = (new SaasGoods)->where("out_id",$orderData['goods'][0]['goods_id'])->findOrEmpty();
  95. if ($orderGoods->isEmpty()) return json([
  96. "err_no" => 0,
  97. "err_tips" => "success"
  98. ]);
  99. (new SaasOrderLife)->insertGetId([
  100. "open_id" => $orderData['open_id'],
  101. "agent_id" => $orderGoods['agent_id'],
  102. "store_id" => $orderGoods['agent_id'],
  103. "order_id" => $orderData['order_id'],
  104. "product_name" => $orderData['goods'][0]['title'],
  105. "product_img" => $orderData['goods'][0]['img_url'],
  106. "out_id" => $orderData['goods'][0]['goods_id'],
  107. "order_amount" => $orderData['goods'][0]['price'],
  108. "pay_amount" => $orderData['goods'][0]['price'],
  109. "count" => $orderData['goods'][0]['quantity'],
  110. "status" => 0
  111. ]);
  112. return json([
  113. "out_order_no" => $orderData['order_id'],
  114. "order_entry_schema" => [
  115. "path" => "page/order/detail",
  116. "params" => ['order' => $orderData['order_id']]
  117. ],
  118. "pay_notify_url" => "https://hx-mini-api.jsshuita.com.cn/notify/pay"
  119. ]);
  120. break;
  121. case "pre_create_refund": // 退款审核回调
  122. break;
  123. }
  124. echo getDateFull()."=={$param['type']}==\n";
  125. print_r($param);
  126. return json([
  127. "err_no" => 0,
  128. "err_tips" => "success"
  129. ]);
  130. } catch (\Throwable $throwable) {
  131. return error($throwable->getMessage());
  132. }
  133. }
  134. }