params['out_trade_no']; $card_type = $this->params['card_type']; $deductionAmount = $this->params['deductionAmount']; $periods = $this->params['periods']; //TODO 前端临时 $original_price = $this->params['original_price']; $down_payment = $this->params['down_payment']; $down_payment_periods = $this->params['down_payment_periods']; $pay = new PayModel(); $info = $pay->getPayInfo($out_trade_no)['data'] ?? []; if (!empty($info)) { switch ($info['event']) { case 'OrderPayNotify': $order_model = new OrderModel(); $json = [ [ 'order_goods gs', 'a.order_id = gs.order_id', 'left' ], [ 'goods_sku gk', 'gs.sku_id = gk.sku_id', 'left' ], [ 'goods_card c', 'gs.goods_id = c.goods_id', 'left' ] ]; $order_info = model('order') ->getInfo([['a.out_trade_no', '=', $out_trade_no]], 'a.order_id,a.order_type,gs.sku_no,gk.market_price,c.validity_type,c.validity_day,c.validity_time,c.original_price,c.down_payment,c.down_payment_periods,gs.goods_id', 'a', $json); if (!empty($order_info)) { $info['order_id'] = $order_info['order_id']; $info['order_type'] = $order_info['order_type']; $info['goods_id'] = $order_info['goods_id']; $info['sku_no'] = $order_info['sku_no']; $info['original_price'] = $order_info['original_price']; $info['down_payment'] = $order_info['down_payment']; $info['down_payment_periods'] = $order_info['down_payment_periods']; } break; } } $pay = new \addon\alipay\model\Config(); $payConfig = $pay->getPayConfig(request()->siteid())['data']['value']; if ($payConfig && $payConfig['merchant_smid']) { $merchantPid = $payConfig['merchant_smid']; } else { $where = [ 'site_id' => request()->siteid(), 'pay_type' => 'alipay', ]; $merchantPid = Db::name('pay_shop')->where($where)->cache(json_encode($where))->value('merchant_smid'); if (empty($merchantPid)) { cache(json_encode($where), null); } } $pub = [ 'merchantPid' => $merchantPid, 'productName' => $info['pay_body'], 'productNo' => $info['goods_id'], 'nickName' => '支付宝用户', 'outSubscriptionNo' => $out_trade_no, 'deductionAmount' => $deductionAmount, //每期费用 'periods' => $periods, //总期数 ]; switch ($card_type) { case 'week': $data = []; $info['initData']['openWeek'] = array_merge($pub, $data); break; case 'month': $data = []; $info['initData']['openMonth'] = array_merge($pub, $data); break; case 'num': $data = []; $info['initData']['openTime'] = array_merge($pub, $data); break; case 'discountnum': $data = [ 'enableUserActivePay' => 'Y', //主动付款 'existVerificationCode' => 'Y',//主动付款 'originalPrice' => $original_price, //订购原价 'downPayment' => $down_payment, //优惠价格 'downPaymentPeriods' => $down_payment_periods, //优惠期数 'overdueDate' => '', //过期时间 ]; switch ($order_info['validity_type']) { case '0': $time = mktime(0, 0, 0, date('m'), date('d'), date('Y') + 10); $data['overdueDate'] = date('Y-m-d', $time); break; case '1': $time = mktime(0, 0, 0, date('m'), date('d') + $order_info['validity_day'], date('Y')); $data['overdueDate'] = date('Y-m-d', $time); break; case '2' : $data['overdueDate'] = date('Y-m-d', $order_info['validity_time']); break; } $info['initData']['openDiscountTime'] = array_merge($pub, $data); } return $this->response($this->success($info)); } }