lyzflash
2025-11-17 91a56a9b83ec23a1580aa586a24b34aba6990ffa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
<?php
 
namespace app\api\service\order;
use app\api\model\settings\Setting as SettingModel;
use app\common\library\alipay\AliPay;
use app\common\library\easywechat\AppOpen;
use app\common\library\easywechat\AppWx;
use app\common\library\easywechat\AppMp;
use app\common\library\easywechat\WxPay;
use app\common\enum\order\OrderTypeEnum;
use app\common\enum\order\OrderPayTypeEnum;
use app\common\library\helper;
use app\common\model\app\App as AppModel;
use app\common\model\app\AppPay as AppPayModel;
use app\common\model\order\OrderTrade as OrderTradeModel;
use app\common\service\order\OrderService;
use app\common\library\fbpay\FbPay;
use app\common\model\app\AppWx as AppWxModel; //by lyzflash
use app\common\model\supplier\Supplier as SupplierModel;
 
class PaymentService
{
    /**
     * 构建订单支付参数
     */
    public static function orderPayment($user, $order, $payType)
    {
        if ($payType == OrderPayTypeEnum::WECHAT) {
            return self::wechat(
                $user,
                $order['order_id'],
                $order['order_no'],
                $order['pay_price'],
                OrderTypeEnum::MASTER
            );
        }
        return [];
    }
 
    /**
     * 微信支付接口选择 by lyzflash
     */
    public static function wechat(
        $user,
        $orderNo,
        $orderType,
        $pay_source,
        $payPrice,
        $multiple = 0,
        $shop_supplier_id = 0
    )
    {
        // 获取平台支付参数
        $appShop = AppModel::getAppCache($user['app_id']);
        ///获取后台是否设置了商户独立收款 by yj 2024.3.12
       // $is_independent = SettingModel::getIndependentOpen();
        $is_independent = SupplierModel::getIndependentOpen($shop_supplier_id);
        if(!empty($is_independent)){
            //分每个商户有单独的付呗支付信息
            $AppConfig = AppPayModel::detail($shop_supplier_id);
        }else{
            $AppConfig = $appShop;
        }
        // 判断是否开启半屏小程序支付
        if ($AppConfig["apitype"] && !empty($AppConfig['is_embed'])) {
            // 获取当前小程序信息
            $wxConfig = AppWxModel::getAppWxCache($user['app_id']);
            // 将支付参数加密
            $payParams = [
                'app_id'        => $AppConfig['embed_app_id'],
                'vendor_sn'     => $AppConfig['fbpay_vendor_sn'],
                'secret'        => $AppConfig['fbpay_secret'],
                'merchant_id'   => $AppConfig['fbpay_merchant_id'],
                'store_id'      => $AppConfig['fbpay_store_id'],
                'fbapp_id'      => $AppConfig['fbpay_app_id'],
            ];
            return [
                'extraData' => [
                    'payParams' => aes_encrypted($payParams, $AppConfig['embed_key']),
                    'order_no' => $orderNo,
                    'trade_no' => $orderNo,
                    'open_id' => $user['open_id'],
                    'pay_price' => $payPrice,
                    'order_type' => $orderType,
                    'pay_source' => $pay_source,
                    'multiple' => $multiple,
                    'shop_supplier_id' => $shop_supplier_id,
                    'wxapp_id' => $wxConfig['wxapp_id'],
                    'pay_type' => 20,
                    'notify_url' => base_url() . 'index.php/job/notify/fbpay',
                ],
                'embed_app_id' => $AppConfig['embed_app_id'], // 半屏小程序的appId
                'embed_path' => $AppConfig['embed_path'], // 半屏小程序的路径
                'is_embed' => $AppConfig['is_embed'],
            ];
        }
 
        if($AppConfig["apitype"]) { //付呗支付
            return self::fbpay($user, $orderNo, $payPrice, $orderType, $pay_source,$multiple,$shop_supplier_id);
        } else {
            return self::wechatpay($user, $orderNo, $payPrice, $orderType, $pay_source,$multiple,$shop_supplier_id);
        }
    }
 
    /**
     * 构建微信支付
     */
    public static function wechatpay(
        $user,
        $orderNo,
        $payPrice,
        $orderType,
        $pay_source,
        $multiple = 0,
        $shop_supplier_id = 0
    )
    {
        // 统一下单API
        if($pay_source == 'wx'){
            $app = AppWx::getWxPayApp($user['app_id'],$shop_supplier_id);
            $open_id = $user['open_id'];
        }else if($pay_source == 'mp'){
            $app = AppMp::getWxPayApp($user['app_id']);
            $open_id = $user['mpopen_id'];
        } else if($pay_source == 'payH5'){
            $app = AppMp::getWxPayApp($user['app_id']);
            $open_id = '';
        } else if($pay_source == 'android'||$pay_source == 'ios'){
            $app = AppOpen::getWxPayApp($user['app_id']);
            $open_id = $user['appopen_id'];
        }
 
 
        $WxPay = new WxPay($app);
        $payment = $WxPay->unifiedorder($orderNo, $open_id, $payPrice, $orderType, $pay_source, $multiple, $user['app_id']);
        if($pay_source == 'wx'){
            return $payment;
        }else if($pay_source == 'mp'){
            $jssdk = $app->jssdk;
            return $jssdk->bridgeConfig($payment['prepay_id']);
        }else if($pay_source == 'payH5'){
            return $payment;
        }else if($pay_source == 'android'||$pay_source == 'ios'){
            return $payment;
        }
        return false;
    }
 
    /**
     * 构建支付宝支付
     */
    public static function alipay(
        $user,
        $orderNo,
        $payPrice,
        $orderType,
        $pay_source,
        $multiple = 0
    )
    {
        $AliPay = new AliPay();
        $payment = $AliPay->unifiedorder($orderNo, $payPrice, $orderType, $pay_source, $multiple);
        return $payment;
    }
 
    /**
     * 构建付呗支付 by lyzflash
     */
    public static function fbpay(
        $user,
        $orderNo,
        $payPrice,
        $orderType,
        $pay_source,
        $multiple = 0,
        $shop_supplier_id = 0
    )
    {
        // 统一下单API
        $app = FbPay::getFbPayApp($user['app_id'], $shop_supplier_id);
        if($pay_source == 'wx'){
            $open_id = $user['open_id'];
        }else if($pay_source == 'mp'){
            $open_id = $user['mpopen_id'];
        } else if($pay_source == 'payH5'){
            $open_id = '';
        } else if($pay_source == 'app'){
            $open_id = $user['appopen_id'];
        }
 
        $FbPay = new FbPay($app);
        $payment = $FbPay->unifiedorder($orderNo, $open_id, $payPrice, $orderType, $pay_source, $multiple);
        if($pay_source == 'wx'){
            return $payment;
        }else if($pay_source == 'mp'){
            $jssdk = $app->jssdk;
            return $jssdk->bridgeConfig($payment['prepay_id']);
        }else if($pay_source == 'payH5'){
            return $payment;
        }else if($pay_source == 'app'){
            return $payment;
        }
    }
}