微信证书与API密钥
商户证书(微信侧使用):
商户在微信支付后台申请生成的商户证书,同时还会生成证书对应的私钥文件。微信会利用该证书对商户接口的通过私钥文件加密的请求参数进行验签。
微信证书(商户侧使用):
微信证书会周期性进行更新,商户需要手动去调用微信平台的证书下载接口下载。下载后才能利用证书对微信接口的请求参数进行验签。
API v3 密钥
商户在微信支付后台配置的密钥。例如在回调通知和平台证书下载接口中,微信对接口的关键数据使用该商户配置的密钥进行了对称加密,商户需要再次通过密钥进行解密。
微信支付的一些参数
- 商户API证书序列号 :商户申请的商户证书的序列号
- appid:例如小程序,不同的小程序间,每个小程序都一个自己的唯一id。
- openid:微信用户在不同小程序下的唯一id。
微信支付 v3 SDK
Github地址,封装了接口的加、验签,加、解密的所有操作。特别方便!几行代码就可以实现微信支付的调用。还有很多其他的 Demo:
- 自动定时更新微信证书的配置类 Demo(没错,不在需要我们自己手动调用微信证书下载接口。SDK 中帮助我们自动下载微信证书,并保存在内存中的配置类!)
- 根据不同 Trade(如 jsapi、app、native 等),通过构造该方式的对象,并通过方法的形式调用微信支付 Demo
- 退款相关的 Demo
退款异常 ABNORMAL 的场景
一般是用户侧有问题。比如退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败,可前往【商户平台—>交易中心】,手动处理此笔退款。
退款关闭 CLOSE 的场景
商户请求退款后,由于微信侧系统内部原因,导致退款订单异常,此时该订单处于处理中状态,7天后该订单会变为 CLOSE。同退款异常,需要商户在微信支付后台手动处理此笔退款(即最终也是没有退款成功)。
如何确定支付失败
支付失败只可以商户自行查询,并不会在支付回调中进行回调通知。需要商户系统实现一个支付对账的定时任务,将订单在微信的状态更新到商户系统的数据库中。
如何确定退款关闭
退款关闭的订单会被微信在 N 天后进行退款中 -> 退款关闭的状态更新。需要商户系统实现一个退款对账的定时任务,将订单在微信的状态更新到商户系统的数据库中。
支付回调与退款回调的差异
- 微信只有在支付成功时会调用商户的支付回调接口
- 微信在回调商户的退款回调接口时,不仅仅时退款成功的情况,退款异常也会进行回调。
同步、异步请求的差异
同步请求不一定能获取到最终结果,若没有最终结果,仍需要定期的再次发起同步请求获取最终的结果。但异步回调只要达到商户服务,就一定能拿到最终结果。
一般来说,在支付中,支付回调都是异步的,但是为了更严谨的处理,还需要搭配上定时同步调用对账接口,保证支付状态的正确性。