微信支付分,APIv3版本接口对接过程(附代码)

刚对接完微信支付分,对接过程还是有点小坑,微信官方的接口文档写的比较粗略,代码示例比较少,网上的相关技术博客少之又少,前期还是有点小困难的,所以决定把对接过程梳理一下,希望能帮到需要的人。

APIv3版本的接口和之前的API接口有几个重要的区别:

1.使用JSON作为数据交互的格式,不再使用XML

2.使用基于非对称密钥的SHA256-RSA的数字签名算法,不再使用MD5或HMAC-SHA256

3.使用AES-256-GCM,对回调中的关键信息进行加密保护

一、请求签名

所有请求微信方的接口都要使用SHA256-RSA签名算法,生成签名。签名需要用到商户的API证书,在获取商户的API证书之前需要对API证书进行升级。签名过程还会用到商户API证书序列号serial_no和商户号。构造签名串的过程描述可以查看微信文档,生成签名

生成签名代码如下:

//method(请求类型GET、POST url(请求url) body(请求body,GET请求时body传"",POST请求时body为请求参数的json串)  merchantId(商户号) certSerialNo(API证书序列号) keyPath(API证书路径)
public static String getToken(String method,String url, String body,String merchantId,String certSerialNo,String keyPath) throws Exception {
		String signStr = "";
		HttpUrl httpurl = HttpUrl.parse(url);
		String nonceStr = getNonceStr();
	    long timestamp = System.currentTimeMillis() / 1000;
	    if(StringUtils.isEmpty(body)){
	    	body = "";
	    }
	    String message = buildMessage(method, httpurl, timestamp, nonceStr, body);
	    String signature = sign(message.getBytes("utf-8"),keyPath);
    	signStr = "mchid=\"" + merchantId 
  	  	      + "\",nonce_str=\"" + nonceStr 
  	  	      + "\",timestamp=\"" + timestamp 
  	  	      + "\",serial_no=\"" + certSerialNo
  	  	      + "\",signature=\"" + signature + "\"";
	    logger.info("Authorization Token:" +signStr);
	    return signStr;
	}

public static S
  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 42
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值