银联商务天满服务平台
Java PHP Python



import com.chinaums.open.api.OpenApiCache;
import com.chinaums.open.api.OpenApiContext;
import com.chinaums.open.api.constants.ConfigBean;
import com.chinaums.open.api.internal.util.http.HttpTransport;
import java.util.UUID;

public class OpenApiSdkTest {
    public static void main(String[] args) throws Exception{
        String url = "/v1/datacenter/smartverification/encrypted/bankcard/verify";
        //开发者ID
        String appId = "平台分配";
        //开发者秘钥
        String appKey = "平台分配";
        //实例化客户端
        ConfigBean configBean = new ConfigBean();
        OpenApiContext context = new OpenApiContext();
        String request = "{\"data\":\"\"}";
        context.setStartTime(System.currentTimeMillis());
        context.setRequestId(UUID.randomUUID().toString().replace("-", ""));
        context.setOpenServUrl(url.split("/v")[0].concat("/"));
        context.setApiServiceUrl(url);
        context.setVersion(url.split("/")[3]);
        context.setAppId(appId);
        context.setAppKey(appKey);
        context.setConfigBean(configBean);
        context.setServiceCode(url.split("/v")[1].substring(1));
        OpenApiCache.getCurrentToken(context);
        System.out.println(HttpTransport.getInstance().doPost(context, request));
    }
}
<?php
require_once "../utils/Log.php";
require_once "../utils/Tools.php";
require_once "../DefaultOpenApiClient.php";
class DataRequest

{
    public $url = "";
    public $serviceCode = "";
    public $apiVersion ="";
    public $needToken = true;
    public $needDataTag = false;
    public $data;

    function __construct($data, $url)
    {
        $this->data = $data;
        $apiVersion = preg_split("/[/]+/s",$url)[2];
        $this->apiVersion = $apiVersion;
        $serviceCode = strstr($url,$apiVersion);
        $this->url = strstr($url,"/".$apiVersion,true);
        $this->serviceCode = preg_replace("/^" . preg_quote($apiVersion, "/") . "/", "", $serviceCode);
    }
}

class DataDemo{
    public function main(){
        $appid = "平台分配";
        $appkey = "平台分配";
        $url = "/v1/datacenter/smartverification/encrypted/bankcard/verify";
        $data = json_encode(array("data"=>""));
        $reqiest = new DataRequest($data,$url);
        $client = new DefaultOpenApiClient();
        $content = $client->execute($reqiest,$appid,$appkey);
        $obj = json_decode($content);
        print_r($obj->errCode);
        print_r($obj->errInfo);
    }
}
$p = new DataDemo();
$p->main();
?>
# -*- coding: utf-8 -*-
from webapi.DefaultOpenApiClient import DefaultOpenApiClient

url = "/v1/datacenter/smartverification/encrypted/bankcard/verify"

class DataRequest(object):
    def __init__(self, data: dict) -> dict:
        self.data = data
        self.serviceCode = url[len(url.split("/v")[0])+len(url.split("/")[3])+1: len(url)]
        self.apiVersion = url.split("/")[3]
        self.needToken = True
        self.needDataTag = True

appId="平台分配"
appKey="平台分配"
client = DefaultOpenApiClient(appId, appKey)
cls = DataRequest({\"data\":\"\"})
response = client.execute(cls)
print(str(response.get("data")))
print(response.get("errCode"))
print(response.get("errInfo"))
print(response.get("resultCode"))
print(response.get("resultInfo"))

银行卡实名验证

URL

  • 生产环境: POST https://api-mop.chinaums.com/v1/datacenter/smartverification/encrypted/bankcard/verify

描述:验证银行卡卡号、姓名、身份证号、手机号是否一致,支持借记卡和贷记卡。支持的验证类型包括: 卡号+身份证号 卡号+手机号码 卡号+姓名 卡号+身份证号+手机号码 卡号+身份证号+姓名 卡号+手机号码+姓名 卡号+手机号码+姓名+身份证号

ContentType:HTTP(S) + JSON

请求头

名称 必填 描述 示例值
Authorization 认证内容
Content-Type application/json;charset=utf-8-Type

请求参数

名称 类型 必填 最大长度 描述 示例值
data stringObject 对下面转换的Json字符串({"cardNo":"",...,"protocolNo":""})用SM2公钥进行加密,然后对加密后的报文用base64编码。 注意:后面的参数在入参中并不是和data平级,而是加密后存放在data中
   cardNo string 30 卡号
   personalMandate string 1 是否取得个人授权,字段取值0或1。 1:是 0:否
   sceneId string 2 正确上送实名验证业务场景,取值范围如下: 1:汽车销售 2:汽车租赁 3:房产中介 4:车贷 5:房贷 6:消费贷 7:现金贷 8:其他银行贷款 9:P2P 10:保理 11:信托 12:政务服务 13:车险 14:财产险 15:养老险 16:健康险 17:寿险 18:银行理财 19:互联网理财 20:基金理财 21:证券开户 22:融资租赁 23:物业 24:线上开户
   certType string 2 证件类型:证件号和证件类型必须两个同时输入或者两个都不输。
   certNo string 32 证件号码。证件号必须与证件类型相一致 证件号和证件类型必须两个同时输入或者两个都不输。 证件号、证件姓名、卡关联手机号三个要素至少填一项。
   name string 64 证件姓名。UTF-8编码,不超过64位 证件号、证件姓名、卡关联手机号三个要素至少填一项
   appName string - 用户申请开户时发起交易所用的应用程序(或渠道)名称,该域由发起应用类型、具体应用名称两部分组成,格式为“发起应用类型”(ans2)+“具体应用名称”(ans..38(LLVAR))。其中: 1、发起应用“类型”为2字节,取值及含义如下: 00:缺省渠道 01:手机APP 02:网上银行软件版 03:网上银行网页版 04:小程序 05:公众号 2、“具体应用名称”为发起应用程序或渠道对用户外展示的名称,最长38字节。 例如:用户在某某商业银行的APP(APP名称为“某某银行直销银行”)中申请开户,并发起验证请求时,该域填写为“01某某银行直销银行”
   ipType string - ip版本号。04:IPV4 06:IPV6
   sourceIp string - 采集持卡人支付时IP地址,兼容IPV4和IPV6 IPV4 sample:... (格式要求:点分十进制 例如:173.016.035.002) IPV6 sample:::::::: (格式要求:冒号分十六进制 例如:AD80:0000:0000:0000:ABAA:0000:00C2:0002)
   lbs string 32 经纬度,格式为纬度/经度,+表示北纬、东经,-表示南纬、西经,纬度取值[-90,90],经度取值[-180,180]。举例:+37.12/-121.23或者+37/-121
   deviceId string 40 设备标识
   fullDeviceNumber string 20 设备SIM卡号码
   simCardCount string 2 设备SIM卡数量。0:未插SIM卡 1:1张SIM卡 2:2张SIM卡 3:其他
   deviceType string 1 设备类型。1:手机 2:平板 3:手表 4:PC 5:其他
   deviceName string 64 设备型号名称。可以采集到的设备型号,如iPhone,Sagit(小米6),MT-TL00(华为Mate7)等
   macAddr string 17 交易报文中采集持卡人支付时使用设备的MAC地址 MAC sample:00-23-5A-15-99-42 格式要求:每2位之间用-连接
   phoneNo string 11 卡预留手机号。证件号、证件姓名、卡预留手机号三个要素至少填一项
   protocolVersion string 2 用户授权协议版本号
   protocolNo string 2 用户授权协议流水号
   userNo string 20 用户号

响应示例

{
  "errCode":"20000000 – 成功",
  "errInfo":"",
  "data":""
}

响应参数

名称 类型 必填 最大长度 描述 示例值
errCode string - 错误代码 20000000 – 成功
errInfo string - 错误说明
data stringObject 对返回加密报文用base64解码后,用SM2对应的私钥解密。客户端获取的返回报文中报文体data域解密使用业务人员为客户分配的SM2私钥进行解密。 注意:后面的参数在出参中并不是和data平级,而是需要从data中解密出来的
   sysJourId string - 当日唯一流水号
   dcType string - 银行卡的借贷标志 0:借记卡 1:贷记卡
   respCode string - 应答码
   respMsg string - 应答码描述
   detailRespCode string - 细分应答码
   detailRespMsg string - 细分应答码解释

错误码

错误码 错误描述 解决方案
00 验证一致 应答码
01 验证不一致 应答码
02 不支持验证 应答码
03 验证要素格式有误 应答码
04 系统异常 应答码
0000 验证一致 细分应答码
1302 发卡行响应超时,请稍后重试 细分应答码
1399 发卡行系统异常,请稍后重试 细分应答码
2208 渠道方系统异常,请稍后重试 细分应答码
2329 系统异常,请稍后重试 细分应答码
2325 发卡行返回该卡不支持验证,建议持卡人与发卡行联系 细分应答码
5106 该卡今日验证次数过多,请明日重试 细分应答码
2316 发卡行返回该卡状态不正常,建议持卡人与发卡行联系 细分应答码
2319 验证不一致 细分应答码
5000 未知商户,不予通过 细分应答码
5101 该卡交易过于频繁,请稍后重试 细分应答码
5102 该证件号交易过于频繁,请稍后重试 细分应答码
5103 该卡今日验证失败次数过多,请明日重试 细分应答码
5104 该证件号今日验证失败次数过多,请明日重试 细分应答码
5105 短期内有同卡重复交易,请稍后重试 细分应答码
5107 请取得个人授权 细分应答码
5108 当日验证次数已达最大值,请明日再试 细分应答码
5109 请正确上送实名验证业务场景 细分应答码
5110 风险要素缺失,请正确填写 细分应答码
2314 发卡行无此卡号 细分应答码
2320 发卡行返回该卡密码错次数超限,建议持卡人与发卡行联系 细分应答码
2344 发卡行返回该卡未预留手机号,建议持卡人与发卡行联系 细分应答码
2321 不支持发现卡验证交易 细分应答码
2334 发卡行返回该卡验证次数已超限,请明日再试 细分应答码
2346 建行卡不支持卡号+手机号两要素组合验证 细分应答码
2347 发卡行不支持该三要素组合验证 细分应答码
4001 无效卡 细分应答码
4002 无效证件类型 细分应答码
4003 无效证件号 细分应答码
4004 无效手机号 细分应答码
4005 无效姓名 细分应答码
4006 多种要素格式错误 细分应答码
4007 风险要素信息格式错误 细分应答码