起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7316|回复: 1

[分享] wex5 php后台微信公众号支付遇到errcode:40163,解决方法

[复制链接]

4

主题

23

帖子

245

积分

中级会员

Rank: 3Rank: 3

积分
245
QQ
发表于 2017-2-17 15:28:37 | 显示全部楼层 |阅读模式
在使用wex5 3.6 的php baas server的过程中, 微信支付的demo   把其中的商户信息都修改完成后,
点击支付按钮,还是无法支付成功。 会返回 { "errcode":40163,"errmsg":"code been used“}
经过百度后,发现这个错误可能是 微信不允许5分钟内连续使用公众号的code来获取用户的openId引起的。

然后查看php的后台服务程序。在WxMpJsApi.php中 发现用户在每次调用支付的时候,都回调用其中的chooseWXPay()方法。

这个方法必须要获取openId, 目前的WxMpJsApi中是使用session来获取。如果获取不到就会用code再去微信官网申请openId,

问题就出现在这里了, 官网不允许5分钟内再次获取, 而调试发现在session中获取不到。

为什么session中获取不到呢?  我还没搞清,不过百度上说微信中是无法想平常那样使用session的。

所以没办法了,只能想办法传递openId过去了。

于是修改调用支付按钮的回调方法:        Model.prototype.PayButtonClick= function (){
                var mod=this;
                var tradeNo = justep.UUID.createUUID();
                var notifyUrl = location.origin + "/baas/weixin/weixin/notify";
                wxPay.pay({
                        body : "800颗糖豆",
                        mchId : "1403158888",
                        notifyUrl : notifyUrl,
                        outTradeNo : tradeNo,
                        totalFee : "1",
                        openId : mod.openId,
                        success : function(e) {
                                alert(JSON.stringify(e))
                        },
                        cancel : function(e) {
                                alert(JSON.stringify(e))
                        },
                        fail : function(e) {
                                alert(JSON.stringify(e))
                        }
                });
        };

手动添加 openId参数给后台。

然后修改还在的WxMpJsApi.php   ,把其中的 $openid=$_SESSION['openid'];改为 $openId = $_REQUEST["openId"];

OK。             微信支付成功。

请各位前辈看看我这样修改可以么? 是否有什么隐患之类的。谢谢。

31

主题

138

帖子

584

积分

高级会员

Rank: 4

积分
584
QQ
发表于 2017-6-12 18:28:48 | 显示全部楼层
您好,我也正在使用PHP开发微信支付问题,只是刚刚入门就遇到麻烦。如果可能,还请您帮助点拨一二。我的问题描述如http://bbs.wex5.com/forum.php?mo ... page=1#pid165459713所示。

从界面提示上看,似乎我使用那个URL即可通过配置,但是总是显示‘配置失败’。我使用的是WeX5 3.6,其中提供的基于PHP操作微信方面没有提供直接的案例。从其配置文件WxPay.config.php来看,并没有给出TOKEN这个量的值。而从我使用的微信测试账号的提示来看,确实需要提供一个TOKEN。

请问:这个TOKEN是否需要配置?如何需要,在哪一个文件中操作? 实在急需。在此先表示真诚的谢意!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-22 11:14 , Processed in 0.061789 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表