Notify.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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. $return = match ($param['event']) {
  28. "verify_webhook" => ['challenge' => $param['content']['challenge']],
  29. default => [],
  30. };
  31. print_r($return);
  32. return json($return);
  33. } catch (\Throwable $e) {
  34. return error($e->getMessage());
  35. }
  36. }
  37. /**
  38. * 核销工具解决方案-spi
  39. * @param Request $request
  40. * @return Response
  41. */
  42. #[Route(path: "pay",methods: ['get','post'])]
  43. public function getPayStatue(Request $request): Response
  44. {
  45. try {
  46. if ($request->method() == "POST") {
  47. $param = $request->post();
  48. } else {
  49. $param = $request->get();
  50. }
  51. echo getDateFull()."===支付结果回调===方式{$request->method()}\n";
  52. echo getDateFull()."==支付结果回调==\n";
  53. print_r($param);
  54. return json([
  55. "err_no" => 0,
  56. "err_tips" => "success"
  57. ]);
  58. } catch (\Throwable $throwable) {
  59. return error($throwable->getMessage());
  60. }
  61. }
  62. /**
  63. * 核销工具解决方案-spi
  64. * @param Request $request
  65. * @return Response
  66. */
  67. #[Route(path: "mini",methods: ['get','post'])]
  68. public function getSpiData(Request $request): Response
  69. {
  70. try {
  71. print_r($request->rawHead());
  72. print_r($request->rawBody());
  73. if ($request->method() == "POST") {
  74. $param = $request->post();
  75. } else {
  76. $param = $request->get();
  77. }
  78. echo getDateFull()."===统一===方式{$request->method()}\n";
  79. echo getDateFull()."=={$param['type']}==\n";
  80. print_r($param);
  81. return json([
  82. "err_no" => 0,
  83. "err_tips" => "success"
  84. ]);
  85. } catch (\Throwable $throwable) {
  86. return error($throwable->getMessage());
  87. }
  88. }
  89. /**
  90. * 核销工具解决方案-扩展点-spi
  91. * @param Request $request
  92. * @return Response
  93. */
  94. #[Route(path: "expand",methods: ['get','post'])]
  95. public function getExpandData(Request $request): Response
  96. {
  97. try {
  98. print_r($request->rawHead());
  99. print_r($request->rawBody());
  100. if ($request->method() == "POST") {
  101. $param = $request->post();
  102. } else {
  103. $param = $request->get();
  104. }
  105. echo getDateFull()."===扩展点===方式{$request->method()}\n";
  106. switch ($param['type'])
  107. {
  108. case "pre_create_order": // 预下单回调
  109. $orderData = json_decode($param['msg']);
  110. $orderGoods = (new SaasGoods)->where("out_id",$orderData['goods'][0]['goods_id'])->findOrEmpty();
  111. if ($orderGoods->isEmpty()) return json([
  112. "err_no" => 0,
  113. "err_tips" => "success"
  114. ]);
  115. (new SaasOrderLife)->insertGetId([
  116. "open_id" => $orderData['open_id'],
  117. "agent_id" => $orderGoods['agent_id'],
  118. "store_id" => $orderGoods['agent_id'],
  119. "order_id" => $orderData['order_id'],
  120. "product_name" => $orderData['goods'][0]['title'],
  121. "product_img" => $orderData['goods'][0]['img_url'],
  122. "out_id" => $orderData['goods'][0]['goods_id'],
  123. "order_amount" => $orderData['goods'][0]['price'],
  124. "pay_amount" => $orderData['goods'][0]['price'],
  125. "count" => $orderData['goods'][0]['quantity'],
  126. "status" => 0
  127. ]);
  128. return json([
  129. "out_order_no" => $orderData['order_id'],
  130. "order_entry_schema" => [
  131. "path" => "page/order/detail",
  132. "params" => ['order' => $orderData['order_id']]
  133. ],
  134. "pay_notify_url" => "https://hx-mini-api.jsshuita.com.cn/notify/pay"
  135. ]);
  136. break;
  137. case "pre_create_refund": // 退款审核回调
  138. break;
  139. }
  140. echo getDateFull()."=={$param['type']}==\n";
  141. print_r($param);
  142. return json([
  143. "err_no" => 0,
  144. "err_tips" => "success"
  145. ]);
  146. } catch (\Throwable $throwable) {
  147. return error($throwable->getMessage());
  148. }
  149. }
  150. }