微信分账-添加分账接收方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 ,商户API私钥文件路径
-k ,证书解密的密钥
-m ,商户号
-o ,保存证书的路径
-s ,商户API证书的序列号
非必需参数有:
-c ,微信支付平台证书的路径。如果你还没有证书,请先不传该参数。

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,微信)