微信支付服务器与本地证书问题的坑

在本地安装证书并调用微信小程序支付,没有问题,但发布到服务器则报错,开始显示内部错误,查相关资料后发现IIS确实与VS环境不同,需要设置以下内容:

Https传输证书授权问题

一、导入证书 

1、运行->mmc,打开管理控制台,文件->添加/删除管理单元

2、在可用的管理单元中选择证书,然后点击添加

3、回到控制台,展开证书-当前用户->个人->证书,然后导入证书

这里,微信的新证书,是双击执行导入的。并且默认是导入到当前账户。(之后授权也应该为当前用户administrator,或者可以试试everyone)

按照步骤导入证书,微信支付证书初始密码为商户号

4、证书导入完成后,就会出现在证书列表上

二. 修改IIS上对应项目的程序池标识(如果是服务端,客户端的不用此步骤)

1. 打开IIS -> 选择[应用程序池] -> 选中对应的项目 -> 选择右侧的[高级设置]

2. 找到[进程模型] -> 修改[标识]属性值

3. 将 ApplicationPoolIdentity 修改为 NetworkService

3. 将 ApplicationPoolIdentity 修改为 administrator(因为导入证书导入到当前用户了,对应administrator)

三、安装授权工具

 1.下载 winhttpcertcfg.exe 安装

 附下载地址:1.https://www.microsoft.com/en-us/download/confirmation.aspx?id=19801

 2.https://www.microsoft.com/en-us/download/details.aspx?id=19801

 3.安装完  用命令窗口  跳转到 C:\Program Files (x86)\Windows Resource Kits\Tools(安装的路径) 执行

winhttpcertcfg -g -c LOCAL_MACHINE\MY -s "test-a "NetworkService"

这里因为导入到了当前账户里,所以执行

服务器,默认使用远程安装支付证书会到当前用户
winhttpcertcfg -g -c CURRENT_USER\MY -s "证书名称(商户号)" -a "NetworkService"

winhttpcertcfg -g -c CURRENT_USER\MY -s "证书名称(商户号)" -a "EveryOne"

winhttpcertcfg -g -c CURRENT_USER\MY -s "证书名称(商户号)" -a "administrator"

test是证书名,不带后缀,替换成你的证书名字就行

详细信息可以参考https://www.cnblogs.com/ccsharp/p/3270344.html

https://www.cnblogs.com/similar/p/6831899.html 

 

四、设置网站SSL

选中网站,点击 SSL设置 ,选择要求SSL,选择必须,点击应用

 

 

五、修改代码

之前  cer = new X509Certificate(cerUrl, refundEntity.mch_id);

改后 cer = new X509Certificate(cerUrl, refundEntity.mch_id, X509KeyStorageFlags.MachineKeySet);

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值