$trade->title, 'order_no' => $trade->out_trade_no, 'amount' => $trade->getOnlinePayFee(), 'mall_id' => $trade->mall_id, // 'notify_url' => Url::toApi(['notify/' . $pay_type], TRUE), 'notify_url' => \Yii::$app->request->hostInfo . '/join-pay/notify/joinpay', 'type' => $tradeType, 'open_id' => $params['openid'] ?? '' ]; $config =self::getConfig($trade->mall_id, $pay_type); if (!empty($extra_config)) { foreach ($extra_config as $config_key => $config_value) { isset($config[$config_key]) && $config[$config_key] = $config_value; } } // dd($config); $pay = \Yii::$app->payment->joinpay($config); $res = $pay->pay($order); // 给前端返回订单号和订单金额 // 增加组合支付判断 if(!empty($trade->is_pay_group)){ $paymentOrderObj = PaymentTradeGroupOrder::class; }else{ $paymentOrderObj = PaymentTradeOrder::class; } $trade_order = $paymentOrderObj::findOne(['trade_id' => $trade->id]); $res['order_no'] = $trade_order->order_no; $res['amount'] = $trade->getOnlinePayFee(); // dd(33333, $res); return $res; } /** * 汇聚快捷支付 * @param PaymentTrade $trade * @param $tradeType * @param array $params * @return bool * @throws Exception */ public static function joinpay_fast(PaymentTrade $trade, $tradeType, $params = []) { $order = [ 'order_no' => $trade->out_trade_no, 'sms_code' => $params['sms_code'], 'created_at' => $trade->created_at ]; $pay_type = \addons\JoinPay\common\enums\JoinPayTypeEnum::action(\addons\JoinPay\common\enums\JoinPayTypeEnum::JOINPAY_FAST_PAY); $config = self::getConfig($trade->mall_id, $pay_type); $pay = \Yii::$app->payment->joinpayFastPay($config); return $pay->pay($order); } /** * 获取商城支付配置 * @param $mall_id * @param $pay_type * @return array|mixed * @throws */ public static function getConfig($mall_id, $pay_type) { if ($mall_id) { $config = \Yii::$app->services->setting->mall->get($mall_id, 'pay.' . $pay_type, true); } else { //获取系统配置 $config = \Yii::$app->services->setting->platform->get($pay_type,true); } if (empty($config)) { throw new \Exception('查询不到对应的支付配置'); } return $config && is_string($config) ? json_decode($config, true) : $config; } }