更新记录:
2018-08-01:process_code枚举值增加09-未进行处理
2017-09-30:process_code枚举值增加02-关停账户
风险商户数据同步:
接口调用方式:商户调用支付宝API
API名称:alipay.security.risk.customerrisk.send
API应用场景说明:商户收到支付宝发送的商户风险交易推送后,调用该接口回传风险商户详细信息
【温馨提示】:
商户数据同步接口与商户风险交易推送接口为同一产品的两个不同接口,使用了风险交易推送服务的直连商户,必须后续回传推送交易的相关信息,以便支付宝与商户共同进行风险联防和风控能力优化。如没有按照同步接口文档中字段要求回传相关信息或回传信息后经稽核错误,支付宝将停止风险推送服务。
请求地址:
环境 | HTTPS请求地址 |
---|---|
正式环境 | https://openapi.alipay.com/gateway.do |
公共请求参数:
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
app_id | String | 是 | 32 | 支付宝分配给开发者的应用ID | 2014072300007148 |
method | String | 是 | 128 | 接口名称 | alipay.security.risk.customerrisk.send |
format | String | 否 | 40 | 仅支持JSON | JSON |
charset | String | 是 | 10 | 请求使用的编码格式,如utf-8,gbk,gb2312等 | utf-8 |
sign_type | String | 是 | 10 | 商户生成签名字符串所使用的签名算法类型,目前支持RSA/RSA2。推荐使用RSA2 | RSA2 |
sign | String | 是 | 1024 | 商户请求参数的签名串,详见签名 | 详见示例 |
timestamp | String | 是 | 19 | 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss" | 2014-07-24 03:07:50 |
version | String | 是 | 3 | 调用的接口版本,固定为:1.0 | 1.0 |
notify_url | String | 否 | 256 | 支付宝服务器主动通知商户服务器里指定的页面http/https路径。 | http://api.test.alipay.net/atinterface/receive_notify.htm |
app_auth_token | String | 否 | 40 | 详见应用授权概述 | |
biz_content | String | 是 | - | 请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档 |
|
参数 | 中文名称 | 类型 | 是否必回传项 | 最大长度 | 描述 | 示例值 |
plat_account | 平台账号 | string | 是 | 1024 | 指第三方在商户平台注册成功后,平台给予的账户号 | |
trade_no | 交易号 | string | 是 | 1024 | 支付宝推送的风险消息中的交易号 | 2017113021001004640000000000 |
pid | 合作者身份ID | string | 是 | 256 | 填写与trade_no对应的pid。2088开头的16位数字 | 2088123456789012 |
bank_card_no | 银行卡号 | string | 否 | 256 | 该账号对应的银行卡号 | 421234234234234000 |
cert_no | 身份证号 | string | 否 | 256 | 该账号对应的身份证号 | 150239198500000000 |
business_license_no | 营业执照号 | string | 否 | 1024 | 该账号对应的营业执照号 | 34xggdf345 |
mobile | 手机号 | string | 否 | 18 | 该账号对应的手机号 | 18667000000 |
mobile_ip | 手机号IP | string | 否 | 1024 | 该账号对应的手机号的IP | 10.253.231.22 |
order_ip | 下单IP | string | 否 | 1024 | 该账户在商户平台下单时的MAC地址或IP地址 | 00000000-01010000-10111010 |
logistics_no | 物流单号 | string | 否 | 1024 | 此订单对应的物流单号;如果一笔订单下有多笔物流单,且处理结果不一致时,请分开回传; | 61109387468324 |
merch_name | 商品名称 | string | 否 | 1024 | 该笔风险交易购买的具体商品名称; | xx商品 |
email_address | 邮箱地址 | string | 否 | 1024 | 该账户注册时填写的邮箱地址 | |
process_code | 处理结果 | string | 是 | 2 | 商户对该账户采取的措施。 多种处理结果可调用多次,每次回传一种处理结果。(01:暂停发货;02:延迟结算;03:关停账户;04:暂停发货+关停账户;05:延迟结算+关停账户;06:其他;07:平台进行退款退订;08:平台跟用户沟通后,用户撤诉;09:未进行处理。) |
01 |
响应参数:
参数 | 类型 | 是否必填 | 最大长度 | 描述 | 示例值 |
---|---|---|---|---|---|
code | String | 是 | - | 网关返回码 | 40004 |
msg | String | 是 | - | 网关返回码描述 | Business Failed |
sub_code | String | 否 | - | 业务返回码 | ACQ.TRADE_HAS_SUCCESS |
sub_msg | String | 否 | - | 业务返回码描述 | 交易已被支付 |
sign | String | 是 | - | 签名,详见文档 |
错误码:
错误码 | 返回样例 | 原因 |
MISSING_REQUIRED_ARGUMENTS | {success=false, result=null, errorCode='MISSING_REQUIRED_ARGUMENTS', errorMessage='缺少必选参数'} | smid或process_code为空 |
INVALID_PARAMETER | {success=false, result=null, errorCode='INVALID_PARAMETER', errorMessage='参数不合法'} | process_code不是两位数字 |
正确返回样例 | {success=true, result={"success":"true"}, errorCode='null', errorMessage='null'} |
SDK调用样例&返回数据样例
调用样例:
public static AlipaySecurityRiskCustomerriskSendResponse testRiskSend() throws AlipayApiException{ AlipaySecurityRiskCustomerriskSendRequest request = new AlipaySecurityRiskCustomerriskSendRequest(); //此处字段值是示例,实际调试时,按实际情况填写 String bizContent ="{\"plat_account\":\"659004198009128344\"," + "\"process_code\":\"01\"," + "\"bank_card_no\":\"421234234234234000\"," + "\"cert_no\":\"150239198500000000\"," + "\"merch_name\":\"xx商品\"," + "\"trade_no\":\"2017113021001004640000000000\"," + "\"business_license_no\":\"34xggdf345\"," + "\"mobile\":\"18667000000\"}"; request.setBizContent(bizContent); //秘钥、签名方式等,按实际情况填写即可,此处仅示例 AlipayClient alipayClient = new DefaultAlipayClient(serverUrl,APP_ID,APP_PRIVATE_KEY,"json",charset,ALIPAY_PUBLIC_KEY,"RSA2"); AlipaySecurityRiskCustomerriskSendResponse response = alipayClient.execute(request); return response; //联调时可以在这里加个输出看response内容返回:System.out.print(response.getBody()); }
如不使用sdk,在拼接请求连接时可参考以下样例: https://openapi.alipay.com/gateway.do?biz_content={"bank_card_no":"421234234234234000","business_license_no":"34xggdf345","cert_no":"659004198009128344","merch_name":"xx商品","mobile":"1359892324","plat_account":"659004198009128344","process_code":"01","trade_no":"2017113021001004640000000000"}&sign=W2Knayi2bKoV1eaLJ3N8meJmrDm8BH77G4749AbJxJIXaMJHN1ztEC7qHLEvXO6BNruSUm3aYyG6bCYZOlAAtsomqmBvLRtiivfvWQ2JKxNQ4iZTdM7EptfNrvt1+DqgKRHz7XMCkhuQtOsnW1n1VbR/yueRoN5rmzBCpAIVL7M=×tamp=2017-12-07 14:23:11&sign_type=RSA&charset=UTF-8&app_id=2015101400446982&method=alipay.security.risk.customerrisk.send&version=1.0
返回数据样例:
{"body":"{\"alipay_security_risk_customerrisk_send_response\":{\"code\":\"10000\",\"msg\":\"Success\"},\"sign\":\"PK9mGX8uy3xfwRKygPxPCuf62YQU5JrdY4yDSn5dRhRcjtcTlzm8Gzv1yhnNXOhyITDzY6O8+rwPpSUqrQXT3VvS6dkMvEnoXsT5uKefRKX9PuvwbttN5Vc7Me57aPX9dReiBji4HgBVMI22gcugZ8mBTuNIecYNAAxiVcZjUFQ=\"}","code":"10000","errorCode":"10000","msg":"Success","params":{"biz_content":"{\"cert_no\":\"659004198009128344\",\"mobile\":\"1359892324\",\"smid\":\"123ssd\",\"external_id\":\"105290059990194\",\"process_code\":\"99\",\"business_license_no\":\"34xggdf345\" }"},"success":true}
(目前仅风险商户数据同步接口支持沙箱调试,风险推送接口仅支持线上测试,不支持测试环境和沙箱调试)
点击“开放平台-开发者中心-沙箱环境”。进入沙箱环境页面,系统已经自动为你创建一个应用,在基础信息中可以看到应用信息。
接口文档地址: 风险商户数据同步接口
RSA_PRIVATE ,ALIPAY_PUBLIC_KEY应该相应的替换为沙箱环境的请求网关,app_id,私钥和支付宝公钥.
示例代码如下,仅供参考
//初始化AlipayClient,沙箱环境需要替换URL/APP_ID/RSA_PRIVATE为沙箱的数据 AlipayClient alipayClient = new DefaultAlipayClient(URL,APP_ID,RSA_PRIVATE,"json","utf-8",ALIPAY_PUBLIC_KEY); AlipaySecurityRiskCustomerriskSendRequest request = new AlipaySecurityRiskCustomerriskSendRequest(); //此处字段值是示例,实际调试时,按实际情况填写 //plat_account和trade_no为必传参数 String bizContent ="{\"cert_no\":\"659004198009128344\"," + "\"plat_account\":\"88845643121\"," + "\"trade_no\":\"2017112221001004200200299495\"," + "\"process_code\":\"01\"," + "\"bank_card_no\":\"421234234234234000\"," + "\"cert_no\":\"150239198500000000\"," + "\"merch_name\":\"xx商品\"," + "\"business_license_no\":\"34xggdf345\"," + "\"mobile\":\"18667000000\"}"; request.setBizContent(bizContent); try { AlipaySecurityRiskCustomerriskSendResponse response = alipayClient.execute(request); //响应结果包含在response对象中,可以解析response对象获取结果. System.out.println(response.getBody()); } catch (AlipayApiException e) { e.printStackTrace(); }
必须将支付宝网关、appid、应用私钥、支付宝公钥修改成正式环境的配置,其他业务参数也必须是正式环境的实际数据.