laravel前后端分离,微信公众号支付遇到的坑。
2017-12-13 本文已影响150人
拍个黄瓜G
主要是后端思想
1.首先,你要下载微信的php版本sdk。但是由于sdk版本比较老,不会自动引入
image.png
上面的这个文件是官方微信sdk的这个文件 /WxpayAPI_php_v3.0.1/example/Wxpay.JsApipAy.php
image.png
你需要把每个文件都改成laravel支持的自动引入的样子。也就是加上命名空间,和use引入。这只是其中的一个文件。注意运行composer dump-autoload命令
image.png
2.设置AppId等一系列东西
image.png
image.png
《设置的支付目录是前端的目录,授权的域名是后端的》
请确保实际支付时的请求目录与后台配置的目录一致,否则将无法成功唤起微信支付
image.png
image.png
上面的这两个必须设置的,还有可能遇到的坑是,你的ip地址没有添加到ip白名单里面。
下面进入主题
一,先获取code,给前端返回个url,前端先请求微信支付的接口,然后接口返回一个url。前端再用js请求这个url,来获取code值。
image.png
这个返回的url里并没有code值,只有js请求这个url才会有code值。拿到code值之后
image.png
这个方法返回的参数缺少个signature签名的参数。这个参数
1.首先要获得access_token
2.在获取ticket。下面这个图片是写在定时任务里面,一个小时更新token
image.png
3.最后把ticket值和一些别的参数,用sha1方法,加密拼接成signature
image.png
前端的坑就是
image.png