100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 亲身经历之微信支付沙箱环境扫码支付遇到的那些坑

亲身经历之微信支付沙箱环境扫码支付遇到的那些坑

时间:2020-05-10 02:32:35

相关推荐

亲身经历之微信支付沙箱环境扫码支付遇到的那些坑

很多用户在调用微信支付扫码支付沙箱环境都一脸迷茫,废话不多说,遇到很多坑,为了让大家少走弯路下面直接说说我开发微信支付遇到坑,微信沙箱不是一般的坑,是很大的坑。

1.首先下载的官方demo,不能直接用,里面参数少,参数少啊,需要按照官方的api文档,对照必传参数。

2.微信支付不同于其他支付,沙箱环境利用的是正式账号,其signkey也是根据正式key获取到的,沙箱只支持MD5加密,然后获取后调用接口时候需要替换正式key。

微信支付验收阶段可以用沙盒测试支付流程

https://pay./wiki/doc/api/jsapi.php?chapter=23_1

步骤如下

1.正式请求地址修改,增加/sandboxnew/

2.按正式流程做sign

3.用正式sign,额外调用https://api.mch./sandboxnew/pay/getsignkey 获得sandbox_signkey

4.用sandbox_signkey 替换用户自己的key,再做sign签名

5.用第二次生成的sign来掉起支付

6.发起支付的瞬间就会有回掉通知

/// <summary>/// 获取沙箱签名密钥。/// </summary>/// <returns></returns>public static string GetSignKey(){string nonceStr = WxPayApi.GenerateNonceStr();WxPayData signParam = new WxPayData();signParam.SetValue("mch_id", WxPayConfig.GetConfig().GetMchID());signParam.SetValue("nonce_str", nonceStr);signParam.SetValue("sign", signParam.MakeSign());string xml = signParam.ToXml();string url = "https://api.mch./sandboxnew/pay/getsignkey";string response = HttpService.Post(xml, url, false, 10);Log.Debug("WxPayApi", "GetSignKey response : " + response);WxPayData result = new WxPayData();SortedDictionary<string, object> items = result.FromXml(response);object signKey;if (items.TryGetValue("sandbox_signkey", out signKey)){return signKey.ToString();}else if (items.TryGetValue("return_msg", out signKey)){throw new WxPayException(signKey.ToString());}elsethrow new WxPayException("获取沙箱密钥失败!");}

也可以利用POSTMAN获取,获取到的测试key并非长期有效,有三天有效期

3.重要的事情说三遍

微信支付沙箱环境不用扫码,不用扫码,不用扫码,扫了白扫,扫完你会一脸懵逼,模式一二维码一直提示原生支付URL参数错误,模式二扫码的时候提示码已经过期,请重新生成。沙箱环境是直接出现二维码后5秒后需要调用自动下单接口,然后再 调用查询订单接口。他不是真实支付所以不需要用微信扫码。

4.还有一点需要注意的地方需要关注微信支付商户接入验收助手,按照验收指引操作,里面有测试用例,其支付金额不是随意,必须按照测试用例金额测试。

5.找到Data.cs文件,图中圈中的地方,注释掉

6还有图中圈中的地方,需要增加ToUpper(),如果不加我调试的代码出来是小写获取的签名是大学,造成不等返回false,签名验证错误

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。