微信分账-添加分账接收方v3

2023-10-19 16:28
文章标签 微信 接收 v3 分账

本文主要是介绍微信分账-添加分账接收方v3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考:添加分账接收方API - 分账 | 微信支付服务商文档中心

所需信息:

【微信支付平台证书、商户API证书、商户API私钥】【V3密钥、公众账号ID、运营方商户号、运营方商户api证书序列号、运营方微信支付平台证书序列号、随机串、当前时间戳、由签名值计算的签名串、分账接收方商户号、加密后的分账接收方商户名

1、查看证书序列号 地址

2、微信支付平台证书

该证书只能通过接口获得,首次下载用命令下载比较好一些 下载工具

/*首次下载*/
java -jar CertificateDownloader.jar -k ${apiV3key} -m ${mchId} -f ${mchPrivateKeyFilePath} -s ${mchSerialNo} -o ${outputFilePath}/*更新*/
java -jar CertificateDownloader.jar -k ${apiV3key} -m ${mchId} -f ${mchPrivateKeyFilePath} -s ${mchSerialNo} -o ${outputFilePath} -c ${wechatpayCertificateFilePath}/*参数*/
必需参数有:
-f <privateKeyFilePath>,商户API私钥文件路径
-k <apiV3Key>,证书解密的密钥
-m <merchantId>,商户号
-o <outputFilePath>,保存证书的路径
-s <merchantSerialNo>,商户API证书的序列号
非必需参数有:
-c <wechatpayCertificatePath>,微信支付平台证书的路径。如果你还没有证书,请先不传该参数。

3、商户API证书、密钥 参考

4、加密后的分账接收方商户名

	function getEncrypt($str) {//$str是待加密字符串 $public_key_path = "平台证书地址";$public_key = file_get_contents($public_key_path);$encrypted = '';if (openssl_public_encrypt($str, $encrypted, $public_key, OPENSSL_PKCS1_OAEP_PADDING)) {//base64编码 $sign = base64_encode($encrypted);} else {throw new Exception('encrypt failed');}return $sign;}

5、由签名值计算的签名串

POST\n
/v3/profitsharing/receivers/add\n
时间戳\n
随机串\n
json串{"appid" : "公众账号ID","type" : "MERCHANT_ID","account" : "分账接收方商户号","name" : "加密后的分账接收方商户名","relation_type" : "PARTNER"}\n

 6、添加请求

curl -X POST \https://api.mch.weixin.qq.com/v3/profitsharing/receivers/add \-H "Authorization: WECHATPAY2-SHA256-RSA2048 mchid="运营方商户号",nonce_str="随机串",signature="由签名值计算的签名串",timestamp="当前时间戳",serial_no="运营方商户api证书序列号"\-H "Accept: application/json" \-H "Wechatpay-Serial: 运营方微信支付平台证书序列号"  \-H "Content-Type: application/json" \-d '{"appid" : "公众账号ID","type" : "MERCHANT_ID","account" : "分账接收方商户号","name" : "加密后的分账接收方商户名","relation_type" : "PARTNER"}'

完整代码

<?php 
header("Access-Control-Allow-Origin: *");
$appid = '公众号appid';
$nonce=getNonceStr();//"随机串"
$serial_no = '商户API证书系列号';
$mchid="运营方商户号";
$timestamp = time();
$private_key_path = "商户API密钥地址";
$account = '分账接收方商户号';
$str = "分账接收方商户名";
$name = getEncrypt($str);//加密后的分账接收方商户名
$url = 'https://api.mch.weixin.qq.com/v3/profitsharing/receivers/add';
$data = '{"appid":"'.$appid.'","type":"MERCHANT_ID","account":"'.$account.'","name":"'.$name.'","relation_type":"PARTNER"}';/*由签名值计算的签名串*/
$private_key = file_get_contents($private_key_path);//商户API密钥内容
$url_parts = parse_url($url);
$canonical_url = ($url_parts['path'] . (!empty($url_parts['query']) ? "?${url_parts['query']}" : ""));
$message = "POST".chr(10).$canonical_url.chr(10).$timestamp.chr(10).$nonce.chr(10).$data.chr(10);
openssl_sign($message, $raw_sign, $private_key, 'sha256WithRSAEncryption');
$sign = base64_encode($raw_sign);
/*添加分账方*/
$schema = 'WECHATPAY2-SHA256-RSA2048';
$token = sprintf('mchid="%s",nonce_str="%s",timestamp="%d",serial_no="%s",signature="%s"', $mchid, $nonce, $timestamp, $serial_no, $sign);
$ret = posturl($url,$data,$schema.' '.$token);
print_r($ret);function posturl($url, $data, $Authorization){$wechatpay_no = "平台证书序列号";$headerArray =array("Content-type:application/json;charset='utf-8'","Accept:application/json","Authorization:".$Authorization,"User-Agent:".$_SERVER['HTTP_USER_AGENT'],"Wechatpay-Serial:".$wechatpay_no);$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($curl);curl_close($curl);return $output;}function getEncrypt($str) {//$str是待加密字符串 $public_key_path = "平台证书地址";$public_key = file_get_contents($public_key_path);$encrypted = '';if (openssl_public_encrypt($str, $encrypted, $public_key, OPENSSL_PKCS1_OAEP_PADDING)) {//base64编码 $sign = base64_encode($encrypted);} else {throw new Exception('encrypt failed');}return $sign;}/*** * 产生随机字符串,不长于32位* @param int $length* @return 产生的随机字符串*/function getNonceStr($length = 32){$chars = "abcdefghijklmnopqrstuvwxyz0123456789";$str = "";for ($i = 0; $i < $length; $i++) {$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);}return $str;}
?>

这篇关于微信分账-添加分账接收方v3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/240986

相关文章

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行

基于微信小程序与嵌入式系统的智能小车开发(详细流程)

一、项目概述 本项目旨在开发一款智能小车,结合微信小程序与嵌入式系统,提供实时图像处理与控制功能。用户可以通过微信小程序远程操控小车,并实时接收摄像头采集的图像。该项目解决了传统遥控小车在图像反馈和控制延迟方面的问题,提升了小车的智能化水平,适用于教育、科研和娱乐等多个领域。 二、系统架构 1. 系统架构设计 本项目的系统架构主要分为以下几个部分: 微信小程序:负责用户界面、控制指令的

微信小程序uniappvue3版本-控制tabbar某一个的显示与隐藏

1. 首先在pages.json中配置tabbar信息 2. 在代码根目录下添加 tabBar 代码文件 直接把微信小程序文档里面的四个文件复制到自己项目中就可以了   3. 根据自己的需求更改index.js文件 首先我这里需要判断什么时候隐藏某一个元素,需要引入接口 然后在切换tabbar时,改变tabbar当前点击的元素 import getList from '../

微信小程序(一)数据流与数据绑定

一、单向数据流和双向数据流 1、单项数据流:指的是我们先把模板写好,然后把模板和数据(数据可能来自后台)整合到一起形成HTML代码,然后把这段HTML代码插入到文档流里面 优点:数据跟踪方便,流向单一,追寻问题比较方便【主要体现:微信小程序】。 缺点:就是写起来不太方便,如果修改UI界面数据需要维护对应的model对象 2、双向数据流:值和UI是双向绑定的,大家都知道,只要UI里面的值发生

微信小程序学习网站

小程序--柯神博客 http://www.cnblogs.com/nosqlcoco 案例地址: https://github.com/cocoli/weixin_smallexe/tree/master/weixin_demo/pages/component/uploadfile

分享一个基于uniapp科技馆服务微信小程序 博物馆管理小程序(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流! 💕💕学习资料、程序开发、技术解答、文档报告 💕💕如需要源码,可以扫取文章下方二维码联系咨询 💕💕Java项目 💕💕微信小程序项目 💕💕Android项目 �

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题

flutter开发实战-flutter build web微信无法识别二维码及小程序码问题 GitHub Pages是一个直接从GitHub存储库托管的静态站点服务,‌它允许用户通过简单的配置,‌将个人的代码项目转化为一个可以在线访问的网站。‌这里使用flutter build web来构建web发布到GitHub Pages。 最近通过flutter build web,通过发布到GitHu

1-3 微信小程序协同工作和发布

协同工作和发布 🥟🥞以权限管理需求为例 一个项目组,一般有不同的岗位,不同角色的员工同时参与项目成员 流程 成员管理的两个方面 不同项目成员对应的权限 版本