update(['change_type' => $biz_content['change_type']], ['card_template_id' => $card_template_id]); } break; case 'alipay.commerce.merchantcard.order.notify': //订购状态通知接口 // $this->syncOrder($biz_content); break; case 'alipay.commerce.merchantcard.deductionorder.notify': //订单状态通知接口 // $this->orderNotify($biz_content); break; default: } } } /*** * 订单同步状态 * @param $data */ public function syncOrder($data) { // 支付宝交易号 $trade_no = $data['trade_no']; $out_trade_no = $data['card_id']; //平台交易号 $third_order_no = $data['deduction_order_id']; // 交易状态 $trade_status = $data['deduction_order_status']; $user_id = $data['user_id']; $card_template_id = $data['card_template_id']; $where = [ 'out_trade_no' => $out_trade_no, 'card_template_id' => $card_template_id ]; $orderInfo = (array)model('order')->getInfo([['out_trade_no', '=', $out_trade_no]], 'site_id,store_id,order_id,member_id,name,mobile,province_id,city_id,district_id,address,full_address,promotion_type,promotion_type_name'); $zmOrder = Db::name('zima_order')->where($where)->find(); if (empty($zmOrder)) { $insdata = [ 'productNo' => $data['productNo'], 'merchantPid' => $data['merchantPid'], 'site_id' => $orderInfo['site_id'], 'store_id' => $orderInfo['store_id'], 'userid' => $data['userId'], 'order_id' => $orderInfo['order_id'] ?? 0, 'uid' => $orderInfo['member_id'] ?? 0, 'trade_no' => $trade_no, 'out_trade_no' => $out_trade_no, 'third_order_no' => $third_order_no, 'verificationCodeStatus' => $data['verificationCodeStatus'] ?? '', 'orderSettleStatus' => $data['orderSettleStatus'], 'create_time' => strtotime($data['orderDate']), 'plan_time' => strtotime($data['planDeductionTime'] ?? ''), 'period' => $data['period'], 'order_status' => $trade_status, 'amount' => $data['deductionAmount'] ]; Db::name('zima_order')->insert($insdata); } else { $updata = [ 'order_status' => $trade_status, 'verificationCodeStatus' => $data['verificationCodeStatus'] ?? '', 'orderSettleStatus' => $data['orderSettleStatus'], 'settleTime' => $data['settleTime'] ?? 0, 'failTimes' => $data['failTimes'] ?? 0, 'failReason' => $data['failReason'] ?? '', ]; if ($trade_status == 'PAID') { //扣款成功 $updata['payChannel'] = $data['payChannel']; $updata['settleDetails'] = json_encode($data['settleDetails']); $updata['pay_time'] = strtotime($data['actualDeductionTime']); event('CloudAliPayOrderPay', array_merge($zmOrder, $updata, $orderInfo));//订单支付成功 } Db::name('zima_order')->where($where)->update($updata); //核销支付中 try { event('CloudAliPaySyncOrder', array_merge($zmOrder, $updata, $orderInfo));//订单同步事件 } catch (\Exception $exception) { trace($exception, 'CloudAliPaySyncOrder同步事件' . json_encode($data)); } } $success = [ 'success' => true, 'code' => 10000, "msg" => 'Success', ]; ksort($success); $json = [ 'response' => $success, 'sign' => $this->aop->sign(json_encode($success), "RSA2") ]; echo json_encode($json); } /*** * 订单状态通知接口 * @param $data * @return void */ public function orderNotify($data) { $card_id = $data['card_id']; $order_id = $data['order_id']; $create_time = $data['create_time']; $card_template_id = $data['card_template_id']; $card_status = $data['card_status']; $card_name = $data['card_name']; $card_type = $data['card_type']; $total_count = $data['total_count']; $remain_count = $data['remain_count']; $merchant_app_id = $data['merchant_app_id']; $user_id = $data['user_id'] ?: $data['open_id']; } }