| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- <?php
- namespace app\controller\mini;
- use app\extra\basic\Base;
- use app\model\saas\SaasGoods;
- use app\model\saas\SaasOrderLife;
- use app\model\saas\SaasOrderLog;
- use app\model\saas\SaasStore;
- use LinFly\Annotation\Route\Controller;
- use LinFly\Annotation\Route\Route;
- use support\Request;
- use support\Response;
- use Webman\RedisQueue\Redis;
- #[Controller(prefix: "/notify")]
- class Notify extends Base
- {
- /**
- * 小程序webhook
- * @param Request $request
- * @return Response
- */
- #[Route(path: "hook/{id}",methods: "post")]
- public function webhook(Request $request,$id): Response
- {
- try {
- $param = $request->post();
- echo getDateFull()."==webhook==\n";
- print_r($param);
- if (empty($param['event'])) return error("参数错误");
- if (empty($param['content'])) return error("参数错误");
- switch ($param['event']) {
- case "verify_webhook":
- $return = ['challenge' => $param['content']['challenge']];
- break;
- case "life_trade_order_notify": // 支付成功
- $resp = json_decode($param['content'], true);
- if ($resp['action'] == "pay_success") {
- Redis::send("sync-order",[
- "order" => $resp['order']['order_id'],
- "openid" => $param['from_user_id']
- ]);
- }
- $return = [];
- break;
- case "life_trade_certificate_notify": // 退款
- $resp = json_decode($param['content'], true);
- if ($resp['action'] == "refund_success") {
- $order = (new SaasOrderLife)->where("certificate_id",$resp['certificate']['certificate_id'])->findOrEmpty();
- if (!$order->isEmpty()) {
- $order->status = 4;
- $order->refund_at = getDateFull();
- $order->save();
- }
- }
- $return = [];
- break;
- default:
- $return = [];
- break;
- }
- return json($return);
- } catch (\Throwable $e) {
- echo $e->getMessage()."\n";
- echo $e->getFile()."\n";
- echo $e->getLine()."\n";
- return error($e->getMessage());
- }
- }
- /**
- * 核销工具解决方案-spi
- * @param Request $request
- * @return Response
- */
- #[Route(path: "pay",methods: ['get','post'])]
- public function getPayStatue(Request $request): Response
- {
- try {
- if ($request->method() == "POST") {
- $param = $request->post();
- } else {
- $param = $request->get();
- }
- echo getDateFull()."===支付结果回调===方式{$request->method()}\n";
- echo getDateFull()."==支付结果回调==\n";
- print_r($param);
- return json([
- "err_no" => 0,
- "err_tips" => "success"
- ]);
- } catch (\Throwable $throwable) {
- return error($throwable->getMessage());
- }
- }
- /**
- * 核销工具解决方案-spi
- * @param Request $request
- * @return Response
- */
- #[Route(path: "mini",methods: ['get','post'])]
- public function getSpiData(Request $request): Response
- {
- try {
- print_r($request->rawHead());
- print_r($request->rawBody());
- if ($request->method() == "POST") {
- $param = $request->post();
- } else {
- $param = $request->get();
- }
- echo getDateFull()."===统一===方式{$request->method()}\n";
- echo getDateFull()."=={$param['type']}==\n";
- print_r($param);
- return json([
- "err_no" => 0,
- "err_tips" => "success"
- ]);
- } catch (\Throwable $throwable) {
- return error($throwable->getMessage());
- }
- }
- /**
- * 核销工具解决方案-扩展点-spi
- * @param Request $request
- * @return Response
- */
- #[Route(path: "expand",methods: ['get','post'])]
- public function getExpandData(Request $request): Response
- {
- try {
- print_r($request->rawHead());
- print_r($request->rawBody());
- if ($request->method() == "POST") {
- $param = $request->post();
- } else {
- $param = $request->get();
- }
- echo getDateFull()."===扩展点===方式{$request->method()}\n";
- switch ($param['type'])
- {
- case "pre_create_order": // 预下单回调
- $orderData = json_decode($param['msg']);
- $orderGoods = (new SaasGoods)->where("out_id",$orderData['goods'][0]['goods_id'])->findOrEmpty();
- if ($orderGoods->isEmpty()) return json([
- "err_no" => 0,
- "err_tips" => "success"
- ]);
- (new SaasOrderLife)->insertGetId([
- "open_id" => $orderData['open_id'],
- "agent_id" => $orderGoods['agent_id'],
- "store_id" => $orderGoods['agent_id'],
- "order_id" => $orderData['order_id'],
- "product_name" => $orderData['goods'][0]['title'],
- "product_img" => $orderData['goods'][0]['img_url'],
- "out_id" => $orderData['goods'][0]['goods_id'],
- "order_amount" => $orderData['goods'][0]['price'],
- "pay_amount" => $orderData['goods'][0]['price'],
- "count" => $orderData['goods'][0]['quantity'],
- "status" => 0
- ]);
- return json([
- "out_order_no" => $orderData['order_id'],
- "order_entry_schema" => [
- "path" => "page/order/detail",
- "params" => ['order' => $orderData['order_id']]
- ],
- "pay_notify_url" => "https://hx-mini-api.jsshuita.com.cn/notify/pay"
- ]);
- break;
- case "pre_create_refund": // 退款审核回调
- break;
- }
- echo getDateFull()."=={$param['type']}==\n";
- print_r($param);
- return json([
- "err_no" => 0,
- "err_tips" => "success"
- ]);
- } catch (\Throwable $throwable) {
- return error($throwable->getMessage());
- }
- }
- }
|