支付宝芝麻认证接口-扫码方式(芝麻认证接口与之类似)

今天在做支付宝芝麻实名认证,总结一下吧,争取一天记录一点 直到完事。
一、支付宝创建应用后会得到APP_ID、接着弄公钥、私钥以及前面方式(RSA、RSA2)。此处不多说。
二、开发
1、第一步初始化

AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);

https://img-blog.csdn.net/20170925235006766?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTQyOTU2MzAxMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这里没什么说的,SIGN_TYPE注意下与自己的配置一样就可以了。
2、初始化后获取biz_no,为下一步拿到认证URL使用

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
ZhimaCustomerCertificationInitializeRequest request = new ZhimaCustomerCertificationInitializeRequest();
 
String bizContent = "{"
        + "    \"transaction_id\":\"ZGYD201610252323000001234\","
        + "    \"product_code\":\"w1010100000000002978\","
        + "    \"biz_code\":\"FACE\","
        + "    \"identity_param\":\"{\\\"identity_type\\\":\\\"CERT_INFO\\\",\\\"cert_type\\\":\\\"IDENTITY_CARD\\\",\\\"cert_name\\\":\\\"收委\\\",\\\"cert_no\\\":\\\"260104197909275964\\\"}\","
        + "    \"ext_biz_param\":\"{}\"" + "  }";
request.setBizContent(bizContent);
 
ZhimaCustomerCertificationInitializeResponse response = alipayClient.execute(request);
if (response.isSuccess()) {
    System.out.println("调用成功");
} else {
    System.out.println("调用失败");
}

接口文档:

https://docs.open.alipay.com/api_8/zhima.customer.certification.initialize

这里要注意一下transaction_id,它是不能重复的
product_code固定值
cert_name要认证的客户姓名
cert_no要认证的客户身份证号码

此时会拿到biz_no。

3、开始认证

// 获取alipay client
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
ZhimaCustomerCertificationCertifyRequest request = new ZhimaCustomerCertificationCertifyRequest();

// 设置业务参数,必须要biz_no
request.setBizContent("{\"biz_no\":\"ZM201611103000000888800000733621\"}");

// 设置回调地址,必填. 如果需要直接在支付宝APP里面打开回调地址使用alipay协议
// alipay://www.taobao.com 或者 alipays://www.taobao.com,分别对应http和https请求
// 设置业务参数,必须要biz_no
request.setReturnUrl("alipays://www.taobao.com");

// 这里一定要使用GET模式
ZhimaCustomerCertificationCertifyResponse response = alipayClient.pageExecute(request, "GET");
// 从body中获取URL
String url = response.getBody();
System.out.println("generateCertifyUrl url:" + url);

return_url String 否 256 HTTP/HTTPS开头字符串

调用后会返回一个url,这个url比较长,直接做成二维码导致识别成功几率特别低
解决办法:在自己的应用中生成一个短的url,在业务上将此url与支付宝返回的url对应上,将自己生成的url做成二维码供用户扫描,之后跳转到支付宝返回的url即可。
这样解决还有一个好处:
能够获取到用户扫描二维码的时机,因为用户扫脸认证后不点击页面按钮“返回”的时候,我们的服务器是无法收到验证结果的回调的,所以在用户扫脸时,可以起一个定时器用来查询当前用户实名认证状态(官方是这么推荐的)。

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