edit-admin-wx-profitsharingfinish

This commit is contained in:
lccsw
2021-09-02 20:28:36 +08:00
parent 80ea7ba786
commit bf51b24cfa
10 changed files with 140 additions and 98 deletions
+1 -1
View File
@@ -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';
/*
|--------------------------------------------------------------------------
+19
View File
@@ -0,0 +1,19 @@
<?php
/**
* Created by Vim
* User: lcc
* Desc: 微信支付配置
* Date: 2021/8/12
* Time: 14:12
*/
defined('BASEPATH') OR exit('No direct script access allowed');
$config['default'] = [ //服务商信息配置
'appid' => '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
];
+25 -15
View File
@@ -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, '操作成功');
}
+6
View File
@@ -1,4 +1,10 @@
<form class="am-form am-form-horizontal" action="/app/profinish/edit" data-auto="true" method="post" style="width: 90%;padding-top: 10px">
<div class="am-form-group">
<label class="am-para-label w150">子商户号:</label>
<div class="am-para-input">
<input type="text" placeholder="子商户号" name="sub_mchid" value="" style="width:300px;display:inline"/>
</div>
</div>
<div class="am-form-group">
<label class="am-para-label w150">微信支付订单号:</label>
<div class="am-para-input">
-30
View File
@@ -1,30 +0,0 @@
<?php
/**
* 配置账号信息
* 狸车服务商户
*/
define('LICHE_APICLIENT_CERT',dirname(__FILE__).'/liche_cert/1612096731_cert.pem');
define('LICHE_APICLIENT_KEY',dirname(__FILE__).'/liche_cert/1612096731_key.pem');
class WxPayConfig
{
const APPID = 'wx98e64c11aac45966';
const APPSECRET = 'f8eec7be1c87a1c8e40213e144821ec3';
const MCHID = '1612096731';
const KEY = '056afb568e28468defe86dd0102f8d33';
const SIGN_TYPE = 'HMAC-SHA256';
const NOTIFY_URL = '';
//=======【证书路径设置】=====================================
const SSLCERT_PATH = LICHE_APICLIENT_CERT;
const SSLKEY_PATH = LICHE_APICLIENT_KEY;
//=======【curl代理设置】===================================
const CURL_PROXY_HOST = "0.0.0.0";//"10.152.18.220";
const CURL_PROXY_PORT = 0;//8080;
//=======【上报信息配置】===================================
const REPORT_LEVENL = 1;
}
+28
View File
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC9LwCi58X6Gf1i
xxw3o22b/+l8bJlsdgFP9itJas7hTAGnjR9UpLwWtQ3hug2W3bAkRe8/toQQwois
817SnF8IcaaVfFwYcF7VEgiAVAkPGWn2I9Hhwj94rRz0OTz5CFms4d56QcjM+Cxg
3SxaafJjZdEZ5eOWYRMxGGYnnnkN833uC2Hft6sk74KhLQ9gNQQFLm/ZJLmozw1y
WIoIwJ2B3Q3jj3mtJjQdaav20MlYzC9xLCep4bVTaS13xvhBoB/6AE39l3OHSsgv
HusUgNbsBczPBbN9SbfX7je3405Q/TIH8meSf05k5NaohtPHMlxpgMZ3HrG1JkwX
fManQ+cpAgMBAAECggEAO9rmKaSJF9MnPxxeCiBz6npyZgJ6HD3Ntn3dPjJD2DZT
A677ra0dMVYBWVyjNgtX0nIp+w+FA0R5N7ccVihRTPugSAV7oePTrTgyZl+wKg3R
X6X/npz1tfmXgpGlf+krbi5cVHQB0w/mApOXl9eTb+1j1fzNH+QAzXS5xWk3Rbkr
3hXKOcNav0wnhrIZxsPX6+eA4Ugk4oh513vEJlll1FyM08DO7ZFvu2Gng3w43j/H
dMAy7N0JVy8GoTpKyGH9gC+Bx8QUrIZuc61GbTshaaSdxnx3+R4VoVgqFbkQyTNH
KA2+mSSoV0mkrDhFiawQy2yXLEF80K03+hnNDmQwAQKBgQDh0y6wkQzXkwN5EMtv
6RUOf66QJjRzcSBYpY02T9NbYHpFsBjMkn9lylOEqhRBy/Y+EEgKBLCFFFKx/KVZ
hbIPOLCKo+UbLwDGgkajFVXOQ/lRbdsNuYW9/zLpPYAhlbYfMUuVaFGrrNIjxLYV
0axmzVfka9/DXw1887VdQ/pFKQKBgQDWdm0gucBwP5969Dry1DuYCeIj9tSXhY7s
HJ4k6o1TWBZn2NJdEichIh3PO2fRPT5fDmXEnZMwz8gZIJ8rUBNgmKe7EApeXMT8
8fmaQPRbR88nIJeyTSEk4WORkbH/2Xz5F6fvuR7KF4wGr43m/IdMpSrv/BnkLF23
zSXb1d7SAQKBgHY/i+o++deEDsR9K9m81h7ScwjeSIbOjN5+SdRPtl/ZxAzrqgCt
EXKuoE8OdC8D6zwScHZ2gCwfOTIkFj0rSdK4n5DpQ1WZpjFMFErfKCAq7cla2eJ0
6/hSQklpv8dWSphIyshAaMuZYiwCnEoOkdT+33AnoHMAOeLdBnIA33MJAoGAAWkP
+KogENzqQJXAmX450hsmiJQD++cd9IGPrLB6M3Ud2Jr9by1CYp5l0coTObYMZfWj
R7K9mBGVwEyNn2xMZFM8rydA2jQD+6HfwVryAHOtchVtyfdl42c0D24E3KjigITe
Tt5JzIxxGE4pQb6haSig6qkexnhgOWg4+oQijgECgYEAnDH3YdfPOFbfFkBT+oIt
kZ+NN/IPwUOBcWb23dTafxA09Bw+2UaSzAC+BYhvKFCtSKgqVQtMRxOHcAYBWvCs
CNX+ALyxDfANdxaprckCETGXxQszGA2hcD+cUbfLna4ly1fhUqg5Gq3tCdi/2+vM
0pbaUzLN1SPCBhdutX4VBzs=
-----END PRIVATE KEY-----
+23
View File
@@ -0,0 +1,23 @@
-----BEGIN CERTIFICATE-----
MIID3DCCAsSgAwIBAgIUe68GGg5wWRf1+DfkhV7pOoLTtBwwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMjEwODExMDgyNTE3WhcNMjYwODEwMDgyNTE3WjBuMRgwFgYDVQQDDA9U
ZW5wYXkuY29tIHNpZ24xEzARBgNVBAoMClRlbnBheS5jb20xHTAbBgNVBAsMFFRl
bnBheS5jb20gQ0EgQ2VudGVyMQswCQYDVQQGDAJDTjERMA8GA1UEBwwIU2hlblpo
ZW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDM2TRhXB5BXhy4Gn/t
GxOt96TwqCWjBRtuzPRJC84JzEkwPtVcYnaROlVBlgLmhQZWDhEcly0fgVJ3nt7/
OfXhtEQI0xtEV9ZYPxQNRJ4IgutIhxNMMKJ9ElXZSTmhWwbQdohsKksuAk0shEZJ
fmc4uemwzgf/qLy7INHYqAWdTmhlkzI1aQk+8xYjurS847mMSsX+55HRsJAal2/4
fgdRwgSX7NHSclSbxVMI8TvmqK3gxBE4rJ0xHd7P/aomuPAjnGyFQpTJKk1/nwWF
wWpKvAMx6lO55dFB3l0f8l3/2F+L7RgM+k7ije5j8Ke0+y9vAU0xx6khcNRAdlw1
rNzLAgMBAAGjgYEwfzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE8DBlBgNVHR8EXjBc
MFqgWKBWhlRodHRwOi8vZXZjYS5pdHJ1cy5jb20uY24vcHVibGljL2l0cnVzY3Js
P0NBPTFCRDQyMjBFNTBEQkMwNEIwNkFEMzk3NTQ5ODQ2QzAxQzNFOEVCRDIwDQYJ
KoZIhvcNAQELBQADggEBAHKZixcFnEijO/INTYXDZ1CO3UOPDE3vjaBRlORspn5Z
QXdIGxZat3ZulQjQtT1aicrw61nS/xV2MR4Ob4AWeSUcXLSfWjWu0QyJ1jeU0zpI
DOIQU22jquY0IFAnZXlvYH8pTuydYFBnTtdjmdIwyebbvOUI0K6NkJtBbGkDYOsX
14kGoPugOpyK9VFzm8hvHm6aO6EgGNnkvJzrqlJNTbG4+08HGqgwZczt/xXpb6sL
QTIFNvAgMIGS3ohCQOUtZPChaBf6GNZUgRt3qcUG/75RgxNhFzmthyIjk4/JjhpU
QASkbUQkYcFjO8WlSejT4MKwEij/aN7U7LSq4gLw61k=
-----END CERTIFICATE-----
-24
View File
@@ -1,24 +0,0 @@
-----BEGIN CERTIFICATE-----
MIID8jCCAtqgAwIBAgIUTRw+QrJWTy+pD7oRtWcv5gEKubEwDQYJKoZIhvcNAQEL
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
Q0EwHhcNMjEwOTAyMDkwNzEwWhcNMjYwOTAxMDkwNzEwWjCBgzETMBEGA1UEAwwK
MTYxMjA5NjczMTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMS8wLQYDVQQL
DCbni7jovaYo5Y6m6ZeoKee9kee7nOenkeaKgOaciemZkOWFrOWPuDELMAkGA1UE
BgwCQ04xETAPBgNVBAcMCFNoZW5aaGVuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEArJMenGtx65nlAZoVqTFNdY7NJePnZ6dAWtecmPgFNuLPnX4IswxA
PIwBC90yFq0XDj/WuX3E20CS90a2RTsc4Qgi9jy4H9IFcWk3wXg/1EgxpyhbpcBy
kzhpl51+QP04YEdkPSWiU2fprK6EXDqdIc2TbRdT84ieqbLiKmatdI26h8F7B6d7
ACksglMl9sqXBPR98Qm2ujQLZij4N51pWvcXXULBfDvkPySpGdx6iLgVUcF4QstY
Ev6kLmhD6ABIxFeTZRIRKdWoPigAXwr7b6+jyrMLcm+EZc26PayOZdMR5vcqd1g+
ECdnx8jd9OtaDJLcnmDtXjXJT+20mHJcRwIDAQABo4GBMH8wCQYDVR0TBAIwADAL
BgNVHQ8EBAMCBPAwZQYDVR0fBF4wXDBaoFigVoZUaHR0cDovL2V2Y2EuaXRydXMu
Y29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJDMDRCMDZBRDM5
NzU0OTg0NkMwMUMzRThFQkQyMA0GCSqGSIb3DQEBCwUAA4IBAQAUqXIRMFk1sYrq
T4G7VMfiNOTc4vKMVGYLQDI7neUxAmn622qV4NYpll1mM/WRs8I2TT8LM343wU+x
RAfVz6QuSrRYxm2HILoRRdxAQGoTK3GloVmGkEsn0smskMqvqbTvpuM/ksRCduEv
yQ0mE2efioHklfYvFgxbsvYXLbNJRlNloUFDPiAYKi6G7oOpfNGKNCxSfC9MNHkE
ojB7a51XELxhmW4cHv3Z+q+LY2GBJxJx2yE7WbAFP2ZCShHgZWka5AeBHVuRVOtP
79NKHVtODOeh0zMHypenMTSXsULL8RmUMUMrvHNST/k2PfQhmyquUz0+scvMjDb/
S2+TM0JA
-----END CERTIFICATE-----
-28
View File
@@ -1,28 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCskx6ca3HrmeUB
mhWpMU11js0l4+dnp0Ba15yY+AU24s+dfgizDEA8jAEL3TIWrRcOP9a5fcTbQJL3
RrZFOxzhCCL2PLgf0gVxaTfBeD/USDGnKFulwHKTOGmXnX5A/ThgR2Q9JaJTZ+ms
roRcOp0hzZNtF1PziJ6psuIqZq10jbqHwXsHp3sAKSyCUyX2ypcE9H3xCba6NAtm
KPg3nWla9xddQsF8O+Q/JKkZ3HqIuBVRwXhCy1gS/qQuaEPoAEjEV5NlEhEp1ag+
KABfCvtvr6PKswtyb4Rlzbo9rI5l0xHm9yp3WD4QJ2fHyN3061oMktyeYO1eNclP
7bSYclxHAgMBAAECggEAZk3U0L+1SgjyRG/WtXU/yRf9r5+ad80jjnbRI7GsTaxJ
jcDAYXw6vGn22NSpM94qk8zuewn+4Ec4mJR3yzTO2uxa5YR7VonHpkLMxcmGdU7S
+JgpNGqQwYuotTOtO9OhTxojZ0hfIXixgyf12UL6Eabv5bT1lKKCBHHCN4ak/zln
o+UmkC1mndcaaTrNsQLPgltcG4AtFjwFnmyCMQkIRZkJL6xWy+JWpkiZvA/t2IM1
PIPYf/vQPqaib8SRw5ALNKsEfgmv+tyTuMsQLyEYQV0yZjRFnU622x5Tbqrmj3uC
1m3C2AR5R6GxBso1AatvEgbfeIjTGSCkPxkzfIEMYQKBgQDk7V3eLtvJqS0NmCNv
QyKw3llh53RtFGXdi8Nf/g6MS79RRSNfMZymimXMqPeUNoM7JxqpUIgn+y/35pxp
ejSY2jtKm0+Xm3pzecNmbVOIc7M3ThNpIR/WEqYKqAMpa/VgWym1Vvf8ocG9Bwqj
XV1zlPLKx6L/SMsWFBJel3K69wKBgQDA+7bP/Zw2NgHifSpWXHaWib4QBP7CJKDk
WMdBwAsxznuXkbsXkU+XymBiSNwi9ZZUPBsmCAZXSh+zYzvoL7nWnX7YfkjvfMJd
Lu+4jNU663NXjn7wcw8yfK+gKL7O3qo8WzCE1+YAte42VkPySDdsnzbKHlNsYXIS
MY+2q6hFMQKBgENamy2Nt9jDT6AaTQKlTAWhxcaKZLTbNYVTY65Qf1NDzgxJPTj6
zc4qFf17ESyoRUAYJz39lbG9s8VKMmbOL79xJdSzkV1Xv1VOU/FE5TjWYbo53Hgn
6MgBQJ0OBbAgNVeeOs1Bw0CvDuNguP6Lr70b67tBtXFKp4XdbfIquPTNAoGAQyQQ
IWLZw16c30CuxycaNxurHYWvYLo/o9JjWLPI8UYmZ8BS+EsdBvFpASjaNet9psbW
py+pjRsD1nSS9iAMpudap1WgaHneYW8gBfQxh3M9SNwRu/Q7+FO7ApzKbcy4K5GK
Wt2Gbv7c5tiygQuxBMCL3lwYqB9rAXtuxZ4JSDECgYBlRbSAeHFrs09KAOb3DBrF
BLP7CTmuDPAF5dhKnv0DKyjLD3fiuTesBEqfWup1LjzxVMtZ7deMlvai7rgg/2R2
9dd4sLeHQTGe3zv9aTA81uBXb9pDfOrPC/f4dzdiqLoL2c5a5qZpCvbsJrZ3KO45
sRGnamJ7atVmxag7hmOhRw==
-----END PRIVATE KEY-----
+38
View File
@@ -71,6 +71,44 @@ class WechatPayV3{
return ['code'=>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";