PHP对接微信支付采坑
第一次做PHP商城项目对接微信支付接口,踩了N次坑,这也不对,那也不对,搞了很久,查了一些资料,终于实现了支付功能,小小总结一下,万一下次遇到就不用到处找资料了。
微信扫码支付
前期准备:
1、微信公众号配置,首先微信公众号上面要开通支付,并且要填写网页授权接口,填好之后呢,就是记录下公众号上的APPID、APPsecret,这两个是要使用到的,其他的还有token、 EncodingAESKey,这两个我没有使用过,暂时不知道是干什么用的(有可能在微信支付配置文件会使用到,不过我忘记了^_^);
2、微信商户号配置,公众号配置好以后,在公众号绑定商户号;之后就是配置商户号了,首先,要设置支付密钥,就是APPkey(这个是扫码支付的时候要使用的,请和公众号的APPsecret区分开来,不要搞混淆了,SDK配置文件注释也有说明);然后,就是配置域名啊,回调地址这些的,具体在商户平台都有说明,按照说明来配置就OK,
配置上大体就这些,第一次配置的时候比较尴尬的是,配置哪里都不知道,问了同事才摸索过来,也算是踩了坑了
3、接口对接,这个就比较麻烦一点,因为需要不断的在线上调试,直接上图
OK,统一下单完成之后,其他都不用管了,等待支付成功就OK了,其他支付操作都是SDK的事情,最后就是回调了,回调比较简单,上图:
完成!到这一步,微信那边的处理流程已经结束,剩下的就是回调之后,处理订单的业务逻辑了,
这个方法是SDKdemo里面的nativi_notify.php这个文件,这个文件继承了核心文件的WxPay.Notify.php这个文件,只需要把这个文件修改一下即可,不想复制修改,那么直接修改核心Notify文件,不过new对象就要newNotify的类了;
特别说明一下生成二维码,因为在调用支付接口的时候,返回的是一个支付链接,需要手动生成二维码使用微信客户端扫一扫才能支付,所以需要对返回的链接做处理,这里需要在前端页面的img标签的src属性里面以方法传参的形式来生成二维码:
如图,将后台返回的url地址作为参数,传递给qrcode方法,生成二维码即可,后台方法如下:
当然,二维码生成类库,需要自行下载第三方,或者时候微信SDK中的demo中的二维码生成类即可,此处使用的为微信SDK中自带的二维码类;
OK,当这些都完成以后,就会发现,支付也完成了,订单信息也更新了,但是,页面还是停留在二维码页面,这时候,就需要我们手动去跳转这个页面了,我这里是去本地数据库查询订单信息来判断订单是否完成来跳转页面,没有使用微信本身的订单接口来查询支付情况,因为只有订单完成支付才会去更新本地订单数据,所以效果是一样的,当然,实现就行,暂时没有考虑效率等等问题,>_<:
这里使用js去跳转,在二维码页面写上这个js,会定时请求后台query_state方法,只要返回成功就跳转,没有结果不做任何操作,后台方法如下:
简易跳转就完成了,到此,微信扫码支付就算是完成了。
PHP对接微信支付采坑的更多相关文章
- Android对接微信支付体验
在写正文之前我不得不吐槽一下:微信支付所提供的参考文档以及技术支持真心太烂了. 微信的坑: 1.在生成prepay_id向微信服务器传递参数时<body>不支持中文.需要对其进行转码,否则 ...
- vue 单页应用中微信支付的坑
vue 单页应用中微信支付的坑 标签(空格分隔): 微信 支付 坑 vue 场景 在微信H5页面(使用 vue-router2 控制路由的 vue2 单页应用项目)中使用微信 jssdk 进行微信支付 ...
- Android—基于微信开放平台v3SDK,开发微信支付填坑。
接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...
- java对接微信支付
对接微信扫码支付(模式2),前端使用velocity技术 (1)调用微信支付接口(view层) 此部分业务逻辑部分可以省略 @RequestMapping("/wxpay.htm" ...
- python - 对接微信支付(PC)和 注意点
注:本文仅提供 pc 端微信扫码支付(模式一)的示例代码. 关于对接过程中遇到的问题总结在本文最下方. 参考: 官方文档, https://blog.csdn.net/lm_is_dc/arti ...
- url带#号,微信支付那些坑
现在前端很多框架的前端路由都带#号,主要为了做到无刷新跳转页面. 在微信公众号做微信支付时,配置的支付路径比如是http://www.eee.com/#/order,在调微信支付的方法时错误信息是'U ...
- SpringBoot项目后台对接微信支付开发——微信统一下单接口开发
开始没找到微信支付的sdk.自己根据官方给的接口文档纯手写,各种xml转JSON,JSON转xml,加密解密,签名....整个人都是崩溃的 开发的第三天,发现有官方的sdk.心情一下子豁然开朗,整个人 ...
- 对接微信支付使用HMAC-SHA256使用签名算法实现方式
最近做微信押金支付对接,很多坑,心累!这里提醒一下各位: 首先,确保自己商户号进了白名单,没有需要联系客服,否则接口是调不通的,会一直提示参数错误 其次,确保接口文档是最新的,最好去官网去看,否则可能 ...
- iOS集成微信支付各种坑收录
统一下单的参数要拼接成XML格式,使用AFN请求时要对参数转义,直接传入字典给AFN无法识别(这个接口微信demo中并没有提供示例) AFHTTPRequestOperationManager *ma ...
随机推荐
- 自动化测试-9.selenium多窗口句柄的切换
前言 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了. 一.认识多窗 ...
- C# 注册机功能开发,机器码设计
前言 本文将使用一个NuGet公开的组件技术来实现机器码注册码功能开发,提供了一些简单的API,来方便的实现. 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet ...
- 2017-2018 ACM-ICPC NEERC B题Berland Army 拓扑排序+非常伤脑筋的要求
题目链接:http://codeforces.com/contest/883/problem/B There are n military men in the Berland army. Some ...
- 类Shiro权限校验框架的设计和实现
前言: 之前简单集成了springmvc和shiro用于后台管理平台的权限控制, 设计思路非常的优美, 而且编程确实非常的方便和简洁. 唯一的不足, 我觉得配置稍有些繁琐. 当时我有个小想法, 觉得可 ...
- mongo 使用find的返回值,转换为数组形式
$rs = $mongo->find(); var_dump(iterator_to_array($rs));
- PythonStudy——三种字符串 Three strings
# 普通字符串:u'以字符作为输出单位'print(u'abc') # 用于显示 # 二进制字符串:b'' 二进制字符串以字节作为输出单位print(b'abc') # 用于传输 # 原义字符串:r' ...
- linux(centos6.9)安装步骤
http://blog.csdn.net/u012453843/article/details/52819756 https://mirrors.aliyun.com/ 下载想要的版本 2选择新建虚拟 ...
- iOS兼容性(不断完善)
1.iOs不支持iframe,不支持flash,如果移动端要嵌入视频,请用html5 的video标签.
- Git和Svn对比
From: https://wenku.baidu.com/view/1f090e2e7275a417866fb84ae45c3b3567ecdd12.html Git和Svn对比 共享文档 ...
- 围绕Buganizer的产品流程
做技术的一定知道缺陷跟踪系统(bug系统),更不用说做测试的了,不过普遍都认为这系统是用来记录bug的,其实在google内部,这套系统是产品/项目围绕的核心.Google Buganizer扩展了类 ...