实名认证接入样例

1. 接口信息
REQUEST TYPE : post
REQUEST PARAM :
Param name:key\name\idcard
Param type : string
RESPONSE PARAM :
Param name:code\message\data\seqNo
RESPONSE PARAM data :
Param name:result
SUCCESS RESPONSE :
{
        "code": "10000",
        "message": "成功",
        "data": {
                "result": "1"
        },
        "seqNo": "------------------"
}
ERROR CODE :
Code value:10000 - 10020
2. 全系统错误码
Code value:SYSTEM_900 \ SYSTEM_999 \ SYSTEM_000 -- SYSTEM_048
3. 接口对接示例代码
3.1 sample code
import org.apache.http.HttpResponse ;
import org.apache.http.NameValuePair ;
import org.apache.http.client.config.RequestConfig ;
import org.apache.http.client.entity.UrlEncodedFormEntity ;
import org.apache.http.client.methods.HttpPost ;
import org.apache.http.impl.client.CloseableHttpClient ;
import org.apache.http.impl.client.HttpClients ;
import org.apache.http.message.BasicNameValuePair ;
import org.apache.http.util.EntityUtils ;
import java.util.ArrayList ;
import java.util.HashMap ;
import java.util.List ;
import java.util.Map ;
public class HttpUtil {
        public static void main (String[] args) {
//接口地址
        String url = "xxxxxxxxxx" ;
//请求参数
        Map, Object> params = new HashMap<>();
//输入 key
        params.put( "key" , "" ) ;
//输入局被查询账号
        params.put( "mobile" , "" ) ;
        String result = null;
        try {
                result = post(url , params) ;
        } catch (Exception e) {
                e.printStackTrace() ;
        }
        System. out .println( "result: \n " + result) ;
}
        public static String post (String url , Map, Object> params) throws Exception
{
                ArrayList pairs = covertParams2NVPS(params) ;
                return PostHttpRequest (url , pairs) ;
        }
        public static String PostHttpRequest (String Url , List params) throws
Exception {
                CloseableHttpClient client = HttpClients.createDefault() ;
//超时时间
                RequestConfig requestConfig = RequestConfig.custom()
                                .setSocketTimeout( 300000 )
                                .setConnectTimeout( 300000 )
                                .build() ;
                String result = null;
                try {
                        HttpPost request = new HttpPost(Url) ;
                        request.setConfig(requestConfig) ;
                        request.setEntity( new UrlEncodedFormEntity(params , "UTF-8" )) ;
                        HttpResponse respones = client.execute(request) ;
                        if (respones.getStatusLine().getStatusCode() == 200 ) {
                                result = EntityUtils.toString(respones.getEntity() , "UTF-8" ) ;
                        }
                } catch (Exception e) {
                        e.printStackTrace() ;
                } finally {
                        client.close() ;
                }
                return result ;
        }
        private static ArrayList covertParams2NVPS (Map, Object>
params) {
                ArrayList pairs = new ArrayList<>() ;
                if (params == null || params.size() == 0 ) {
                        return pairs ;
                }
                for (Map.Entry, Object> param : params.entrySet()) {
                        Object value = param.getValue() ;
                        if (value instanceof String[]) {
                                String[] values = (String[]) value ;
                                for (String v : values) {
                                        pairs.add( new BasicNameValuePair(param.getKey() , v)) ;
                                }
                        } else {
                                if (value instanceof Integer) {
                                        value = Integer.toString((Integer) value) ;
                                } else if (value instanceof Long) {
                                        value = Long.toString((Long) value) ;
                                }
                                pairs.add( new BasicNameValuePair(param.getKey() , (String) value)) ;
                        }
                }
                return pairs ;
        }
}
4. 加密对接说明
我们的加密方式使用 MD5 进行 sign 签名验证,以此来杜绝信息篡改的发生,同时
针对入参和出参内容进行对称加密( base64 编码)。以下具体讲解对接方式。
例: secretKey:lgJKiiakuplMXy4s
接口的入参和出参参数名无需使用 base64 编码,只是针对入参值和出参值使用密
码加解密。案例如下:
Url : http://api.chinadatapay.com/communication/personal/1896
RequestWay : Post
SecretKey : lgJKiiakuplMXy4s
Request Param:
name: key、name、idcard、mobile         
e.g
key=key 值
name=张三&idcard=34262319980123456&mobile=15058571234×tamp=12345678901
处理:
第一步、BASE64AES 加密入参 : 备注:key 字段不参与加密
name=a69V/TNqx/9cPTSjWq26QQ==&idcard=GxQ8ooj8Vhn7X3qDHNe2DxfSKoIMhpeszFLfoi3Sgek=&mobil
e=P5U2chrL933LhMIxuVg5Aw==
timestamp=lD5VSE5xkjgH88Sjl3FQSw==
第二步、sign 令牌获取 :
规则为入参按照 ACS 码排序,结果如下:
idcard=GxQ8ooj8Vhn7X3qDHNe2DxfSKoIMhpeszFLfoi3Sgek=&mobile=P5U2chrL933LhMIxuVg5Aw==&name
=a69V/TNqx/9cPTSjWq26QQ==×tamp=lD5VSE5xkjgH88Sjl3FQSw==
备注:key 字段不参与签名
sign=new BASE64Encoder().encode(md5(入参按照 ACS 码排序结果)) 获得入参
sign= 7c20PORFWywW6lZ6oYwAXQ==
第三步、开始发送请求 :
url:xxxxxxxxxx
requestWay:post
Request:
key=您购买的 API 的 key 值
name=a69V/TNqx/9cPTSjWq26QQ==&idcard=GxQ8ooj8Vhn7X3qDHNe2DxfSKoIMhpeszFLfoi3Sgek=&mobil
e= P5U2chrL933LhMIxuVg5Aw==×tamp=lD5VSE5xkjgH88Sjl3FQSw==
sign=7c20PORFWywW6lZ6oYwAXQ==
Response:
{
"code": "10000",
"message": "成功",
"data": "L58pwLVQ7L8ZarUV0gpCLA==",
"seqNo": "C03SX59Z1709071444"
}
data 值秘钥进行 BASE64AES 解密,解密结果如下: {"state": "1"}
9

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋燚炎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值