add-admin-wx-profitsharingfinish
This commit is contained in:
@@ -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.
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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-----
|
||||
@@ -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-----
|
||||
Vendored
+35
-1
@@ -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;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* 查询退款
|
||||
|
||||
Vendored
+123
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user