以下会分几个步骤讲一下我学习微信支付的过程,也是一部辛酸史,也是希望朋友们不要再次跌进坑里,节省时间。

1、公司需要

如标题一般,公司来了这么个需求,需要接入微信支付,那就必须搞定他了,相信大部分的小伙伴都是这样接触微信支付的吧。

首先我们需要明确一个需求,如果公司是做 App 支付,除了接入微信支付还需要接入支付宝、银联等第三方支付,那么就需要考虑几个问题,公司是选择自主开发还是借助第三方聚合支付(如Ping++),从成本等方面考虑,其实接入聚合支付也是一个不错的选择哦。

如果我们选择自主开发微信支付,那么问题就接踵而至,

什么是微信支付?
微信支付能做什么?
我们需要怎么实现它?
网络上是否有大神们写好的demo直接拿来即可?
微信官方是否提供了明确的文档?

上面的问题我们这个【浅析微信支付】都会将其一一解开,尽情期待!!!

2、翻车现场

明确了要做微信支付后,我们第一时间当然是去找微信官方文档咯,地址如下:
https://pay.weixin.qq.com/wiki/doc/api/index.html

现在小程序非常火,我们就拿小程序来举例子吧,进入小程序支付的开发文档页面:
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1
非常遗憾的是,微信的文档已知是给他们自己的程序员看的,如果是小白瞬间闯入,直接就是一脸懵,我到底该如何入手???黑人问号??嗯?

莫慌!其实微信支付套路也很简单,他们是将简单问题复杂化了,生怕开发者看不懂,文档写的非常的详细(围笑)导致咋们不知如何入手,从这里开始一直到支付的所有环节都如此,文档真正关键的地方模模糊糊,细节上确实非常细致了。

下面讲一下我是如何去学习微信支付的。

3、逼上梁山

绝对是逼上梁山的,简单讲,一个微信支付开发的流程如下:
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3

商户系统和微信支付系统主要交互:
1、小程序内调用登录接口,获取到用户的openid,api参见公共api【小程序登录API】
2、商户server调用支付统一下单,api参见公共api【统一下单API】
3、商户server调用再次签名,api参见公共api【再次签名】 4、商户server接收支付通知,api参见公共api【支付结果通知API】 5、商户server查询支付结果,api参见公共api【查询订单API】

上面几步中难点的在于第二步和第三步,中间会有一些坑,为何?举个例子,

微信支付接口文档中的参数有的是驼峰有的却是下划线但官方并没有强烈提示说明...
因为版本关系有些参数还会不一样...
对于再次签名所需要的参数和如何签名说的非常的简单,需要一再试错...
最大的问题是:对Java开发的支持并不怎么好,官方的 sdk demo 真的不能直接拿来就能用,真的就是个 demo...

没有经历过的朋友可能不太能体会这种感觉,真挺难受的;因为上面的问题无法解决只好手动百度+谷歌,然而问题来了,网上的文章同质化非常严重,往往点进去五篇文章,其中三篇都一毛一样啊,流泪...还有人出收费教程,这也是赚钱的好办法...

如上经历所以才有了这个系列的文章,当然最终我也在网络大神们的文章中筛选出了精华,实现了微信支付的大部分主体功能,足够满足常规的企业开发了。

4、初衷

这个系列的文章其实早就有写的想法了,因为在我解决问题的过程中,遇到很多同行抱怨非常痛苦,但是实在是懒+并没有打磨到拿来即用的地步,现在自我感觉也差不多了,所以分享给大家。

下面会贴出我整理的这个系列主要功能点,如下所示:

1.浅析微信支付:前篇大纲
2.微信支付简单介绍
3.开发前的准备
4.统一下单接口
5.支付结果通知
6.查询订单
7.关闭订单
8.申请退款
9.退款结果通知
10.查询退款
11.下载对账单
12.下载资金账单13.如何使用沙箱环境测试
14.支付验收指引
15.刷卡支付验收用例
16.扫码支付验收用例
17.公众号支付验收用例
18.免充值产品功能使用指引19.(余额提现)企业付款到零钱资金使用商户号余额资金
20.商户平台-现金红包-发放普通红包
21.商户平台-现金红包-查询红包记录22.商户平台-代金券或立减优惠-发放代金券
23.商户平台-代金券或立减优惠-查询代金券信息
24.商户平台-代金券或立减优惠-查询代金券批次25.公众平台-微信卡券-创建卡券
26.公众平台-微信卡券-HTML5线上发券(JS-SDK接口)
27.公众平台-微信卡券-查看卡券详情28.公众平台-社交立减金活动-概述
29.公众平台-社交立减金活动-开通产品权限
30.公众平台-社交立减金活动-完成免充值模式验收
31.公众平台-社交立减金活动-创建代金券并设置跳转小程序
32.公众平台-社交立减金活动-创建支付后领取立减金活动接口番外篇:
1.微信公众号网页授权
2.微信公众号模板消息发送
3.生成永久无限制微信小程序二维码
4.多个微信公众号同一商户平台的支付处理
5.微信退款时jdk更换安全包的处理
6.微信支付 MD5、HMACSHA256、SHA1、AES 加解密工具类

对于以上功能点的说明只会多不会少,可能其中还会穿插一些遇到的问题或异常处理,数据库和业务处理逻辑等等;

我也创建了一个微信群来提供给大家交流,一起共同进步吧。

结语

希望这个系列文章能给大家带来一些启发,帮助解决一些问题,与君共勉!!!

如果想要提前一览源码的小伙伴,可以先看看我的 github,地址如下:https://github.com/YClimb/wxpay-sdk/blob/master/README.md

转载于:https://www.cnblogs.com/powerwu/articles/10760390.html

浅析微信支付:1前篇大纲相关推荐

  1. 浅析微信支付:开发前的准备

    本文是[浅析微信支付]系列文章的第三篇,主要会讲一下在开发前的一些注意事项. 浅析微信支付系列已经更新两篇了哟-,没有看过的朋友们可以看一下. 浅析微信支付:前篇大纲 浅析微信支付:微信支付简单介绍( ...

  2. 浅析微信支付:微信支付简单介绍(小程序、公众号、App、H5)

    本文是[浅析微信支付]系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处. 上篇文章讲了本系列的大纲,没有看过的朋友们可以看一下. 浅析微信支付:前篇大纲 微信支付是集成在微信客户 ...

  3. 浅析微信支付:统一下单接口

    本文是[浅析微信支付]系列文章的第五篇,主要讲解如何调用统一下单接口生成预支付单及调起支付页面. 浅析微信支付系列已经更新四篇了哟-,没有看过的朋友们可以看一下哦. 浅析微信支付:微信公众号网页授权 ...

  4. 浅析微信支付:申请退款、退款回调接口、查询退款

    本文是[浅析微信支付]系列文章的第八篇,主要讲解商户如何处理微信申请退款.退款回调.查询退款接口,其中有一些坑的地方,会着重强调. 浅析微信支付系列已经更新七篇了哟-,没有看过的朋友们可以看一下哦. ...

  5. php微信商户下载对账单,浅析微信支付:下载对账单和资金账单

    本文是[浅析微信支付]系列文章的第九篇,主要讲解商户下载对账单接口和资金账单接口的实现和一些注意事项. 浅析微信支付系列已经更新九篇了哟-,没有看过的朋友们可以看一下哦. 在商户平台中,商家也可以下载 ...

  6. 浅析微信支付:支付结果通知

    本文是[浅析微信支付]系列文章的第六篇,主要讲解支付成功后,微信回调商户支付结果通知的处理. 浅析微信支付系列已经更新五篇了哟-,没有看过的朋友们可以看一下哦. 浅析微信支付:统一下单接口 浅析微信支 ...

  7. 浅析微信支付:开通社交立减金活动、创建立减金及领取使用的相关文档和源码

    本文是[浅析微信支付]系列文章的第十七篇,主要讲解在在微信平台中,如何创建优惠券,开通社交立减金,并为用户配置发送立减金. 上篇文章已经为大家讲解了如何在微信公众平台创建优惠券并为用户发券,这片文章是 ...

  8. 浅析微信支付:开通社交立减金活动、创建立减金及领取使用的相关文档和源码...

    本文是[浅析微信支付]系列文章的第十七篇,主要讲解在在微信平台中,如何创建优惠券,开通社交立减金,并为用户配置发送立减金. 上篇文章已经为大家讲解了如何在微信公众平台创建优惠券并为用户发券,这片文章是 ...

  9. 浅析微信支付:商户平台代金券或立减优惠开通、指定用户代金券发放、查询等

    本文是[浅析微信支付]系列文章的第十四篇,主要讲解在如何开通商户平台的代金券或立减优惠功能,商家向指定用户发送代金券,查询发送记录,代金券信息等. 浅析微信支付系列已经更新十四篇了哟-,没有看过的朋友 ...

最新文章

  1. UISeatchBar
  2. JVM:永久代 以及jdk1.8为什么将其移除?
  3. 排序算法:冒泡和快排 摘自网络
  4. AspNetCoreApi 跨域处理(CORS )
  5. SaaS系列介绍之十一: SaaS商业模式分析
  6. 一个学单片机的不错网站
  7. python3 x和python2 x区别_Python3.x和Python2.x的区别(转存参考)
  8. Sharding-Jdbc实现读写分离、分库分表,妙!
  9. 基于docker的spark-hadoop分布式集群之二: 环境测试
  10. np.prod() 函数计算数组元素乘积等
  11. InternalError: Blas GEMM launch failed : a.shape=(100, 784), b.shape=(784, 10), m=100, n=10...问题解决办法
  12. 丁火生于未月命理分析_丁火生于未月的性格特征
  13. 百度地图 自定义结果面板+分页+图层标注(标注点+搜索)
  14. java 二维码原理以及用java实现的二维码的生成、解码
  15. 国产办公计算机,国内第一台纯国产计算机在重庆下线,芯片、系统全是纯国产...
  16. 毕业设计-基于微信小程序的临沂旅游应用系统
  17. 怎么看待《百度清风算法3.0》?
  18. Windows使用SSH Secure Shell实现免密码登录Linux的方法以及使用scp2命令免密码下载文件
  19. 怎么做到new String(abc) == new String(abc)双等号为true呢?不是使用equals哦
  20. 【美股接口】新浪港股、美股行情接口

热门文章

  1. 使用原生js实现邮箱模糊查询的效果
  2. Web API-排他思想及其案例
  3. MediaMuxer的使用
  4. UHDTV (超高清电视)的色域与取样精度及格式
  5. gdb php-fpm,用gdb分析段错误(Segmentation fault)
  6. php 无法识别oci8,php 连接oracle 无法 启用oci8 解决办法 (摘自oracle官网)
  7. Springboot项目启动的三种方式
  8. gdp笔记本 linux,Ubuntu MATE 19.04和18.04.2现在可用于GPD Pocket和GDP Pocket 2
  9. android span的用法,android – 如何使用TextAppearanceSpan
  10. pcm 采样率转换_高速模数转换器 ADC 树立了实时监测和控制的标准