为微信开发填坑:微信网页支付的开发流程及填坑技巧

enter image description here

微信支付在整个微信体系中承担着相当重要的一个角色,甚至开辟了国内乃至世界独有的全民支付模式。现在大到商场超市,小到街边摊贩,都用到了微信支付,所以微信支付的开发只会越来越多,越来越应该成为每个开发人员需要掌握的一项经验,之所以没有说是技能,是因为微信开发本身并没有涉及到新的技术,只是按照微信官方给出的协议和接口,做了技术对接而已。

一旦提到技术对接,必然会涉及到文档、接口、参数这些双方交互规则。然而,不知道出于何种原因,微信支付这块的文档相当混乱,某些地方语焉不详,甚至demo也只是片段代码,想要从无到有的把微信支付打通有相当大的难度。难在于不知道从何下手。也正因为如此,网上有大量的教程文档来说明微信支付如何开发,但是要么只是寥寥几笔说下关键点,要么只是做个框架性的总结,目前为止,几乎没有从准备工作到支付打通的一个全面的文档。为了让后面做微信支付的朋友不再浪费大量的时间和精力,所以记录下这篇微信开发的实战教程。

为了方便大家开发是拿来参考,我会完全按照开发流程来记录微信网页支付的开发过程,主要从文档、接口、开发三个部分来说明。一篇文章很难解决所有问题,所以在文末,我会留下技术交流的方式,以便大家互相讨论。

文档

开发在接触到一个新的技术点的时候,最直接的做法就是查看官方文档。但是微信关于支付这块的文档有两套,关于网页支付这块有两个版本,这就无形中挖了很多坑,只能一遍一遍的试错和查资料才能避过。到目前为止官方也没有考虑整合优化一下这块的文档。

同时,网上不少趟过坑的网友也把自己的开发经历写成文档发布出来,这也是一个很大的帮助。

所以,整个过程,我用到的文档有三个

注意:只要研究透这三个文档,重点看我标注的地方就可以,这样就不用花大量的时间在网上搜索教程,并且很多教程要么语焉不详,要么错误百出,会造成误导,浪费更多的时间。(文档三也有一个错误,导致我浪费了半个下午的时间,后面我会提到。)

接口

整个支付过程中,需要用到的官方接口有三个:

  • 统一下单接口:

    https://api.mch.weixin.qq.com/pay/unifiedorder

    统一下单接口是微信支付的核心接口,主要是将订单信息发送给微信服务端,微信服务端将订单信息存储后,返回的参数中有一个参数prepay_id,这个参数就是当前订单在微信服务端的唯一标记,可以理解为主键ID。这也是我们调用这个接口,需要获取的主要参数。

  • 获取accessToken接口:

    String getTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + GlobalConstant.WXAPPID + "&secret=" + GlobalConstant.WXAPPSECRET;

    这个接口的作用很单一,就是获取accessToken参数,以备下一个参数使用。其中有两个请求参数,分别是微信公众平台的APPID和APPSECRET,在开发者模式下可以拿到,如下图:

enter image description here

  • 获取jsapi_ticket接口:

    String getTicketUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken + "&type=jsapi";

    这个接口的作用也是获取一个参数ticket,以备后面生成签名时用,请求参数accessToken已经通过上一个接口获得,所以可以直接获取目标参数ticket。

整个支付过程,需要跟微信服务端交互的官方接口,只有这三个,以上三个接口的具体使用场景,下面会详细讲到,这里只需要了解一下。

开发

整个开发流程如下:

流程图

基础配置

登录微信公众号后台,开通微信支付功能

申请

收藏 收藏
分享
购买文章 ¥20