在Cocos游戏中接入微信支付
jssdk相关说明都在这里,我们这次需要接入的微信支付在页面最底下。
为了省事,我们直接使用微信的demo来搭建后端环境:点此下载
点此下载使用公众号发起支付请求的demo。并且解压出php版本。
将整个文件夹复制进需要接入支付的页面文件夹,然后打开。
WxPayPubHelper/WxPay.pub.config.php文件,配置里面的相关参数:
JS_API_CALL_URL需要填入支付页面的地址
然后在微信中访问index.php,并点击JSapi支付demo。
这时候我们会看到好多PHP报错信息……原来是demo中的CURLOPT_TIMEOUT写成了CURLOP_TIMEOUT……这是什么情况……
根据提示的文件和行数改之:
WxPayPubHelper.php 821
WxPayPubHelper.php 155
WxPayPubHelper.php 175 将这行注释掉curl_close($ch)
我们将js_call_.php 83行的WeixinJSBridge.log(res.err_msg);改成alert(res.err_msg):
运行发现,页面还是报错,弹出了getBrandWCPayRequest:fail_no permission to execute
查找各种文档后发现,原来是配置的支付目录和现在测试的目录不匹配造成的。
我们打开公众平台,点击微信支付-开发配置
如果只是测试使用,则填写支付测试的目录和允许测试的微信号,待测试通过后,发布到线上的地址,再填写支付配置的支付目录。(注意demo中的支付链接其实在/demo/文件夹内,所以要填写http://xxx/demo/)
到这里就一切就绪了,点击贡献一下,正常的弹出了支付对话框。
我们现在开始接入原先的游戏:
之前我们在游戏中实现了wifi的检测以及右上角菜单的消失和显示(点击游戏上方的显示菜单和隐藏菜单,右上角的三个。。。菜单会相应的显示和消失),但之前我们用的是静态的加密方式,现在我们把它改成动态的。
首先我们在刚刚的文档页面把jssdk的demo下载下来,将php的demo复制出来,并且将我们之前的wecat游戏copy到网站目录下,然后将index.html改成index.php。并在头部增加部分php代码初始化sdk(分别填入AppID和AppSecret)
然后把jssdk.php文件中所有的json读取都改成:
file_get_contents(dirname(__FILE__) . "/jsapi_ticket.json");
增加dirname(__FILE__) . 否则会读取到入口php的相对路径。
最后修改wx.config
试试在微信中打开游戏,已经能够动态生成加密数据了。
然后将demo/js_api_call.php内头部的php代码复制到index.php头部,最后增加一个赞助的链接。
搞定!!
看看完成后的页面叭,记得在微信中打开。
附上完整的代码,替换其中的appid等参数就行了。
常见的问题:
1.支付页面跳转提示uri错误:打开公众平台开发者中心,在接口权限表里面找到 “网页授权获取用户基本信息” 点击修改,然后设置成需要跳转的域名
2.支付跳转页面白屏无反应: 检查php是否打开了curl,如果没有打开curl,会一直停留在空白页面
3.fail_no permission to execute:支付配置的目录和当前目录不匹配,到支付设置中增加一个目录地址就行了