微信扫码支付(模式二 NATIVE)分享 [ 未指定版本 ]
大家好,我是Yii娱乐群-九杯蛙。从新人到现在,yii已经陪伴我一年多了,这是我接触到的第一款框架,也是唯一一款框架,我喜欢,就这么简单。
这这里我分享一下我的微信扫码支付(注:此为测试支付,且没有在微信公众平台做任何配置)。
微信扫码支付(模式二)第一步----【生成二维码,完成支付】:
首先这是我的文件目录:
这是yii1框架,但是我想这不重要,这里是所用到的文件。在WxPay.Config.php完成文件配置及微信公众号、商户号信息配置。
完成支付控制器里的文件加载(微信那几个文件之间也有互相加载,要注意路径正确)及配置。载入视图。在载入视图生成二维码的过程中或许会遇到以下的报错:
经过在网上资料的搜索查询,发现以下的60错误解决方法:
当你控制器中的信息已经配置无误(微信金额是以分为单位)且成功加载视图后,此时在你加载的页面中应该就可以看到二维码了。这里要注意,同一个订单不能重复,否则会出现类似以下这种错误:
当出现这种错误时,就得好好检查你控制器中的支付信息等配置,好好检查。如果正常视图出现二维码的话,扫一扫支付一下,应该会支付成功,或许支付成功之后你也可以登录微信商户平台查询一下交易记录。
微信扫码支付(模式二)第二步----【接收回调信息,完成订单支付状态更改】:
在控制器配置生成二维码的参数中需要配置一个有效的回调url,这个非常重要,微信会将扫码支付的状态和信息发送到你的这个url中:
在这个方法中我使用file_put_contents来收集微信发送过来的xml信息并写入文件中,以便观察。如果你支付成功的话信息中result_code与return_code的参数会是SUCCESS,我是以此来判断支付状态与修改订单支付状态,完成系统订单支付。当你处理好你的信息之后,记住一定要给微信回复信息(echo 'SUCCESS'),否则回信会反复给你回调URL发送信息。
接下来就是我在生成二维码视图中做的一个异步查询订单支付状态,以此来改变页面的状态:
到了这里几乎已经没有什么可以说的了,第二步完成。
最后,Yii娱乐群(106870189)扯淡、撕逼、各种聊人生!哈哈!~ 我是老九,欢迎大家加入!
九杯蛙
最后登录:2017-01-24
在线时长:8小时49分
- 粉丝4
- 金钱310
- 威望10
- 积分490
共 8 条评论
这里做个说明,以上代码我感觉安全性并不高,所以还是要根据你自己的程序去考虑一下完全性
你好 我想请问一下 扫码支付回调地址需要在微信中心配置吗 我支付成功但始终没有回调地址发过来
注意看你的回调接收方式 , 我这里是用写文件的方式测试、记录接收数据,如果你也是用这种方式的话,要注意写入文件的路径,如果你找不到写入文件,那就试试在项目文件夹下搜一下。
如果你是用yii2 你得去设置一下数据传输的机制 因为YII2默认是不接收微信那边的数据
去看一下 yii2 的csrf 机制 加油骚年!
我看到你的回调设置的是payAfter.html,为什么要这样设置呢?我的项目设置http://www.test.com/wxpay/notify,然后他回调总是跑到了index.php入口文件去了,没有进入到wxpayController下的actionNotify方法
我看到你的回调设置的是payAfter.html,为什么要这样设置呢?我的项目设置http://www.test.com/wxpay/notify,然后他回调总是跑到了index.php入口文件去了,没有进入到wxpayController下的actionNotify方法
网速慢,重复提交了
问题已经解决,通过抓包发现是开启了csrf验证,外部访问抛了400,关闭验证就ok了
为什么我在自己控制器中关掉了csrf验证?为什么不可以呢public $enableCsrfValidation = false;
你这个是页面不停请求查询订单,收到回调前刷新页面,不是就收不到回调了?
我没有刷新页面
你的页面不是每隔2s自动请求一次查看订单支付状态吗,我的意思是用户扫码后,你页面还没开始请求,用户就手动刷新了页面,会不会出问题
微信生成的二维码只能扫一次 不可以重复 所以没问题 js只是检查订单的支付状态 改变界面 并不会出现数据性错误