第一次做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方法,只要返回成功就跳转,没有结果不做任何操作,后台方法如下:

 
 

简易跳转就完成了,到此,微信扫码支付就算是完成了。

最新文章

  1. 安卓中AIDL的使用方法快速入门
  2. Eclipse中的文件导航插件StartExplorer
  3. PHP-Mysqli扩展库的预编译
  4. Python性能提升小技巧
  5. Android使用SAX解析XML(2)
  6. ACM - a + b Problem
  7. 修改 window.setTimeout,使之可以传递参数和对象参数
  8. Spring 注释 @Autowired 和@Resource 的区别
  9. docker note from UC blog
  10. Hive(五):hive与hbase整合
  11. php改写session到数据库
  12. ABP框架实战 1.基础信息维护
  13. Head First 设计模式 第3章 装饰者模式
  14. Geronimo tomcat: 在 Apache Geronimo 插件体系中将 Apache Tomcat 这个优秀的 Web 容器整合至其中
  15. js如何获取客户端IP
  16. 【BZOJ1483】【HNOI2009】梦幻布丁
  17. iftop流量监控工具
  18. 避免在构造函数中调用虚方法(Do not call overridable methods in constructors)
  19. p1654 OSU!
  20. CS229 笔记07

热门文章

  1. nginx下运行php的程序时返回200访问却是空白页问题的解决方法
  2. Kafka 术语
  3. Python全栈之路----函数进阶----迭代器
  4. git 本地分支和远程分支改名字
  5. 学习笔记TF042:TF.Learn、分布式Estimator、深度学习Estimator
  6. [转]Python依赖打包发布详细
  7. 【mybatis】之trim
  8. .NET自动化测试工具链:Selenium+NUnit+ExtentReport
  9. 理解Linux系统负荷load average
  10. firefox修改语言