SpringBoot整合微信支付(Native最详细)

一、微信支付产品介绍

1、付款码支付

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

2JSAPI支付

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

3、小程序支付

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

4Native支付

Native 支付是指商户展示支付二维码,用户再用微信 扫一扫 完成支付的模式。这种方式适用于 PC 网站。(本章重点介绍此功能接入)
特点:商家预先指定支付金额

5APP支付

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

6、刷脸支付

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

二、接入微信支付功能必备的必须条件

1、获取商户号(!!!必须是企业或者个体户)

微信商户平台: https://pay.weixin.qq.com/  
步骤:提交资料 => 签署协议 => 获取商户号

2、获取APPID

微信公众平台: https://mp.weixin.qq.com/
步骤:注册服务号 => 服务号认证 => 获取 APPID => 绑定商户号
不一定是服务号,已通过微信认证的服务号、政府或媒体类订阅号、小程序、企业微信、移动应用、网站应用都可以,还有微信小程序必须要企业营业执照认证。

3、获取APIv2秘钥

APIv2 版本的接口需要此秘钥
步骤:登录商户平台 => 选择 账户中心 => 安全中心 => API 安全 => 设置 API 密钥

4、获取APIv3秘钥

APIv3 版本的接口需要此秘钥
步骤:登录商户平台 => 选择 账户中心 => 安全中心 => API 安全 => 设置 APIv3 密钥
随机密码生成工具: https://suijimimashengcheng.bmcx.com/

5、申请商户API证书

APIv3 版本的所有接口都需要; APIv2 版本的高级接口需要(如:退款、企业红包、企业付款等)
步骤:登录商户平台 => 选择 账户中心 => 安全中心 => API 安全 => 申请 API 证书

6、获取微信平台证书

注意:以上所有API秘钥和证书需妥善保管防止泄露! 

三、支付安全(证书/密钥/签名)

1、信息安全的基础 - 机密性

明文: 加密前的消息叫 明文 plain text
密文: 加密后的文本叫 密文 cipher text
密钥: 只有掌握特殊 钥匙 的人,才能对加密的文本进行解密,这里的 钥匙 就叫做 密钥
key
“密钥”就是一个字符串,度量单位是“位”(bit),比如,密钥长度是 128,就是 16 字节的二
进制串
加密: 实现机密性最常用的手段是 加密 encrypt
按照密钥的使用方式,加密可以分为两大类:对称加密和非对称加密。
解密: 使用密钥还原明文的过程叫 解密 decrypt
加密算法: 加密解密的操作过程就是 加密算法
所有的加密算法都是公开的,而算法使用的“密钥”则必须保密

2、对称加密和非对称加密

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

3、身份认证

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

4、摘要算法(Digest Algorithm

摘要算法就是我们常说的散列函数、哈希函数( Hash Function ),它能够把任意长度的数据 压缩 成固定长度、而且独一无二的“ 摘要 字符串,就好像是给这段数据生成了一个数字 指纹
作用
保证信息的完整性
特性
  • 不可逆:只有算法,没有秘钥,只能加密,不能解密
  • 难题友好性:想要破解,只能暴力枚举
  • 发散性:只要对原文进行一点点改动,摘要就会发生剧烈变化
  • 抗碰撞性:原文不同,计算后的摘要也要不同
常见摘要算法
MD5 SHA1 SHA2 SHA224 SHA256 SHA384

5、数字签名

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

6、数字证书

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

7、微信APIv3证书

商户证书
商户 API 证书是指由商户申请的,包含商户的商户号、公司名称、公钥信息的证书。
微信支付平台证书是指由 微信支付 负责申请的,包含微信支付平台标识、公钥信息的证书。商户可以使用平台证书中的公钥进行验签。

8API密钥和APIv3密钥

都是对称加密需要使用的加密和解密密钥, 一定要保管好,不能泄露
APIv2 密钥对应 V2 版本的 API
APIv3 密钥对应 V3 版本的 API

四、在SpringBoot项目中导入微信支付功能

完整代码和详解请参考:https://gitee.com/BuLiangShuai01033/payment

猜你喜欢

转载自blog.csdn.net/yueyue763184/article/details/129624617