在Cocos游戏中接入微信支付

发表于2015-08-20
评论0 3.8k浏览
上次我们通过手动的加密接入了一些微信的api,这次我们继续把微信支付功能接入到猫狗大战中,顺带把页面加密也更换为动态加密方式。

首先打开这里

jssdk相关说明都在这里,我们这次需要接入的微信支付在页面最底下。

为了省事,我们直接使用微信的demo来搭建后端环境:点此下载

点此下载使用公众号发起支付请求的demo。并且解压出php版本。

将整个文件夹复制进需要接入支付的页面文件夹,然后打开。

WxPayPubHelper/WxPay.pub.config.php文件,配置里面的相关参数:

1.jpg

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

查找各种文档后发现,原来是配置的支付目录和现在测试的目录不匹配造成的。

我们打开公众平台,点击微信支付-开发配置

2.jpg

如果只是测试使用,则填写支付测试的目录和允许测试的微信号,待测试通过后,发布到线上的地址,再填写支付配置的支付目录。(注意demo中的支付链接其实在/demo/文件夹内,所以要填写http://xxx/demo/)

到这里就一切就绪了,点击贡献一下,正常的弹出了支付对话框。

3.jpg

我们现在开始接入原先的游戏:

之前我们在游戏中实现了wifi的检测以及右上角菜单的消失和显示(点击游戏上方的显示菜单和隐藏菜单,右上角的三个。。。菜单会相应的显示和消失),但之前我们用的是静态的加密方式,现在我们把它改成动态的。

首先我们在刚刚的文档页面把jssdk的demo下载下来,将php的demo复制出来,并且将我们之前的wecat游戏copy到网站目录下,然后将index.html改成index.php。并在头部增加部分php代码初始化sdk(分别填入AppID和AppSecret)

4.jpg

然后把jssdk.php文件中所有的json读取都改成:

file_get_contents(dirname(__FILE__) . "/jsapi_ticket.json");

增加dirname(__FILE__) . 否则会读取到入口php的相对路径。

最后修改wx.config

5.jpg

试试在微信中打开游戏,已经能够动态生成加密数据了。

然后将demo/js_api_call.php内头部的php代码复制到index.php头部,最后增加一个赞助的链接。

搞定!! 

6.jpg

看看完成后的页面叭,记得在微信中打开

7.jpg

8.jpg

附上完整的代码,替换其中的appid等参数就行了。

apache.rar


常见的问题:

1.支付页面跳转提示uri错误:打开公众平台开发者中心,在接口权限表里面找到 “网页授权获取用户基本信息” 点击修改,然后设置成需要跳转的域名

2.支付跳转页面白屏无反应: 检查php是否打开了curl,如果没有打开curl,会一直停留在空白页面

3.fail_no permission to execute:支付配置的目录和当前目录不匹配,到支付设置中增加一个目录地址就行了

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引