123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- namespace app\common\widget;
- use EasyWeChat\Factory;
- use app\common\model\ConfigApis;
- use app\common\model\MemberMiniapp;
- use app\common\model\MemberPayment;
- use Exception;
- class WechatPay{
-
- public function doPay(int $app_id = 0,bool $official = false,string $sub_mchid = NULL){
- try{
- if ($app_id) {
- $config = MemberPayment::config($app_id,'wepay');
- if(empty($config)){
- return ['code'=>0,'msg'=>'请确认微信支付配置是否有问题'];
- }
- $app = MemberMiniapp::field('miniapp_appid,mp_appid,is_psp,psp_appid')->where(['id' => $app_id])->find();
- if(empty($official)){
- if(empty($app->miniapp_appid)){
- return ['code'=>0,'msg'=>'未开通小程序支付'];
- }
- $config['app_id'] = $app->miniapp_appid;
- }else{
- if(empty($app->mp_appid)){
- return ['code'=>0,'msg'=>'未开通公众号支付'];
- }
- $config['app_id'] = $app->mp_appid;
- }
- if(empty($sub_mchid)){
- return Factory::payment($config);
- }else{
- if($app->is_psp && empty($app->psp_appid)){
- return ['code'=>0,'msg'=>'未配置服务商APPID'];
- }
-
- $config['app_id'] = $app->psp_appid;
- $appid = empty($official) ? $app->miniapp_appid : $app->mp_appid;
- return Factory::payment($config)->setSubMerchant($sub_mchid,$appid);
- }
- }else{
- return Factory::payment(ConfigApis::config('wepay'));
- }
- }catch (Exception $e) {
- return ['code'=>0,'msg' => $e->getMessage()];
- }
- }
-
-
- public function orderPay(array $data,bool $official = false){
- try{
- $order = [
- 'trade_type' => empty($data['trade_type']) ? 'JSAPI' : $data['trade_type'],
- 'body' => $data['name'],
- 'out_trade_no' => (string)$data['order_no'],
- 'total_fee' => $data['total_fee'],
- 'notify_url' => $data['notify_url']
- ];
- if(isset($data['note'])){
- $order['attach'] = $data['note'];
- }
-
- $sub_mchid = NULL;
- if(isset($data['mchid'])){
- $sub_mchid = $data['mchid'];
-
- if(empty($data['trade_type'])){
- $order['sub_openid'] = $data['openid'];
- }
- if(isset($data['profit_sharing'])){
- $order['profit_sharing'] = $data['profit_sharing'];
- }
- }else{
- if(empty($data['trade_type'])) {
- $order['openid'] = $data['openid'];
- }
- }
- $wechat = self::doPay($data['miniapp_id'],$official,$sub_mchid);
- $result = $wechat->order->unify($order);
- if($result['return_code'] == 'SUCCESS'){
- if($result['result_code'] == 'SUCCESS'){
- if(empty($data['trade_type'])){
-
- return ['code'=>200,'msg'=>'成功','data' => $wechat->jssdk->sdkConfig($result['prepay_id'])];
- }else{
-
- return ['code'=>200,'msg'=>'成功','data' => $result];
- }
- }else{
- return ['code'=>0,'msg'=> $result['err_code_des']];
- }
- }else{
- return ['code'=>0,'msg'=> $result['return_msg']];
- }
- }catch (Exception $e) {
- return ['code'=>0,'msg'=> $e->getMessage()];
- }
- }
- }
|