资讯专栏INFORMATION COLUMN

分享一下这两周爬微信支付的坑~希望有借鉴作用(PHP)

Tangpj / 2801人阅读

摘要:这个坑就是要注意回调结束要返回成功的响应这几天做微信支付暂时遇到的问题就这么多,只能说注意细节吧,爬过的坑记录下来以后遇到就懂处理了。

前言

其实任何接口开发只要按照给出来的接口文档和例子开发基本上不会有太大问题的,一些问题都是出在杂七杂八的小细节上,现在分享一下微信支付开发中自己遇到的小细节。
按照文档做完开发前配置,比如JS安全域名配置、网页授权域名、公众号授权目录等等...

坑一: 配置

看完微信支付的文档,了解接口的规则,微信支付的流程基本是:获取openid -> 生成统一下单参数 -> 用户支付 -> 回调 ,其实没有太复杂
在配置上面说的东西的时候也会有一些小问题

支付授权目录需要配置到接口的上一级目录,斜杠(/)结尾,必须是斜杠结尾,而且是你写的后端接口的请求路径,不管是否做了路由跳转之类的
坑二: openid的获取

下载微信支付DEMO 链接

文档中也有给出了例子,在example文件夹,当时在第一步获取openid就卡住了。
先讲一下我这边代码框架是前端vue + 后端thinkphp给出api接口实现数据交互这样的。
在第一步获取openid中,需要做header("Location:....")重定向获取到code然后跳转回来Curl访问access_token接口获取到用户openid。
如果前端下单本身就是一个页面跳转那可以按照demo的写法直接用,但是如果是前端post请求是没法做重定向操作,所以获取openid和生成统一订单参数不能放在同一个方法内实现。
在前端异步的请求中会报Access-Control-Allow-Origin的跨域问题,而且是报api.weixin.qq.com不能跨域到api.weixin.qq.com
所以如果遇到以上跨域问题~那就是你的前端异步请求和获取openid写到一起了,但是异步请求无法响应header重定向的原因。
如果你的项目中在其他地方已经获取到openid那这部分就不存在问题了

第一个坑的结果:如果前端是异步请求数据的话,openid不能和统一下单写在一起~openid需要做一次重定向来获取。
坑二: 生成统一订单

生成统一订单参数要严格对照 参数文档的参数写,example文件夹的例子中有写好的组装参数方法,可以直接调用没有太大问题,但是要注意的有以下几点

严格 大小写

参数必须是 字符串

附加参数attach值的最大长度是127

前端接收到参数后,必须组成对象写到WeixinJSBridge.invokegetBrandWCPayRequest请求中,注意是对象!!!对象!!!对象!!! 我跟前端开发沟通的过程中前端就把参数转成字符串写到getBrandWCPayRequest里面了,我加班好久查资料最后才发现是这里的问题

在这一步会遇到以下报错:

支付缺少参数:appId (因为整个参数组不是一个对象所以报错)

chooseWXPay:fail (不能在开发者工具上调试微信支付,在工具上会报这个错误。其实去网上查的一大堆资料都说的解决都是在说这个原因)

这个坑的问题就在于:各种参数要对照文档写好而且格式正确。
坑三:支付成功回调

支付回调的例子里面有重写NotifyProcess的方法,如果你要另外写业务可以吧notify.php写成一个文件然后再写另外的回调接口来请求这个类。
我这边的话就重写了一下方法返回回调数据。
回调的坑在于你回调业务处理完了之后要在最后加上以下:

return "";

否则的话微信没有收到你的回调成功返回,会不断重复回调5次然后停止,如果回调中写了业务那就会重复操作了。

这个坑就是:要注意回调结束要返回成功的xml响应
END
这几天做微信支付暂时遇到的问题就这么多,只能说注意细节吧,爬过的坑记录下来以后遇到就懂处理了。
哦,还有微信支付的相关问题网上能搜到很多...但是不一定跟自己遇到的能匹配上,而且大部分都是很久的了....
这个略坑

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26320.html

相关文章

  • PHP实现支付宝小程序用户授权的工具类

    摘要:背景最近项目需要上线支付宝小程序,同时需要走用户的授权流程完成用户信息的存储,以前做过微信小程序的开发,本以为实现授权的过程是很简单的事情,但是再实现的过程中还是遇到了不少的坑,因此记录一下实现的过程学到的知识支付宝开放接口的调用模式以及实 背景 最近项目需要上线支付宝小程序,同时需要走用户的授权流程完成用户信息的存储,以前做过微信小程序的开发,本以为实现授权的过程是很简单的事情,但是...

    weapon 评论0 收藏0
  • 使用vue开发微信公众号下SPA站点的填坑之旅

    摘要:原文见我的博客,点击进入使用开发微信公众号下站点的填坑之旅本文为我创业过程中,开发项目的填坑之旅。作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱。 原文见我的博客,点击进入使用vue开发微信公众号下SPA站点的填坑之旅 本文为我创业过程中,开发项目的填坑之旅。作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱^_^。 ...

    yeyan1996 评论0 收藏0
  • 2016年终工作总结

    摘要:由于初版需求及开发工作都没有参与,在接手项目后过了遍前端结构发现所有交互及组件都是现撸,并未使用市面上已有的优秀前端框架从我个人角度理解上出发,后续需求变更中当需要实现某些常用组件样式或交互时,基本上都需要现撸或者寻找合适的组件。 2016悄无声息的过去了,再过不久便是农历新年 这几天相对清闲梳理了一下去年所做的工作,希望在新的一年能发展的更好 今年一共研发或升级了五款产品:合伙人、夺...

    hoohack 评论0 收藏0
  • 精彩文章大合集- 收藏集 - 掘金

    摘要:发布应用市场的平台抢红包工具红包精灵开源啦掘金红包精灵,如果喜欢,点个开源不易。作者将原素材文章进行了新内容的添加和重新排列,但是因为文章高效的代码编写技巧总结前端掘金本文总结了代码编写技巧,来提升你的和代码。 收藏安卓开发中非常实用优秀的库! 有图有真相! - Android - 掘金本来是打算收藏工具类的,但转念一想,已经有这么多优秀的库了,就没必要再去重复造轮子了,便归纳工作中比...

    ermaoL 评论0 收藏0
  • 也许你并不需要第三方小程序框架

    摘要:所以在小程序出现之后,一股框架之风也很快的出现,微信小程序刚推出之后,就出现了两个比较出名的小程序开发框架,。 原文地址:https://ant-move.github.io/we... 这里说的去除小程序框架其实并不严谨,因为小程序本身也算是一个框架,而且是一个功能更加完善的框架系统。在前端的概念中,我们一般说一个框架是指一个用来帮助开发者构建用户界面的框架,而小程序框架本身不仅仅包...

    red_bricks 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<