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 ...
随机推荐
- idea设置代码块
转:https://blog.csdn.net/boy_Kenny/article/details/55223078?utm_source=blogxgwz4 idea设置代码块 1.代码模板场景介绍 ...
- 使用flask框架实现web页面与数据库数据互联+常见的几种状态码
1.通过cygwin从pip install两个包:PyMySQL.SQLAlchemy: 2.在app.py中import我们要用到的库中的包:create_engine,text :from sq ...
- Windows下 安装Jenkins 并发布至docker 实战
网上的教程基本都是Linux系统下安装Jenkins,并且发布到Linux系统下的docker中, 于是打算在全部windows的环境中,完成Jenkins的持续集成功能. 环境: 服务器环境: wi ...
- 03bootstrap_表格
03bootstrap_表格 1.边框线表格:table,table-striped,table-bordered 2.紧缩表格:table table-hover table-condensed 文 ...
- 本文档教授大家在yii2.0里实现文件上传 首先我们来实现单文件上传
第一步 首先建立一个关于上传的model层 如果你有已经建好的可以使用表单小部件的model层 也可以直接用这个.在这里我们新建一个新的model层 在model层新建文件 Upload.php ...
- HTTP 各状态码大全
基本涵盖了所有问题 HTTP 400 – 请求无效 HTTP 401.1 – 未授权:登录失败 HTTP 401.2 – 未授权:服务器配置问题导致登录失败 HTTP 401.3 – ACL 禁止访问 ...
- SpringAOP 注解方式
Spring-service-mvc.xml <context:component-scan base-package="com.restful.controller,com.rest ...
- 第五节《Git基本操作》
我们给原来的数据打一个tag(标签),专业术语叫做“里程碑”,我们先不介绍里程碑的奥秘,只要知道里程碑无非也是一个引用而已. [root@git demo]# pwd/git/my/workspace ...
- kafka-producer partitioner.class的使用
partitioner.class的说明 在API客户端中封装好的partition( )方法会为消息选择一个分区编号.为了保证消息负载均衡到每个分区,可以通过使用默认方式或者 手动配置这个参数的 ...
- HTTP响应过程
完整的一次 HTTP 请求响应过程(一)http://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247484648&idx=1&am ...