From df95ac311ccd2b4e2a04e25376329438bc3ecfc0 Mon Sep 17 00:00:00 2001 From: lccsw <1127794702@qq.com> Date: Thu, 2 Sep 2021 20:28:36 +0800 Subject: [PATCH] edit-admin-wx-profitsharingfinish --- admin/config/config.php | 2 +- admin/config/wxpay.php | 19 +++++++++ admin/controllers/app/Profinish.php | 40 ++++++++++++------- admin/views/app/profinish.php | 6 +++ .../WXconfig/1612096731.Config.php | 30 -------------- api/third_party/WXconfig/apiclient_key.pem | 28 +++++++++++++ .../WXconfig/apiclient_wechatpay.pem | 23 +++++++++++ .../WXconfig/liche_cert/1612096731_cert.pem | 24 ----------- .../WXconfig/liche_cert/1612096731_key.pem | 28 ------------- common/libraries/WechatPayV3.php | 38 ++++++++++++++++++ 10 files changed, 140 insertions(+), 98 deletions(-) create mode 100644 admin/config/wxpay.php delete mode 100755 api/third_party/WXconfig/1612096731.Config.php create mode 100644 api/third_party/WXconfig/apiclient_key.pem create mode 100644 api/third_party/WXconfig/apiclient_wechatpay.pem delete mode 100644 api/third_party/WXconfig/liche_cert/1612096731_cert.pem delete mode 100644 api/third_party/WXconfig/liche_cert/1612096731_key.pem diff --git a/admin/config/config.php b/admin/config/config.php index 78345909..6e3dfa88 100755 --- a/admin/config/config.php +++ b/admin/config/config.php @@ -136,7 +136,7 @@ $config['subclass_prefix'] = 'HD_'; | Note: This will NOT disable or override the CodeIgniter-specific | autoloading (application/config/autoload.php) */ -$config['composer_autoload'] = FALSE; +$config['composer_autoload'] = COMMPATH.'/vendor/autoload.php'; /* |-------------------------------------------------------------------------- diff --git a/admin/config/wxpay.php b/admin/config/wxpay.php new file mode 100644 index 00000000..e71fa49d --- /dev/null +++ b/admin/config/wxpay.php @@ -0,0 +1,19 @@ + 'wxe66f905683582780', //服应用ID + 'mchid' => '1612096731', //商户号 + 'merchantSerialNumber' => '761590F1FF6DFC2466894F96E2DE1169CE644A74', //商户号API证书序列号 + 'merchantPrivateKey' => '/home/dev28/liche/api/third_party/WXconfig/apiclient_key.pem', //商户私钥路径 + 'wechatpayCertificate' => '/home/dev28/liche/api/third_party/WXconfig/apiclient_wechatpay.pem', //微信支付平台证书路径 + 'sub_appid' => 'wx98e64c11aac45966' //子商户应用ID +]; + diff --git a/admin/controllers/app/Profinish.php b/admin/controllers/app/Profinish.php index 1fa27523..ab379ac7 100644 --- a/admin/controllers/app/Profinish.php +++ b/admin/controllers/app/Profinish.php @@ -37,28 +37,38 @@ class Profinish extends HD_Controller public function edit() { - require_once COMMPATH."../api/third_party/WXconfig/1612096731.Config.php"; - require_once COMMPATH."../api/third_party/WXpay/WxPay.Api.php"; + + $sub_mchid = $this->input->post('sub_mchid'); $transaction_id = $this->input->post('transaction_id'); $description = $this->input->post('description'); - if(!$transaction_id || !$description){ + if(!$transaction_id || !$description || !$sub_mchid){ return $this->show_json(SYS_CODE_FAIL, '参数错误'); } $this->load->helper('order'); $out_order_no = create_order_no(); - $config = new WxPayConfig(); - $wxpay = new WxPayProfitSharingFinish(); - $wxpay -> SetTransaction_id($transaction_id); - $wxpay -> SetOut_order_no($out_order_no); - $wxpay -> SetDescription($description); - $return = WxPayApi::profitsharingfinish($config, $wxpay); - debug_log("[结束分账返回参数]:" .json_encode($return,JSON_UNESCAPED_UNICODE), $this->log_file,'wxapi'); - if($return['result_code'] == 'SUCCESS') { - return $this->show_json(SYS_CODE_SUCCESS, '操作成功'); - }else{ - $err_msg = $return['return_msg'] ? $return['return_msg'] : $return['return_msg'].$return['err_code_des']; - return $this->show_json(SYS_CODE_FAIL, '错误信息:'.$err_msg); + $this->config->load('wxpay'); + $wx_config = $this->config->item('default'); + $this->load->library('WechatPayV3'); + $params = [ + 'merchantId' => $wx_config['mchid'], + 'merchantSerialNumber' => $wx_config['merchantSerialNumber'], + 'merchantPrivateKey' => $wx_config['merchantPrivateKey'], + 'wechatpayCertificate' => $wx_config['wechatpayCertificate'], + ]; + $WechatPayV3 = new WechatPayV3($params); + $json = [ + 'sub_mchid' => $sub_mchid, + 'transaction_id' => $transaction_id, + 'out_order_no' => $out_order_no, + 'description' => $description, + ]; + $noncestr = getNonceStr(20); + $resq = $WechatPayV3->unfreeze($json,$noncestr); + debug_log("[结束分账返回参数]:" .json_encode($resq,JSON_UNESCAPED_UNICODE), $this->log_file,'wxapi'); + if(!$resq['code']){ + return $this->show_json(SYS_CODE_FAIL, $resq['msg']); } + return $this->show_json(SYS_CODE_SUCCESS, '操作成功'); } diff --git a/admin/views/app/profinish.php b/admin/views/app/profinish.php index 3aecc655..89322461 100644 --- a/admin/views/app/profinish.php +++ b/admin/views/app/profinish.php @@ -1,4 +1,10 @@
+
+ +
+ +
+
diff --git a/api/third_party/WXconfig/1612096731.Config.php b/api/third_party/WXconfig/1612096731.Config.php deleted file mode 100755 index efe7dc44..00000000 --- a/api/third_party/WXconfig/1612096731.Config.php +++ /dev/null @@ -1,30 +0,0 @@ -0,'msg'=>$error_msg]; } } + //解冻剩余资金API + public function unfreeze($json,$noncestr){ + $url = 'https://api.mch.weixin.qq.com/v3/profitsharing/orders/unfreeze'; + // 商户相关配置 + $merchantPrivateKey = PemUtil::loadPrivateKey($this->merchantPrivateKey); // 商户私钥 + $wechatpayCertificate = PemUtil::loadCertificate($this->wechatpayCertificate); // 微信支付平台证书 + + $wechatpayMiddleware = WechatPayMiddleware::builder() + ->withMerchant($this->merchantId, $this->merchantSerialNumber, $merchantPrivateKey) // 传入商户相关配置 + ->withWechatPay([ $wechatpayCertificate ]) // 可传入多个微信支付平台证书,参数类型为array + ->build(); + + $stack = GuzzleHttp\HandlerStack::create(); + $stack->push($wechatpayMiddleware, 'wechatpay'); + + // 创建Guzzle HTTP Client时,将HandlerStack传入 + $client = new GuzzleHttp\Client(['handler' => $stack]); + + // 接下来,正常使用Guzzle发起API请求,WechatPayMiddleware会自动地处理签名和验签 + try { + $resp = $client->request('POST', $url, [ + 'json' => $json, + 'headers' => [ 'Accept' => 'application/json' ] + ]); + + $body = json_decode($resp->getBody(),true); + return ['code'=>1,'data'=>$body]; + } catch (RequestException $e) { + // 进行错误处理 + //echo $e->getMessage()."\n"; + $error_msg = $e->getMessage(); + if ($e->hasResponse()) { + //echo $e->getResponse()->getStatusCode().' '.$e->getResponse()->getReasonPhrase()."\n"; + //echo $e->getResponse()->getBody(); + } + return ['code'=>0,'msg'=>$error_msg]; + } + } //调起支付的签名 private function getWechartSign($appid,$timeStamp,$noncestr,$prepay_id){ $str = $appid."\n".$timeStamp."\n".$noncestr."\n".$prepay_id."\n";