| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <?php
- namespace addons\JoinPay\common\global_func\payment;
- use addons\JoinPay\common\enums\JoinPayTypeEnum;
- use addons\JoinPay\common\models\JoinPayUserBankcard;
- use common\enums\AddonsEnum;
- use common\enums\PayTypeEnum;
- use common\enums\StatusEnum;
- use common\helpers\Url;
- use common\models\common\PaymentTrade;
- use common\models\common\PaymentTradeOrder;
- use common\models\common\PaymentTradeGroupOrder;
- class Payment
- {
- public static function pay($params)
- {
- if(empty($params['action'])||empty($params['trade_type'])||empty($params['trade']) || !in_array($params['pay_type'],[7,8])){
- return [];
- }
- $action = $params['action'];
- $trade = $params['trade'];
- $trade_type = $params['trade_type'];
- if(!method_exists(self::class,$action)) return [];
- return self::$action($trade,$trade_type,$params);
- }
- /**
- * 汇聚聚合支付
- * @param PaymentTrade $trade
- * @param $tradeType
- * @param array $params
- * @return array|mixed
- * @throws \Exception
- */
- public static function joinpay(PaymentTrade $trade, $tradeType, $params = [], $extra_config = [])
- {
- $pay_type = \addons\JoinPay\common\enums\JoinPayTypeEnum::action(\addons\JoinPay\common\enums\JoinPayTypeEnum::JOINPAY);
- $order = [
- 'title' => $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;
- }
- }
|