.NET调用微信支付一闪而过的解决方案

论坛 期权论坛 脚本     
匿名网站用户   2020-12-19 20:21   21   0

本人用MVC开发微信支付,调用的是的微信的JSAPI接口,今天总是出现调用支付的时候,支付界面(三个点那个)一闪而过,经过一点点的实验,终于成功(100%可以调出来微信支付界面)。

如果在调用微信支付前,你的各种微信支付的KEY填写正确,公众号的支付路径配置没问题,JS安全域名已经设置,但在调用支付的时候支付接口一闪而过。那么请按照以下步骤进行检查。

1、在执行支付的页面(如WxPay是支付页面用来获取授权code、Openid、Access_Token等 ,Wxpaying支付操作,负责返回调用微信支付接口的参数信息)的加载中(如MVC中对应的Controller中的public ActionResult WxPay())不要进行什么Openid的判断,直接return View(),获取code的操作在前台用JS调用后台方法来负责实现。


2、前台在JQuery获取code的调用后台的方法中,每次都要重新生成一个获取code的回调链接,不要用Session等来保存这个Url(因为如果保存了,并且在这个页面调用的时候判断是否存在,就会可能造成这个Url的code过期,或者传递过来的如订单号这样的参数不会更新),这里需要注意的是把返回的调用这个方法名的路径名换成步骤1的可以返回页面的路径,要不然微信回调后会404,除非你给这个方法也写了个View


3、获取Code后进行的获取当前支付人的Openid和Access_Token的调用后台的操作,记得每次jsApiPay.GetOpenidAndAccessTokenFromCode(strCode)来获取,因为步骤2的原因,这个Code每次都不同。当然如果确定Openid和Access_Token对同一用户不会变的情况下,可以保存,这个我没仔细看微信的文档,我选择的是每次都获取新的。


4、在前台调用微信支付前(onBridgeReady)给个中断(如alert一个信息),要不然还是一闪而过,我选择的是用Jquery加载一个Loading的图标2秒,然后在调用微信支付接口,自从加了这个中断,就100%可以调用微信支付界面了(除非没用步骤2的时候订单号不存在或重复)。至于怎么不加中断就可以100%调用,我还没弄出来,我想到的原因是调用支付接口的时候,后台还有通讯没有完成,导致了参数没有返回过来,从而导致支付失败(或者又跳转了获取Code或者授权信息的Url),这个还要在调试才知道。


匆匆写了这些,如果您有好的解决方法,还望分享。尤其是关于第4个中断(延时)才可以出现支付界面的问题。

谢谢啦~~

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP