第一次做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对接微信支付采坑的更多相关文章

  1. Android对接微信支付体验

    在写正文之前我不得不吐槽一下:微信支付所提供的参考文档以及技术支持真心太烂了. 微信的坑: 1.在生成prepay_id向微信服务器传递参数时<body>不支持中文.需要对其进行转码,否则 ...

  2. vue 单页应用中微信支付的坑

    vue 单页应用中微信支付的坑 标签(空格分隔): 微信 支付 坑 vue 场景 在微信H5页面(使用 vue-router2 控制路由的 vue2 单页应用项目)中使用微信 jssdk 进行微信支付 ...

  3. Android—基于微信开放平台v3SDK,开发微信支付填坑。

    接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...

  4. java对接微信支付

    对接微信扫码支付(模式2),前端使用velocity技术 (1)调用微信支付接口(view层)  此部分业务逻辑部分可以省略 @RequestMapping("/wxpay.htm" ...

  5. python - 对接微信支付(PC)和 注意点

    注:本文仅提供 pc 端微信扫码支付(模式一)的示例代码. 关于对接过程中遇到的问题总结在本文最下方. 参考: 官方文档,    https://blog.csdn.net/lm_is_dc/arti ...

  6. url带#号,微信支付那些坑

    现在前端很多框架的前端路由都带#号,主要为了做到无刷新跳转页面. 在微信公众号做微信支付时,配置的支付路径比如是http://www.eee.com/#/order,在调微信支付的方法时错误信息是'U ...

  7. SpringBoot项目后台对接微信支付开发——微信统一下单接口开发

    开始没找到微信支付的sdk.自己根据官方给的接口文档纯手写,各种xml转JSON,JSON转xml,加密解密,签名....整个人都是崩溃的 开发的第三天,发现有官方的sdk.心情一下子豁然开朗,整个人 ...

  8. 对接微信支付使用HMAC-SHA256使用签名算法实现方式

    最近做微信押金支付对接,很多坑,心累!这里提醒一下各位: 首先,确保自己商户号进了白名单,没有需要联系客服,否则接口是调不通的,会一直提示参数错误 其次,确保接口文档是最新的,最好去官网去看,否则可能 ...

  9. iOS集成微信支付各种坑收录

    统一下单的参数要拼接成XML格式,使用AFN请求时要对参数转义,直接传入字典给AFN无法识别(这个接口微信demo中并没有提供示例) AFHTTPRequestOperationManager *ma ...

随机推荐

  1. format 插入一个字符,%d,%n

  2. 2019微软Power BI 每月功能更新系列——2月Power BI 新功能学习

    哈喽,小伙伴们,我是小悦悦,好久不见~ 春节假期结束,新一轮的工作开始,祝大家猪年如意,开工大吉! 今天小悦悦带你走入猪年学习的正确打开方式——Power BI新一年的持续更新学习!   Power ...

  3. Python学习笔记第二十六周(Django补充)

    一.基于jQuery的ajax实现(最底层方法:$.jax()) $.ajax( url: type:''POST“ ) $.get(url,[data],[callback],[type])  #c ...

  4. python 4

    一.列表相关操作 l = ['布偶猫', '小断腿', '大白'] # . append l.append('哎呀') print(l) # . insert l.insert(, '小猪佩琪') p ...

  5. python socket 函数介绍

    socket 函数原型:socket.socket([family[,type[,proto]]]) family参数取值(协议族): socket.AF_INET        -->ipv4 ...

  6. Xshell添加ssh隧道SOCKS代理

    Xshell是一个功能强大的终端模拟器,支持SSH,SFTP.TELNET.RLOGIN和SERIAL 下载地址:http://www.netsarang.com/products/xsh_overv ...

  7. uml类图符号

    符号及实例参照:http://www.blogjava.net/cnfree/archive/2012/10/30/390457.html https://blog.csdn.net/l_nan/ar ...

  8. linux(centos6.9)安装步骤

    http://blog.csdn.net/u012453843/article/details/52819756 https://mirrors.aliyun.com/ 下载想要的版本 2选择新建虚拟 ...

  9. Jenkins 配置 FindBugs,Checkstyle,PMD 实现代码的静态检查 (14)

    一.插件介绍 FindBugs:静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题.利用这个工具,就可以在不实际运行程序的情况对软件进行分析.它可以帮助改进代码的 ...

  10. List进行排序

    使用Java中提供的对集合进行操作的工具类Collections,其中的sort方法,重写比较方法 /** * 根据序号对列席人进行排序 * @param lxrUser * @return */ p ...