支付体系(1)-微信支付的介绍和指南

728 阅读5分钟

最近我想实现下支付体系的整个流程,所以就针对微信支付,支付宝支付做了一个深入的研究。接下来,我会为大家把常见的这两种支付体系做一个梳理和实现,并为大家实现一套完整的代码。今天为大家先做下微信支付的一个介绍。

微信支付官网的API文档内容比较多,我为大家做一个简单地梳理。

1. 微信支付产品介绍

微信支付有很多种类,大致可以分为如下几种:

1.1、付款码支付

用户展示微信钱包内的“付款码”给商家,商家扫描后直接完成支付,适用于线下面对面收银的场景。

1.2、JSAPI支付

  • 线下场所:商户展示一个支付二维码,用户使用微信扫描二维码后,输入需要支付的金额,完成支付。
  • 公众号场景:用户在微信内进入商家公众号,打开某个页面,选择某个产品,完成支付。
  • PC网站场景:在网站中展示二维码,用户使用微信扫描二维码,输入需要支付的金额,完成支付。

特点:需要用户在客户端输入支付金额。

1.3、小程序支付

在微信小程序平台内实现支付的功能。

1.4、Native支付

Native支付是指商户展示支付二维码,用户再用微信“扫一扫”完成支付的模式。这种方式适用于PC网站。

特点:商家预先指定支付金额。

1.5、APP支付

商户通过在移动端独立的APP应用程序中集成微信支付模块,完成支付。

1.6、刷脸支付

用户在刷脸设备前通过摄像头刷脸、识别身份后进行的一种支付方式。

2. 接入指引

2.1、获取商户号

微信商户平台:pay.weixin.qq.com/ 场景:Native支付

步骤:提交资料 => 签署协议 => 获取商户号

2.2、获取APPID

微信公众平台:mp.weixin.qq.com/

步骤:注册服务号 => 服务号认证 => 获取APPID => 绑定商户号

2.3、获取API秘钥

APIv2版本的接口需要此秘钥

步骤:登录商户平台 => 选择 账户中心 => 安全中心 => API安全 => 设置API密钥

2.4、获取APIv3秘钥(推荐)

APIv3版本的接口需要此秘钥

步骤:登录商户平台 => 选择 账户中心 => 安全中心 => API安全 => 设置APIv3密钥

随机密码生成工具:suijimimashengcheng.bmcx.com/

2.5、申请商户API证书

APIv3版本的所有接口都需要;APIv2版本的高级接口需要(如:退款、企业红包、企业付款等)

步骤:登录商户平台 => 选择 账户中心 => 安全中心 => API安全 => 申请API证书

2.6、获取微信平台证书

可以预先下载,也可以通过编程的方式获取。

3. 证书/秘钥/签名介绍

在支付实现之前,我们需要了解这几个概念,因为后面的代码实现。很多都需要基于此来去做实现。

3.1 对称加密和非对称加密

  • 对称加密 特点:只使用一个密钥,密钥必须保密,常用的有 AES算法 优点:运算速度快 缺点:秘钥需要信息交换的双方共享,一旦被窃取,消息会被破解,无法做到安全的密钥交换
  • 非对称加密 特点:使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,常用的有 RSA 优点:黑客获取公钥无法破解密文,解决了密钥交换的问题 缺点:运算速度非常慢
  • 混合加密 实际场景中把对称加密和非对称加密结合起来使用。

3.2 身份认证

  • 公钥加密,私钥解密的作用是加密信息。
  • 私钥加密,公钥解密的作用是身份认证。

3.3 摘要算法

摘要算法就是我们常说的散列函数、哈希函数,它能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串。

  • 作用: 保证信息的完整性

  • 特性:

    • 不可逆:只有算法,没有秘钥,只能加密,不能解密
    • 难题友好性:想要破解,只能暴力枚举
    • 发散性:只要对原文进行一点点改动,摘要就会发生剧烈变化
    • 抗碰撞性:原文不同,计算后的摘要也要不同
  • 常见摘要算法: MD5、SHA1、SHA2(SHA224、SHA256、SHA384)

3.4 数字签名

数字签名是使用私钥对摘要加密生成签名,需要由公钥将签名解密后进行验证,实现身份认证和不可否认。

签名和验证签名的流程: 在这里插入图片描述

3.5 数字证书

数字证书解决“公钥的信任”问题,可以防止黑客伪造公钥。不能直接分发公钥,公钥的分发必须使用数字证书,数字证书由CA颁发。

举例https协议中的数字证书: 在这里插入图片描述

微信APIv3证书

回过头,我们再来说下微信的证书,分为两种:

商户证书:

商户API证书是指由商户申请的,包含商户的商户号、公司名称、公钥信息的证书。商户证书在商户后台申请:pay.weixin.qq.com/index.php/c… 在这里插入图片描述

平台证书(微信支付平台):

微信支付平台证书是指由微信支付 负责申请的,包含微信支付平台标识、公钥信息的证书。商户可以使用平台证书中的公钥进行验签。 平台证书的获取:pay.weixin.qq.com/wiki/doc/ap… 在这里插入图片描述

API密钥和APIv3密钥

都是对称加密需要使用的加密和解密密钥,API密钥对应V2版本的API,APIv3密钥对应V3版本的API