where("out_trade_no",$data["order"])->with(['poi'])->findOrEmpty(); if ($order['status'] <> 1) { echo getDateFull()."===订单状态不符合核销\n"; return true; } // 获取到订单encrypted_code $orderCode = (new OrderData)->config([ "appid" => sConf("wechat.appid"), "secret" => sConf("wechat.secret"), "account" => sConf("wechat.shop_id"), ])->token()->getCertificate($order['order_sn'],$order['poi']['store_id']); if (empty($orderCode['certificates'])) { echo getDateFull()."===获取订单数据失败\n"; return true; } if (!isset($orderCode['certificates'][0]['encrypted_code'])) { echo getDateFull()."===获取订单数据失败\n"; return true; } if ($orderCode['certificates'][0]['status'] <> 1) { echo getDateFull()."===该订单状态不支持核销\n"; return true; } // 核销订单 $orderDone = (new OrderData)->config([ "appid" => sConf("wechat.appid"), "secret" => sConf("wechat.secret"), "account" => sConf("wechat.shop_id"), ])->token()->verifyCertificate([ "account_id" => $order['poi']['store_id'], "pay_sn" => $order['pay_sn'], "encrypted_code" => $orderCode['certificates'][0]['encrypted_code'], "order_id" => $order['order_sn'], "poi_id" => $order['poi_id'] ]); if (empty($orderDone['verify_results'])) { echo getDateFull()."===核销失败\n"; return true; } if (!isset($orderDone['verify_results'][0]['verify_id'])) { echo getDateFull()."===核销失败\n"; return true; } if (!isset($orderDone['verify_results'][0]['certificate_id'])) { echo getDateFull()."===核销失败\n"; return true; } $order->status = 2; $order->express_status = 1; $order->verify_id = $orderDone['verify_results'][0]['verify_id']; $order->certificate_id = $orderDone['verify_results'][0]['certificate_id']; $order->done_at = getDateFull(); $order->save(); (new SaasOrderVerify)->insertGetId([ "poi_id" => $order['poi_id'], "order_sn" => $order['order_sn'], "certificate_id" => $orderDone['verify_results'][0]['certificate_id'], "verify_id" => $orderDone['verify_results'][0]['verify_id'], ]); } catch (\Throwable $throwable) { echo getDateFull()."==核销队列报错\n"; echo $throwable->getMessage()."\n"; echo $throwable->getFile()."【".$throwable->getLine()."】\n"; } return true; } }