微信支付
支付产品介绍
https://pay.weixin.qq.com/static/product/product_index.shtml#payment_product
1.1 付款码支付
用户展示微信钱包内的“付款码”给商家,商家扫描后直接完成支付,适用于线下面对面收银的场景。
1.2 JSAPI支付
线下场所:商户展示一个支付二维码,用户使用微信扫描二维码后,输入需要支付的金额,完成支 付。
公众号场景:用户在微信内进入商家公众号,打开某个页面,选择某个产品,完成支付。
PC网站场景:在网站中展示二维码,用户使用微信扫描二维码,输入需要支付的金额,完成支付。
特点:用户在客户端输入支付金额
1.3 小程序支付
在微信小程序平台内实现支付的功能。
1.4 Native支付
Native支付是指商户展示支付二维码,用户再用微信“扫一扫”完成支付的模式。这种方式适用于PC网 站。
特点:商家预先指定支付金额
1.5 APP支付 商户通过在移动端独立的APP应用程序中集成微信支付模块,完成支付。
1.6 刷脸支付
用户在刷脸设备前通过摄像头刷脸、识别身份后进行的一种支付方式
JSAPI支付 vs Native支付
JSAPI支付是由 用户 输入支付金额,Native支付是由 商家 生成支付金额。
商户管理后台首页
商户号:商户平台 >> 账户中心 >> 登录账号就是商户号
APPID:注册一个公众号:可以获取appid
API密钥:APIv2版本的接口需要此秘钥
APIv3密钥:APIv3版本的接口需要此秘钥
申请API证书:如果是V3接口,则所有接口中都需要有API证书
获取微信平台证书:可以预下载,可以变成获取。建议编程下载,因为微信平台证书会定期更换。
获取开发中的密钥和证书:
商户平台 >> 左侧的 API 安全 : API密钥(针对v2版本的密钥) APIv3密钥 API证书
参考文档:
https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_1.shtml
API证书:
获取微信平台证书:针对商户的证书,微信平台的API证书
所需参数:
商户号 appid api密钥 apiv3密钥 商户的证书
机密性
对称加密算法:
AES加密算法,密钥长度128、192或256,安全强度很高,性能很好 •
加密分组模式:将明文分组加密,微信支付中使用 AEAD_AES_256_GCM
非对称加密:
使用公钥加密后只能用私钥解密,反过来,私钥加密后也只能用公钥解密
RSA加密算法:最著名的非对称加密算法
MD5 SHA1 被证明不具有强的抗碰撞性,SHA2(SHA224 SHA256 SHA384)有强抗碰撞性
Bob 写完信后,使用摘要算法计算出摘要,然后使用私钥对摘要进行签名,将签名附加在信上。
Pat 收到信后,使用公钥对签名解密,得到摘要信息,然后对原文进行进行摘要运算,得到原文的摘要信息,然后比对两个摘要是否一致。
公钥加密,私钥解密的作用是加密信息
私钥加密,公钥解密的作用是身份认证
基础支付APIv3
支付参数:appid 商户号 api密钥 数字证书等
商户私钥:商户向微信平台发送请求时,需要使用私钥签名
微信平台证书:微信平台向商户发送请求,使用微信平台的私钥。微信平台的公钥从微信的数字证书中获取。
1 | <dependency> |
APIv3证书与密钥使用说明
API列表: