zoukankan      html  css  js  c++  java
  • 调用微信支付接口总结

         项目里面用到了微信支付的功能,照着文档学习了一下,这里做个总结来记录。项目用到的是anglusJS来做前端开发,我这边简化了,用的ajax进行异步的调用,然后业务也直接写在了控制层(不过不应该这么写的。。),应该是个简洁明了的模板,主要是让自己理解整个流程。

      1 关于在调用微信支付接口之前的一些准备工作,申请公众号,认证,拿到密钥等等操作就不概述了, 微信的在线支付文档中都有描述,这里贴出地址 :https://pay.weixin.qq.com/wiki/doc/api/index.html 

         然后,需要使用到的一些工具类的maven坐标:

              

              包括了一个微信的工具类,一个网络连接的工具类。

              

              二维码的生成插件

              注意要在页面引用!!

              

      2 大致的流程 :

        1)二维码的生成

        二维码支付的大致流程,个人理解是,访问到支付页面后,想后台发起一个请求,然后,在后台将各种参数封装成一个MAP,用原生方式或者工具类将MAP发送到微信的第一个接口 https://api.mch.weixin.qq.com/pay/unifiedorder。这里主要用来生成二维码!

        部分代码如下:

        首先,咱们到了要付款的页面了,jquery初始化页面的时候异步请求后台,这里传订单号过去.

        

        一些主要的参数,比如商户密钥写在外部的配置文件里面 然后@Value("${partnerkey}")这样注入。这里的notify_url参数是可以随便写的,但是必须写,我写的慕课网的地址。。。其他参数,在微信文档里面有介绍,哪些必须写的。

        

        然后 , 发送,发送方式不限,这里使用的是拷来的工具类。

        

        然后,获取结果,这里主要是code_url,用来生成二维码的东西。

        我这里用的是把这个结果封装成MAP然后使用了FASTJSON转化成JSON串发送到前台,比较简单,因为是AJAX的方式访问的。

        

        这样已经生成了。

        

         这里前台就接到了数据,在图一中的回调函数里面,拿到一个<img id='" qrious">的文档模型,这里会帮你生成二维码,但是一定要引入之前的插件!

          2)怎样去判断是否支付

        判断支付的大致流程,在二维码生成后去调用后台进行判断.

        在我图一的AJAX回调函数最后一排,调用了查询的函数,如下:

        

        而在后台,怎样去判断你是否支付了?

        后台写入一个死循环,循环调用微信支付另一个接口:https://api.mch.weixin.qq.com/pay/orderquery

        

        当然,需要sleep,不然调用太快会崩掉,这里他会每隔3S一直去调接口,当然是根据你前台传过来的订单编号去查询!

        我这里没有支付,所以控制台一直打印出订单未支付!

        

        如果支付成功的话,我想前台传递一个1.然后,在回调函数里面去判断,然后你就可以去做你想做的操作了,比如付款失败跳转到失败页面,成功的话转入后台更改订单状态!

        PS:这里设计到一个二维码超时的问题,这样程序会一直去调接口,线程会不断的增加,因此,加入一个变量X,当超过多少次时,跳出循环!

        大致的流程就是这样了,个人理解,新手写博客,欢迎指正!后续还会完善!共勉!

    心之所向 素履以往 生如逆旅 一苇以航!
  • 相关阅读:
    2014-04-23 总结
    14-5-13
    PHP
    14-5-8
    ajax
    14-5-6
    14-5-5
    PHP初解
    14-4-30
    14-4-29
  • 原文地址:https://www.cnblogs.com/mojito-ljq/p/8763253.html
Copyright © 2011-2022 走看看