因为现在的支付基本都使用支付宝微信了,刷脸也应用的越来越多,所以需要写一个对接支付宝刷脸支付的接口
支付宝刷脸主要提供了两种不同的接口,一个是生活类的刷脸接口,一个是支付类的刷脸接口
生活类的刷脸接口主要是配合一个查询的接口使用的,用户刷脸查询用户的基本信息,姓名、身份证号、手机号之类的;
支付类的刷脸接口则是用户刷脸直接授权支付进行扣费的接口;两个接口虽然后面的目的不太相同,但是开始的准备和所需的参数基本类似
一、刷脸支付的基本流程
1、首先要获取商户信息
商户必须是开通了刷脸支付权限的商户,在这一步的时候商户是需要进行第三方应用授权的,拿着服务商的appid,拼接一个URL,唤起授权页,商户的账号登录点击授权获取一个app_auth_code,之后使用app_auth_code换取app_auth_token,code的有效期是有时间限制的,token是一直不变的,后续的业务要进行,商户必须有token,拼接URL的代码如下:
public void oauthToHis() {
String alipayRedirectOauthUri ="restapi/smilePay/getAuthCode";
String alipayOauthurl = AlipayConfig.ALIPAY_OAUTHURL;//第三应用授权地址
String oauthToHis = "";
try {
oauthToHis = alipayOauthurl + "?" +
"app_id=" + URLEncoder.encode("APPID", "utf-8") +
"&redirect_uri=" + URLEncoder.encode(alipayRedirectOauthUri, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
System.out.println("编码错误");
}
System.out.println(oauthToHis);
}
商户授权后支付宝会带着code返回URL里面的回调地址,这时候用code换取token,代码如下:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
AlipayOpenAuthTokenAppRequest request = new AlipayOpenAuthTokenAppRequest();
request.setBizContent("{" +
" \"grant_type\":\"authorization_code\"," +
" \"code\":\"1cc19911172e4f8aaa509c8fb5d12F56\"" +
" }");
AlipayOpenAuthTokenAp