add-admin-wx-profitsharingfinish

This commit is contained in:
lccsw
2021-09-02 19:15:45 +08:00
parent d792056cfd
commit 80ea7ba786
7 changed files with 341 additions and 1 deletions
+78
View File
@@ -0,0 +1,78 @@
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* Created by PhpStorm.
* User: lcc
* Date: 2021/09/02
* Time: 17:45
*/
class Profinish extends HD_Controller
{
private $log_file = 'profinish.log';
function __construct()
{
parent::__construct();
}
public function index()
{
$this->data['log_file'] = $this->log_file;
$this->data['_title'] = '结束分账';
return $this->show_view('app/profinish',true);
}
public function lists()
{
}
public function get()
{
}
public function add()
{
}
public function edit()
{
require_once COMMPATH."../api/third_party/WXconfig/1612096731.Config.php";
require_once COMMPATH."../api/third_party/WXpay/WxPay.Api.php";
$transaction_id = $this->input->post('transaction_id');
$description = $this->input->post('description');
if(!$transaction_id || !$description){
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);
}
}
public function del()
{
}
public function batch()
{
// TODO: Implement batch() method.
}
public function export()
{
// TODO: Implement export() method.
}
}
+23
View File
@@ -0,0 +1,23 @@
<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="transaction_id" value="" style="width:300px;display:inline"/>
<span class="text-success mt10">支付transaction_id</span>
</div>
</div>
<div class="am-form-group">
<label class="am-para-label w150">分账描述:</label>
<div class="am-para-input">
<textarea style="width:80%" name="description">已完成分账</textarea>
</div>
</div>
<div class="am-form-group" style="margin-bottom: 2rem">
<div class="am-para-input">
<button class="am-btn am-btn-secondary" type="submit">确定</button>
<a target="_blank" href="/log/admin/<?=date('Y')?>/<?=date('m')?>/<?=date('d')?>/wxapi/<?=$log_file?>" class="am-btn am-btn-default" type="submit">查看今日日志</a>
</div>
</div>
</form>
+30
View File
@@ -0,0 +1,30 @@
<?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;
}
+24
View File
@@ -0,0 +1,24 @@
-----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
@@ -0,0 +1,28 @@
-----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-----
+35 -1
View File
@@ -203,7 +203,41 @@ class WxPayApi
return $result;
}
/**
*
* 完成分账,WxPayProfitSharingFinish
* transaction_id 、out_order_no、description为必填参数
* appid、mchid、spbill_create_ip、nonce_str不需要填入
* @param WxPayConfigInterface $config 配置对象
* @param WxPayRefund $inputObj
* @param int $timeOut
* @throws WxPayException
* @return 成功时返回,其他抛异常
*/
public static function profitsharingfinish($config,$inputObj,$timeOut = 6){
$url = "https://api.mch.weixin.qq.com/secapi/pay/profitsharingfinish";
//检测必填参数
if(!$inputObj->GetTransaction_id()) {
throw new WxPayException("完结分账接口中,缺少必填参数transaction_id");
}else if(!$inputObj->IsOut_order_noSet()){
throw new WxPayException("完结分账接口中,缺少必填参数out_order_no");
}else if(!$inputObj->IsDescriptSet()){
throw new WxPayException("完结分账接口中,缺少必填参数description");
}
$inputObj->SetAppid($config::APPID);//公众账号ID
$inputObj->SetMch_id($config::MCHID);//商户号
$inputObj->SetNonce_str(self::getNonceStr());//随机字符串
$inputObj->SetSign($config);//签名
$xml = $inputObj->ToXml();
$startTimeStamp = self::getMillisecond();//请求开始时间
$response = self::postXmlCurl($config, $xml, $url, true, $timeOut);
$result = WxPayResults::Init($config, $response);
self::reportCostTime($config, $url, $startTimeStamp, $result);//上报请求花费时间
return $result;
}
/**
*
* 查询退款
+123
View File
@@ -3106,3 +3106,126 @@ class WxPayBizPayUrl extends WxPayDataBaseSignMd5
}
}
/**
*
* 完结分账
* @author widyhu
*
*/
class WxPayProfitSharingFinish extends WxPayDataBase
{
/**
* 设置微信分配的公众账号ID
* @param string $value
**/
public function SetAppid($value)
{
$this->values['appid'] = $value;
}
/**
* 获取微信分配的公众账号ID的值
* @return 值
**/
public function GetAppid()
{
return $this->values['appid'];
}
/**
* 设置微信的订单号,优先使用
* @param string $value
**/
public function SetTransaction_id($value)
{
$this->values['transaction_id'] = $value;
}
/**
* 获取微信的订单号,优先使用的值
* @return 值
**/
public function GetTransaction_id()
{
return $this->values['transaction_id'];
}
/**
* 设置商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
* @param string $value
**/
public function SetOut_order_no($value)
{
$this->values['out_order_no'] = $value;
}
/**
* 获取商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号的值
* @return 值
**/
public function GetOut_order_no()
{
return $this->values['out_order_no'];
}
/**
* 设置微信支付分配的商户号
* @param string $value
**/
public function SetMch_id($value)
{
$this->values['mch_id'] = $value;
}
/**
* 获取微信支付分配的商户号的值
* @return 值
**/
public function GetMch_id()
{
return $this->values['mch_id'];
}
/**
* 设置随机字符串,不长于32位。推荐随机数生成算法
* @param string $value
**/
public function SetNonce_str($value)
{
$this->values['nonce_str'] = $value;
}
/**
* 获取随机字符串,不长于32位。推荐随机数生成算法的值
* @return 值
**/
public function GetNonce_str()
{
return $this->values['nonce_str'];
}
/**
* 设置分账完结的原因描述
* @param string $value
**/
public function SetDescription($value)
{
$this->values['description'] = $value;
}
/**
* 获取分账完结的原因描述
* @return 值
**/
public function GetDescription($value)
{
$this->values['description'] = $value;
}
/**
* 判断商户系统内部的退款单号
* @return true 或 false
**/
public function IsOut_order_noSet()
{
return array_key_exists('out_order_no', $this->values);
}
/**
* 判断分账描述是否填写
* @return true 或 false
**/
public function IsDescriptSet()
{
return array_key_exists('description', $this->values);
}
}