目录
- 一、微信支付必须参数
- 二、应用程序中引入支付参数
- 三 、api字典概述
- 四、native 支付流程
- 五、内网穿透
一、微信支付必须参数
① 商务号(需要和服务号的 appid 进行绑定)
- 服务号是微信公众号的一种
- 服务号若想实现微信支付还需要企业认证
公众号和商务号绑定:
② AppId
③ 秘钥和证书
后续申请证书过程省略
二、应用程序中引入支付参数
apiclient_key.pem 加入应用程序中做签名
将请求进行签名,请求信息发送给微信的服务器端,微信服务端根据证书序列号找到对应的证书,证书中解密出公钥,公钥对请求进行验签
加载商户私钥文件
https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay6_0.shtml
https://github.com/wechatpay-apiv3/wechatpay-apache-httpclient
商户申请商户API证书时,会生成商户私钥,并保存在本地证书文件夹的文件apiclient_key.pem中。商户开发者可以使用方法PemUtil.loadPrivateKey()加载证书。
PrivateKey merchantPrivateKey = PemUtil.loadPrivateKey(
new FileInputStream("/path/to/apiclient_key.pem"));
PrivateKey merchantPrivateKey = PemUtil.loadPrivateKey(
new ByteArrayInputStream(privateKey.getBytes("utf-8")));
证书秘钥使用说明:
https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay3_0.shtml
代码:计算签名和验证签名
微信支付API v3的Apache HttpClient扩展,实现了请求签名的生成和应答签名的验证。
如果你是使用Apache HttpClient的商户开发者,可以使用它构造HttpClient。得到的HttpClient在执行请求时将自动携带身份认证信息,并检查应答的微信支付签名。
请求发送和获取响应:
定期更新平台证书,
商户要使用微信商务平台的公钥进行验签,验签需要公钥,。公钥不可在网络传播,只可通过证书进行传播。证书有有效期,{定时更新平台证书}
三 、api字典概述
https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay-1.shtml
https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_1.shtml
支付通知:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_5.shtml
谷歌 JSON 转换工具:
<!--json处理器-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
四、native 支付流程
native 调起支付:
https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_4.shtml
code_url 的有效期为2个小时,
支付成功后微信服务器会发送一个支付成功的通知给客户端和我们的服务器,我们也需要获得该通知,进而改变我们的数据库数据。
接收通知和反应应答
五、内网穿透
https://ngrok.com/ 使用你的 github 账号进行登录,亲测其他方式会报错。
链接:https://pan.baidu.com/s/1rQzv9AZF1HHcgefn6j9YLg
提取码:kpj5
如果无法下载,可下载上面百度网盘的。
1、授权:
ngrok authtoken 8CBwfdqgCxRzCDzhNRVoIphXSzs88_8zfCdfgjsayqpAXyBmErTNDRS
2、链接
ngrok http 80
应答超时和处理应答出现异常都会导致微信商务系统一直发请求
https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_5.shtml
对来自微信商务平台的请求的验签操作
微信商务平台的请求的参数是秘文,需进行解密操作(报文解密)
https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_5.shtml https://github.com/wechatpay-apiv3/wechatpay-apache-httpclient
数据锁
商户定时查单:当客户支付成功后,二维码消失