第一次做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. UnsupportedClassVersionError: org/apache/maven/plugin/compiler/CompilerMojo : Unsupported major.minor version 51.0

    这篇博主说明了原因并给出了相应的解决方案!!! 博文连接如下: https://www.cnblogs.com/qiumingcheng/p/7151629.html

  2. 蓝牙协议分析(10)_BLE安全机制之LE Encryption

    1. 前言 前面文章介绍了两种BLE的安全机制:白名单[4]和LL privacy[3].说实话,在这危机四伏的年代,这两种“捂着脸讲话(其它人不知道是谁在讲话,因而不能插话.不能假传圣旨,但讲话的内 ...

  3. 剑指Offer 48. 不用加减乘除做加法 (其他)

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目地址 https://www.nowcoder.com/practice/59ac416b4b944300 ...

  4. Makefile 中 -rpath -rpath-link

    -rpath和-rpath-link 假设有3个文件,在同一目录下,有这样的依赖关系 test->liba.so->libd.so 如果编译test的时候这样写 gcc test.c –l ...

  5. Power Query Advanced Editor键盘快捷键

    当你点击阅读这篇文章,第一眼看到这首图,是不是不太明白?实际上是小悦对Power BI 功能的12月更新的部分功能很有兴趣,所以今天想用这张张首图作为例,延伸测试键盘快捷键的简单应用,还真别说,确实还 ...

  6. s21day12 python笔记

    s21day12 python笔记 一.函数中高级 1.1 函数可以做返回值 #示例: def func(): print(123) def bar(): return func v = bar() ...

  7. enumerate()使用

    enumerate()使用 如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写: list1 = ["这", "是", "一个", ...

  8. groovy学习知识

    (1)Groovy是一种基于JVM的敏捷开发语言,它结合了Python.Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码.它是一种 ...

  9. c# 数据存储过程

    什么是存储过程? 用某百科的话来说就是一堆为了完成某一功能或者某些功能的SQL语句的集合,而数据库则会将这些存储过程的方法存储到数据库中去. 优点: 1.可重用并且效率高:存储过程经过一次编译后不需要 ...

  10. 会话保持及Form表单

    1,cookie技术视图views里面:def index(request): #获取请求中的cookie num = request.COOKIES.get('num') if num: num = ...