where("order_sn",$data["order"])->with(['poi'])->findOrEmpty(); // $order = (new SaasOrder)->where("out_order_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; } $encrypted_code = []; foreach ($orderCode['certificates'] as $key=>$v) { if (empty($v['encrypted_code'])) { echo getDateFull()."===获取订单数据失败\n"; continue; } if ($v['status'] <> 1) { echo getDateFull()."===该订单状态不支持核销\n"; continue; } $encrypted_code[$key] = $v['encrypted_code']; } // 核销订单 $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'], "encrypted_code" => array_values($encrypted_code), "order_id" => $order['order_sn'], "poi_id" => $order['poi_id'] ]); if (empty($orderDone['verify_results'])) { echo getDateFull()."===核销失败\n"; return true; } $doneData = []; foreach ($orderDone['verify_results'] as $key=>$v) { if(empty($v['verify_id'])) { continue; } if(empty($v['certificate_id'])) { continue; } $doneData[$key] = [ "poi_id" => $order['poi_id'], "order_sn" => $order['order_sn'], "certificate_id" => $v['certificate_id'], "verify_id" => $v['verify_id'], ]; } 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->express_status = 3; // $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 SaasOrderItem)->where(['order_sn'=>$order['order_sn'],'status'=>1])->update(['status'=>3]); (new SaasOrderVerify)->insertAll(array_values($doneData)); } catch (\Throwable $throwable) { echo getDateFull()."==核销队列报错\n"; echo $throwable->getMessage()."\n"; echo $throwable->getFile()."【".$throwable->getLine()."】\n"; } return true; } }