_valid([ 'order.require' => trans("empty.require") ]); if (!is_array($param)) return error($param); $order = (new SaasOrder)->where("order_sn",$param["order"])->with(['poi'])->findOrEmpty(); echo "订单状态==={$order['status']}\n"; if ($order['status'] <> 2) { echo getDateFull()."===订单状态不符合核销\n"; return error("订单状态不符合核销",$order->toArray()); } // 获取到订单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 error("获取订单数据失败",$orderCode); } echo getDateFull()."===核销数据\n"; print_r($orderCode['certificates']); $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']; } echo getDateFull()."===券码数据\n"; print_r($encrypted_code); if (empty($encrypted_code)) { echo getDateFull()."===没有可核销券码\n"; $order->express_status = 3; $order->done_at = getDateFull(); $order->save(); return error("没有可核销券码",$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'] ]); echo getDateFull()."===核销返回\n"; print_r($orderDone); if (empty($orderDone['verify_results'])) { echo getDateFull()."===核销失败\n"; return error("核销失败",$orderDone); } $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'], "money" => $order['price'], "certificate_id" => $v['certificate_id'], "verify_id" => $v['verify_id'], ]; } if (empty($doneData)) { echo getDateFull()."===核销完成无数据返回\n"; return error("核销完成无数据返回",$doneData); } $order->express_status = 3; $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)); return success("核销成功"); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } #[GetMapping('mini/token')] public function testToken() { try { $resp = (new OrderData)->config([ "appid" => sConf("wechat.mini_appid"), "secret" => sConf("wechat.mini_secret"), ])->token()->getAccessToken(); return success('ok',['data' => $resp]); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } }