C# 微信企业付款给个人之相关配置

微信付款给个人 官方接口文档

需要注意的点:

  1. 支付失败时不要更换商户订单号,把这条预支付订单记录下来,失败后继续查找这一订单支付。
  2. 需要在商户号中申请开通付款这一功能,开通这一功能需要满足 上线90天且有连续30天的正常交易才可开通。
  3. 使用证书,在商户号平台 --> 账户中心 --> 账户设置 --> API安全 。下载证书,注意备份,除PHP外的开发使用apiclient_cert.p12商户证书文件,如果是是使用.NET环境开发需要Framework版本大于2.0,最好使用4.0或4.5。

证书操作:

  1. 上传到操作系统后双击apiclient_cert.p12 安装,也可以在操作系统上 win+R 搜索mmc,点击文件-》添加/删除管理单元-》左侧证书双击-》计算机账户后下一步到完成。操作密码为微信商户 MCHID。

右键个人-》证书导入已上传的apiclient_cert.p12,导入证书完成。

  1. 我在做需要证书的所有POST请求中都会出现问题:System.Net.WebException:请求被中止,未能创建 SSL/TLS安全通道,刚开始做的是实时分账到账的功能,后来这个问题一直得不到解决且高层领导认为实时到账不太安全,就换为付款给个人零钱,换了个接口,还是使用证书,然后又一次遇到这个问题,且保证我的操作是没有问题的,代码也没有错用户支付没有问题,只有使用证书时会出现这个问题,后来在网上查找到解决方案:需要将证书权限给指定的系统用户

    微软官网 下载WinHttpCertCfg.exe证书配置程序,然后安装。

    它默认的下载到地址为C:Program Files (x86)Windows Resource KitsTools 不要修改,使用CD D指令定位到该目录下,给指定用户开证书的访问权限,指令:

    winhttpcertcfg.exe -g -c LOCAL_MACHINEMY -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]);
}
原文地址:https://www.cnblogs.com/cyapi/p/14852728.html