目录

  • 一、微信支付必须参数
  • 二、应用程序中引入支付参数
  • 三 、api字典概述
  • 四、native 支付流程
  • 五、内网穿透


一、微信支付必须参数

① 商务号(需要和服务号的 appid 进行绑定)

  • 服务号是微信公众号的一种
  • 服务号若想实现微信支付还需要企业认证

微信给每个人的公钥都一样吗_微信

公众号和商务号绑定:

微信给每个人的公钥都一样吗_微信_02

② AppId

微信给每个人的公钥都一样吗_java_03

③ 秘钥和证书

微信给每个人的公钥都一样吗_html_04


微信给每个人的公钥都一样吗_开发语言_05

微信给每个人的公钥都一样吗_微信_06


微信给每个人的公钥都一样吗_微信给每个人的公钥都一样吗_07


微信给每个人的公钥都一样吗_开发语言_08


后续申请证书过程省略

二、应用程序中引入支付参数

微信给每个人的公钥都一样吗_微信给每个人的公钥都一样吗_09


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

微信给每个人的公钥都一样吗_html_10

代码:计算签名和验证签名
微信支付API v3的Apache HttpClient扩展,实现了请求签名的生成和应答签名的验证。

如果你是使用Apache HttpClient的商户开发者,可以使用它构造HttpClient。得到的HttpClient在执行请求时将自动携带身份认证信息,并检查应答的微信支付签名。

请求发送和获取响应:

微信给每个人的公钥都一样吗_java_11


定期更新平台证书,

商户要使用微信商务平台的公钥进行验签,验签需要公钥,。公钥不可在网络传播,只可通过证书进行传播。证书有有效期,{定时更新平台证书}

三 、api字典概述

微信给每个人的公钥都一样吗_开发语言_12


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

微信给每个人的公钥都一样吗_java_13

微信给每个人的公钥都一样吗_微信给每个人的公钥都一样吗_14

code_url 的有效期为2个小时,

支付成功后微信服务器会发送一个支付成功的通知给客户端和我们的服务器,我们也需要获得该通知,进而改变我们的数据库数据。

接收通知和反应应答

微信给每个人的公钥都一样吗_java_15

五、内网穿透

https://ngrok.com/ 使用你的 github 账号进行登录,亲测其他方式会报错。

https://github.com/

微信给每个人的公钥都一样吗_微信_16

链接:https://pan.baidu.com/s/1rQzv9AZF1HHcgefn6j9YLg 
提取码:kpj5

如果无法下载,可下载上面百度网盘的。

微信给每个人的公钥都一样吗_html_17


1、授权:

ngrok authtoken 8CBwfdqgCxRzCDzhNRVoIphXSzs88_8zfCdfgjsayqpAXyBmErTNDRS

微信给每个人的公钥都一样吗_开发语言_18

2、链接

ngrok http 80

微信给每个人的公钥都一样吗_微信_19

应答超时和处理应答出现异常都会导致微信商务系统一直发请求

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

微信给每个人的公钥都一样吗_开发语言_20

数据锁

微信给每个人的公钥都一样吗_html_21


微信给每个人的公钥都一样吗_微信给每个人的公钥都一样吗_22


微信给每个人的公钥都一样吗_html_23

商户定时查单:当客户支付成功后,二维码消失