Java调用支付宝身份认证接口

支付宝官方文档地址:https://opendocs.alipay.com/apis/api_2/alipay.user.certify.open.initialize

<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
<dependency>
       <groupId>com.alipay.sdk</groupId>
       <artifactId>alipay-sdk-java</artifactId>
       <version>4.10.0.ALL</version>
</dependency>

初始化服务

    private static String PRIVATEKEY = "***";
    private static String PUBLICKEY = "***";
    private static String APPID = "***";
    private static String SERVICEURL = "https://openapi.alipay.com/gateway.do";

    /**
     * 第一步 组装参数 获取certifyId
     *
     * @throws AlipayApiException
     */
    public void init() throws AlipayApiException {

        AlipayClient alipayClient = new DefaultAlipayClient(SERVICEURL, APPID, PRIVATEKEY, "json", "UTF-8", PUBLICKEY, "RSA2");
        AlipayUserCertifyOpenInitializeRequest request = new AlipayUserCertifyOpenInitializeRequest();
        //构造身份信息json对象,身份类型,证件类型,真实姓名,证件号码,详细取值参考文档
        JSONObject identityObj = new JSONObject();
        identityObj.put("identity_type", "CERT_INFO");
        identityObj.put("cert_type", "IDENTITY_CARD");
        identityObj.put("cert_name", "姓名");
        identityObj.put("cert_no", "123456");
        //构造商户配置json对象
        JSONObject merchantConfigObj = new JSONObject();
        // 设置回调地址
        merchantConfigObj.put("return_url", "/回调地址");
        //构造身份认证初始化服务业务参数数据
        JSONObject bizContent = new JSONObject();\
        //商户请求的唯一标识,商户要保证其唯一性,值为32位长度的字母数字组合;建议:前面几位字符是商户自定义的简称,中间可以使用一段时间,后段可以使用一个随机或递增序列
        bizContent.put("outer_order_no", "ZGYD201809132323000001234");
        bizContent.put("biz_code", "FACE");
        bizContent.put("identity_param", identityObj);
        bizContent.put("merchant_config", merchantConfigObj);
        request.setBizContent(bizContent.toJSONString());
        System.out.println(bizContent.toJSONString());
        AlipayUserCertifyOpenInitializeResponse response = alipayClient.execute(request);
        System.out.println(request.toString());
        if (response.isSuccess()) {
            String certifyId = response.getCertifyId();
            System.out.println(certifyId);
        } else {
            System.out.println("获取certifyId失败");
        }
    }

部分值需要从文档中选取:身份认证初始化服务
根据初始化得到的certifyId获取url;

    /**
     * 根据certifyId获取url
     *
     * @param certifyId
     * @return
     * @throws AlipayApiException
     */
    public String getUrl(String certifyId) throws AlipayApiException {
        String url = "";
        AlipayClient alipayClient = new DefaultAlipayClient(SERVICEURL, APPID, PRIVATEKEY, "json", "UTF-8", PUBLICKEY, "RSA2");
        AlipayUserCertifyOpenCertifyRequest request = new AlipayUserCertifyOpenCertifyRequest();
        JSONObject bizContentObj = new JSONObject();
        bizContentObj.put("certify_id", certifyId);
        request.setBizContent(bizContentObj.toJSONString());
        AlipayUserCertifyOpenCertifyResponse response = alipayClient.pageExecute(request, "GET");
        if (response.isSuccess()) {
            url = response.getBody();
            System.out.println(url);
        }
        return url;
    }

进行认证(前端进行)

身份认证记录查询

    /**
     * 查询身份验证结果
     * @param certify_id
     * @throws AlipayApiException
     */
    public void query(String certifyId) throws AlipayApiException {
        AlipayClient alipayClient = new DefaultAlipayClient(SERVICEURL, APPID, PRIVATEKEY, "json", "UTF-8", PUBLICKEY, "RSA2");
        AlipayUserCertifyOpenQueryRequest request = new AlipayUserCertifyOpenQueryRequest();
        JSONObject bizContentObj = new JSONObject();
        bizContentObj.put("certify_id", certifyId);
        request.setBizContent(bizContentObj.toJSONString());
        AlipayUserCertifyOpenQueryResponse response = alipayClient.execute(request);
        if (response.isSuccess()) {
            System.out.println("调用成功");
            JSONObject body = JSONObject.parseObject(response.getBody());
            System.out.println(body.toString());
            String bodyString = body.getString("alipay_user_certify_open_query_response");
            JSONObject jsonObject = JSONObject.parseObject(bodyString);
            String passed = jsonObject.getString("passed");
            System.out.println(passed);
        } else {
            System.out.println("调用失败");
        }
    }

接口返回值中的body:{"alipay_user_certify_open_query_response":{"msg":"Success","code":"10000","material_info":"{}","passed":"F"},"sign":"******"}

通过response.getPassed()拿到的是空,可能jar包版本问题(没试其他版本);

不足之处,请多指教。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
要在Java调用支付支付接口,您可以使用支付开放平台的即时到账接口。首先,您需要在支付开放平台注册并获得相应的API密钥。接下来,您可以使用Spring MVC和MyBatis等框架进行开发。 具体的实现步骤如下: 1. 在您的Spring MVC项目中,使用支付开放平台提供的即时到账接口进行支付支付的集成。您可以使用支付提供的SDK或者API,根据文档中的指引进行配置和调用。 2. 在商品发起购买时,您可以调用支付接口,将用户的支付信息发送给支付,跳转到支付页面进行支付。 3. 支付会在用户完成支付后,通过回调通知您的系统支付状态的变更。您可以在接收到支付的回调通知后,更新订单状态或进行其他业务处理。 4. 您可以选择将支付功能单独封装为一个项目,然后在其他项目中调用支付接口,也可以将支付功能整合到您的项目中。为了方便维护,您可以将相关的类放到您的项目中,并引入相应的支付SDK或jar包。 总体来说,使用Java调用支付支付接口可以通过支付开放平台的即时到账接口实现,具体的实现步骤根据您的项目架构和需求可能会有所不同。但无论如何,您都需要注册支付开放平台账号并获取API密钥,然后根据支付提供的文档进行配置和调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值