支付宝新版支付接口Java后台签名

一、APP支付

支付宝更新了支付接口,同时也给出了服务端SDK供下载使用。该SDK提供了一系列的工具类和部分请求的实现。提供了一个AlipaySignature类来提供统一的签名工具类来帮助用户快速实现签名。在SDK下载的文档最后一个部分,提示用户在签名的时候使用

String AlipaySignature.rsaSign(Map params, String privateKey, String charset)

这个方法来做签名。

使用该SDK,首先需要构建一个AlipayClient,如果单纯只是使用了签名的功能,对AlipayClient这个对象的实例化并不是很必要。


要注意的是,这边初始化的时候,要提供APP_PRIVATE_KEY和ALIPAY_PUBLIC_KEY,这两个需要明确一下。APP_PRIVATE_KEY是由使用支付宝支付的用户自己生成的RSA私钥,用户使用该私钥对串进行加密,支付宝使用用户提交给支付宝的对应公钥来校验是否合法的请求。而ALIPAY_PUBLIC_KEY是支付宝生成的RSA密钥中的公钥,支付宝保留自己私钥,在自己内部服务器中对请求加密,用户使用支付宝的公钥来校验请求是否合法,在支付宝支付的回调和请求的返回时都需要使用支付宝提供的公钥来校验。

支付宝新版支付接口Java后台签名_第1张图片

这其中查看应用公钥就是用户自己生成的公钥,查看支付宝公钥就是支付宝提供的公钥。要记住,用户端加密过程中,使用的都是用户自己的私钥,而在接收到支付宝的返回请求时验签使用的都是支付宝提供的公钥。

加密的过程中,用户首先生成自己的请求Map数据,然后调用支付宝的rsaSign方法加密生成签名。之后需要按照申请支付请求参数说明中后部分所给出的方法对签名串和map中的数据组合成为一个字符串返回给客户端,客户端使用这个串来向支付宝发起支付。

需要注意的是,rsaSign签名使用的map数据,需要在map中加入sign_type=RSA这个key-value对。而在校验从支付宝回调回来的请求验签时又不需要sign_type这个键值对。

二、支付宝网页支付

支付宝提供的SDK中,网页支付是默认就有一套请求的实现的,对应的请求类是AlipayTradeWapPayRequest,在设置完成参数之后,调用alipayClient.executePage,就能够完成支付页面的生成,这个在支付宝的手机网站支付快速接入中已经有完整的调用流程,这种方法是通过将跳转页面输出到页面中来实现的。

你可能感兴趣的:(支付签名)