【芝麻信用对接】-decode_private_key_error

一背景:

 产品提出能否对接芝麻信用,获取征信情况。给了个账号登录芝麻信用网站。

二 申请应用

申请应用有两个必填项:回调地址,跟公钥。

环境配置

这里网站上环境配置教程。:

我本地开发是windows环境,所以先下载OpenSSL。

这里网上有两种教程,1最简单,下载Windows版本的就行:链接:http://slproweb.com/products/Win32OpenSSL.html

根据自己情况选择对应版本 就行,推荐稳定版:Win64 OpenSSL v1.1.0f

第2种需要自己下载Perl手动编译。太麻烦了不是重点。所以没有试,感兴趣的可以自己尝试下

生成公钥

C:\Users\Hammer>cd C:\OpenSSL-Win32\bin %进入 OpenSSL 安装目录%
C:\OpenSSL-Win32\bin>openssl.exe %进入 OpenSSL 程序%
OpenSSL> genrsa -out rsa_private_key.pem 1024 %生成私钥%
OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out rsa_private_key_pkcs8.pem %备注:Java 开发者需要将私钥转换成 PKCS8 格式%
OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem %生成公钥%
OpenSSL> exit  %退出 OpenSSL 程序%


注意:对于使用 Java 和 .NET 的开发者,将 pkcs8 在 console 中输出的私钥去除头行、尾行、回车换行和空格,作为开发者私钥,对于 PHP 的开发者来说,无需进行 pkcs8 命令行操作。

经过以上步骤,开发者可以在当前文件夹中(Windows 用户在 C:\OpenSSL-Win32\bin)看到 rsa_private_key.pem和 rsa_public_key.pem 两个文件,前者为私钥,后者为公钥。开发者将私钥保留,将公钥提交给支付宝网关,用于信息加密及解密。以下为使用 OpenSSL 生成的私钥文件和公钥文件示例

这里把公钥贴进去,因为是快速验证性质的,所以回调地址写个空串,过了校验。

三 验证接口:

import com.antgroup.zmxy.openplatform.api.DefaultZhimaClient;
import com.antgroup.zmxy.openplatform.api.FileItem;
import com.antgroup.zmxy.openplatform.api.ZhimaApiException;
import com.antgroup.zmxy.openplatform.api.request.ZhimaCreditWatchlistiiGetRequest;
import com.antgroup.zmxy.openplatform.api.response.ZhimaCreditWatchlistiiGetResponse;

public class TestZhimaCreditWatchlistiiGet {
    //芝麻开放平台地址
    private String gatewayUrl     = "https://zmopenapi.zmxy.com.cn/openapi.do";
    //商户应用 Id
    private String appId          = "***";
    //商户 RSA 私钥
    private String privateKey     = "***";
    //芝麻 RSA 公钥
    private String zhimaPublicKey = "***";

    public void  testZhimaCreditWatchlistiiGet() {
        ZhimaCreditWatchlistiiGetRequest req = new ZhimaCreditWatchlistiiGetRequest();
        req.setChannel("apppc");
        req.setPlatform("zmop");
        req.setProductCode("w1010100100000000022");// 必要参数 
        req.setTransactionId("20160101175625659000000000001");// 必要参数 
        req.setOpenId("268810000007909449496");// 必要参数 
        DefaultZhimaClient client = new DefaultZhimaClient(gatewayUrl, appId, privateKey, zhimaPublicKey);
        try {
            ZhimaCreditWatchlistiiGetResponse response = client.execute(req);
            System.out.println(response.isSuccess());
            System.out.println(response.getErrorCode());
            System.out.println(response.getErrorMessage());
        } catch (ZhimaApiException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        TestZhimaCreditWatchlistiiGet result = new  TestZhimaCreditWatchlistiiGet();
        result.testZhimaCreditWatchlistiiGet();
    }
}

这里替换下必要参数(私钥换成pcks8之后的,公钥用生成的),提示出问题了

ZMOP.decode_private_key_error

仔细看了下文档:


需要从这里复制公钥,这个公钥也是我们生成公钥之后pcks8的。

再试试:

看出来了,就是openID错误了,这个本来就是用了demo的。

验证了文档上说的,芝麻信用查用户征信第一步需要用户授权。根据授权后返回的openid 进行后续的查询。

************************************************

总结:跟PM反馈了情况,建议目前目标用户与芝麻信用交集不大的情况,不能作为主流程环节。

适合在APP端上加上H5的授权环节(非主流程),后续的可以通过接口根据openid来进行进一步查询。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值