easywechat
为 laravel
框架提供了一专门适用于 laravel
的项目的微信开发插件,在 github
上项目名叫 overtrue/laravel-wechat
,因为公司项目需要在微信浏览器中可以调起微信支付,刚开始准备用 omnipay-wechat
来做的,毕竟在这项目中已经完成了两个支付方式了,如果可以用同一个项目做的话,不仅代码好看,也更方便调试。
omnipay-wechat
的文档上只有下单和回调,但是缺少一个js调起微信支付的一个重要点,就是获取用户授权资料。问了一下作者,作者的意思是让我去看一下原生sdk和 easywechat
的用户授权是怎么做的,想了半天,还是就用 easywechat
好了。
在 laravel学院
中找来找去又找到了微信支付这一块,看了一下代码,大概是个什么意思明白了,但是怎么搞总会出点错,问了一下同事,同事之前用过 easywechat
做过 laravel
的支付和其他微信功能,对于 laravel学院
和 easywechat
也是非常喜欢这两个社区吧。最后在同事的帮助下,完成了使用 laravel-wechat
完成了在微信浏览器中调起微信支付的功能。
其实很多时候,直接看文档敲代码吧,会觉得文档怎么写得这么稀烂的,说得简直模棱两可,但当你摸索出来把功能做完了以后,你会发现,原来遇到的问题要解决的问题,文档上真的有说到过,真的有教怎么解决。附上laravel-wechat的项目地址:https://github.com/overtrue/laravel-wechat
js 调起微信支付的流程是这样的,填写配置,首先拿到用户授权资料,再下单生成支付配置,将生成的支付配置带到含有 js 调起微信支付的那个页面( laravel学院
中微信支付中有写到那一段 js),点击页面中的确认按钮后,这个页面是自己做的,点击完成后会调起微信支付。
填写配置非常重要,做这个功能绕了很远的路,配置方面花了很多时间,文档里面有说怎么生成配置文件,我就来说说做手机网站在微信浏览器中,调起微信支付也就是 jsapi 支付需要哪些配置(可能会比真正配置多那么一两项,不过建议还是配上去)。在 wechat.php
文件中,需要配置: app_id,secret,token,aes_key,notify_url
,在 payment
这个键中只需要配置merchant_id,key
,这里注意这个 key
是自己设置的而不是微信自动生成的。
拿到用户授权资料是在中间件中做的,将项目 composer
下来后 Middleware
下会多一个 OAuthAuthenticate
文件,这个文件主要功能可以为我们提供用户授权资料,我们不需要动这个文件,只要在 kernel
文件中为这个中间件在 $routeMiddleware
中注册上去,然后在下单路由中把这个中间件加上去,文档里都有写,只要用户点击支付,进入你的控制器就得获取用户授权资料,获取用户提交的支付数据,拼装成json然后把json带到页面拼接到Js里面。。。。
控制器里至少要有
use EasyWeChat;
use EasyWeChat\Payment\Order as WechatOrder;
下面图是下单基本流程
网友评论