微信支付 java服务器签名流程,Java中的微信支付(1):API V3版本签名详解

微信支付 java服务器签名流程,Java中的微信支付(1):API V3版本签名详解_第1张图片

1. 前言

最近在折腾微信支付,证书还是比较烦人的,所以有必要分享一些经验,减少你在开发微信支付时的踩坑。目前微信支付的API已经发展到V3版本,采用了流行的Restful风格。

微信支付 java服务器签名流程,Java中的微信支付(1):API V3版本签名详解_第2张图片

今天来分享微信支付的难点——签名,虽然有很多好用的SDK但是如果你想深入了解微信支付还是需要了解一下的。

2. API证书

为了保证资金敏感数据的安全性,确保我们业务中的资金往来交易万无一失。目前微信支付第三方签发的权威的CA证书(API证书)中提供的私钥来进行签名。通过商户平台你可以设置并获取API证书。

微信支付 java服务器签名流程,Java中的微信支付(1):API V3版本签名详解_第3张图片

切记在第一次设置的时候会提示下载,后面就不再提供下载了,具体参考说明。

微信支付 java服务器签名流程,Java中的微信支付(1):API V3版本签名详解_第4张图片

设置后找到zip压缩包解压,里面有很多文件,对于JAVA开发来说只需要关注apiclient_cert.p12这个证书文件就行了,它包含了公私钥,我们需要把它放在服务端并利用Java解析.p12文件获取公钥私钥。

务必保证证书在服务器端的安全,它涉及到资金安全。

解析API证书

接下来就是证书的解析了,证书的解析有网上很多方法,这里我使用比较“正规”的方法来解析,利用JDK安全包的java.security.KeyStore来解析。

微信支付API证书使用了PKCS12算法,我们通过KeyStore来获取公私钥对的载体KeyPair以及证书序列号serialNumber,我封装了工具类:

import org.springframework.core.io.ClassPathResource;

import java.security.KeyPair;

import java.security.KeyStore;

import java.security.PrivateKey;

import java.security.PublicKey;

import java.security.cert.X509Certificate;

/**

* KeyPairFactory

*

* @author dax

* @since 13:41

**/

public class KeyPairFactory {

private KeyStore store;

private final Object lock = new Object(

你可能感兴趣的:(微信支付,java服务器签名流程)