黄宽的blog

宁可十年不将军,不可一日不拱卒



laravel中使用easywechat完成微信js支付

        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;下面图是下单基本流程

  Laravel

作者  :  黄宽

不耻最后,即使慢,驰而不息,纵会落后,纵令失败



About ME

about me

黄宽

我不想成为一个庸俗的人。十年百年后,当我们死去,质疑我们的人同样死去,后人看到的是裹足不前、原地打转的你,还是一直奔跑、走到远方的我?

友情链接