微信付款给个人 官方接口文档
需要注意的点:
- 支付失败时不要更换商户订单号,把这条预支付订单记录下来,失败后继续查找这一订单支付。
- 需要在商户号中申请开通付款这一功能,开通这一功能需要满足 上线90天且有连续30天的正常交易才可开通。
- 使用证书,在商户号平台 --> 账户中心 --> 账户设置 --> API安全 。下载证书,注意备份,除PHP外的开发使用apiclient_cert.p12商户证书文件,如果是是使用.NET环境开发需要Framework版本大于2.0,最好使用4.0或4.5。
证书操作:
- 上传到操作系统后双击
apiclient_cert.p12
安装,也可以在操作系统上 win+R 搜索mmc,点击文件-》添加/删除管理单元-》左侧证书双击-》计算机账户后下一步到完成。操作密码为微信商户 MCHID。
右键个人-》证书导入已上传的apiclient_cert.p12
,导入证书完成。
-
我在做需要证书的所有POST请求中都会出现问题:
System.Net.WebException:请求被中止,未能创建 SSL/TLS安全通道
,刚开始做的是实时分账到账的功能,后来这个问题一直得不到解决且高层领导认为实时到账不太安全,就换为付款给个人零钱,换了个接口,还是使用证书,然后又一次遇到这个问题,且保证我的操作是没有问题的,代码也没有错用户支付没有问题,只有使用证书时会出现这个问题,后来在网上查找到解决方案:需要将证书权限给指定的系统用户
去 微软官网 下载WinHttpCertCfg.exe证书配置程序,然后安装。
它默认的下载到地址为
C:\Program Files (x86)\Windows Resource Kits\Tools\
不要修改,使用CD \D指令定位到该目录下,给指定用户开证书的访问权限,指令:winhttpcertcfg.exe -g -c LOCAL_MACHINE\MY -s "证书名称" -a "EveryOne"
注意:这里的证书名称是微信支付商户号 MCHID
成功后会有版本号和商户名称。
//是否使用证书
if (isUseCert)
{
//string path = HttpContext.Current.Request.PhysicalApplicationPath;
//X509Certificate2 cert = new X509Certificate2(path + WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD);
//request.ClientCertificates.Add(cert);之前使用的验证证书方法
//Log.Debug("WxPayApi", "PostXml used cert");
//这里通过证书名称查找证书,证书名称为证书列表中“颁发给字段”。这里返回是一个数组,如果你安装多个相同名称的证书,这里可能会返回多个,这种情况需要根据证书具体定位是那个。
X509Store certStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
certStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certCollection = certStore.Certificates.Find(X509FindType.FindBySubjectName, "1491653982", false);
request.ClientCertificates.Add(certCollection[0]);
}