反欺诈服务接口文档

服务流程

Image without caption
Tips:
  1. 反欺诈服务为实时服务,用户可以在支付授权前和支付授权后请求反欺诈风险评估:
      • 对于支付授权前请求的,输出结果为:欺诈风险评分和支付决策建议(通过、拒绝、加强验证)
      • 对于支付授权后请求的,输出结果为:欺诈风险评分和支付决策建议(拦截、请款)
  1. 支持对商户进行定制化策略调优:接口对接完毕后2-4周的策略调优时间,商户对整体表现满意(支付成功率和欺诈率)后,开始计费
  1. 商户需要向跨拒通传输相关数据,主要包括:
      • BasicInfo:支付参考号、金额、币种等
      • UserInfo:邮箱、账号名称等
      • ClientInfo:商品类型、商品数量等
      • ChannelInfo:卡号、有效期、持卡人名称、授权信息(AvsResult、CvcResult、ECI等)
      • ExtraInfo:收货地址等交易信息

获取 API 签名

描述:签名字段生成用于调用接口时的请求头传递,主要是“Authorization”签名字段值的生成。

步骤一:拼接规范请求串

  1. CanonicalRequest =
  1. HTTPRequestMethod + '\n' +
  1. CanonicalURI + '\n' +
  1. CanonicalQueryString + '\n' +
  1. CanonicalHeaders + '\n' +
  1. SignedHeaders + '\n' +
  1. HashedRequestPayload
字段名称
解释
HTTPRequestMethod
HTTP 请求方法(GET、POST )。此示例取值为 POST。
CanonicalURI
URI 参数,API 3.0 固定为正斜杠(/)。
CanonicalQueryString
发起 HTTP 请求 URL 中的查询字符串,对于 POST 请求,固定为空字符串"",对于 GET 请求,则为 URL 中问号(?)后面的字符串内容,例如:Limit=10&Offset=0。 注意:CanonicalQueryString 需要参考 RFC3986 进行 URLEncode,字符集 UTF8,推荐使用编程语言标准库,所有特殊字符均需编码,大写形式。
CanonicalHeaders
参与签名的头部信息,至少包含 host 和 content-type 两个头部,也可加入自定义的头部参与签名以提高自身请求的唯一性和安全性。 拼接规则:头部 key 和 value 统一转成小写,并去掉首尾空格,按照 key:value\n 格式拼接;多个头部,按照头部 key(小写)的 ASCII 升序进行拼接。此示例计算结果是 content-type:application/json; charset=utf-8\nhost:cvm.tencentcloudapi.com\n。** 注意:content-type 必须和实际发送的相符合,有些编程语言网络库即使未指定也会自动添加 charset 值,如果签名时和发送时不一致,服务器会返回签名校验失败。**
SignedHeaders
参与签名的头部信息,说明此次请求有哪些头部参与了签名,和 CanonicalHeaders 包含的头部内容是一一对应的。content-type 和 host 为必选头部。 拼接规则:头部 key 统一转成小写;多个头部 key(小写)按照 ASCII 升序进行拼接,并且以分号(;)分隔。此示例为 content-type;host
HashedRequestPayload
请求正文(Requestpayload,即 body,此示例为 {"Limit": 1, "Filters": [{"Values": ["\u672a\u547d\u540d"], "Name": "instance-name"}]})的哈希值,计算伪代码为 Lowercase(HexEncode(Hash.SHA256(RequestPayload))),即对 HTTP 请求正文做 SHA256 哈希,然后十六进制编码,最后编码串转换成小写字母。对于 GET 请求,RequestPayload 固定为空字符串。此示例计算结果是 35e9c5b0e3ae67532d3c9f17ead6c90222632e5b1ff7f6e89887f1398934f064。
根据以上规则,示例中得到的规范请求串如下:
  1. POST
  1. /
  1. content-type:application/json; charset=utf-8
  1. host:cvm.tencentcloudapi.com
  1. content-type;host
  1. 35e9c5b0e3ae67532d3c9f17ead6c90222632e5b1ff7f6e89887f1398934f064

步骤二:拼接待签名字符串

  1. StringToSign =
  1. Algorithm + \n +
  1. RequestTimestamp + \n +
  1. CredentialScope + \n +
  1. HashedCanonicalRequest
Algorithm
签名算法,目前固定为 TC3-HMAC-SHA256。
RequestTimestamp
请求时间戳,即请求头部的公共参数 X-TC-Timestamp 取值,取当前时间 UNIX 时间戳,精确到秒。此示例取值为 1551113065。
CredentialScope
凭证范围,格式为 Date/service/tc3_request,包含日期、所请求的服务和终止字符串(tc3_request)。Date 为 UTC 标准时间的日期,取值需要和公共参数 X-TC-Timestamp 换算的 UTC 标准时间日期一致;service 为产品名,必须与调用的产品域名一致。此示例计算结果是 2019-02-25/ra/tc3_request。
HashedCanonicalRequest
前述步骤拼接所得规范请求串的哈希值,计算伪代码为 Lowercase(HexEncode(Hash.SHA256(CanonicalRequest)))。
注意
  • Date 必须从时间戳 X-TC-Timestamp 计算得到,且时区为 UTC+0。如果加入系统本地时区信息,例如东八区,将导致白天和晚上调用成功,但是凌晨时调用必定失败。假设时间戳为 1551113065,在东八区的时间是 2019-02-26 00:44:25,但是计算得到的 Date 取 UTC+0 的日期应为 2019-02-25,而不是 2019-02-26。
  • Timestamp 必须是当前系统时间,且需确保系统时间和标准时间是同步的,如果相差超过五分钟则必定失败。如果长时间不和标准时间同步,可能导致运行一段时间后,请求必定失败,返回签名过期错误。
  • 根据以上规则,示例中得到的待签名字符串如下:
    • TC3-HMAC-SHA256
    • 1551113065
    • 2019-02-25/cvm/tc3_request
    • 5ffe6a04c0664d6b969fab9a13bdab201d63ee709638e2749d62a09ca18d7031

步骤三:计算签名(伪代码)

  1. SecretKey = "Gu5t9xGAR***********EXAMPLE"
  1. byte[] secretDate = hmac256(("TC3"+ SecretKey).getBytes(UTF8), date);
  1. byte[] secretService = hmac256(secretDate, service);
  1. byte[] secretSigning = hmac256(secretService, "tc3_request");
  1. String signature = DatatypeConverter.printHexBinary(hmac256(secretSigning, stringToSign)).toLowerCase();
  1. out.println(signature);
    1. 派生出的密钥 SecretDate、SecretService 和 SecretSigning 是二进制的数据,可能包含不可打印字符,此处不展示中间结果。
字段名称
解释
SecretKey
原始的 SecretKey,即 Gu5t9xGAR***********EXAMPLE
date
即 Credential 中的 Date 字段信息。此示例取值为 2019-02-25
service
即 Credential 中的 Service 字段信息。此示例取值为 ra

步骤四:拼接Authorization

按如下格式拼接 Authorization:
  1. String Authorization =
  1. Algorithm + ' ' +
  1. 'Credential=' + SecretId + '/' + CredentialScope + ', ' +
  1. 'SignedHeaders=' + SignedHeaders + ', ' +
  1. 'Signature=' + Signature
字段名称
解释
Algorithm
签名方法,固定为 TC3-HMAC-SHA256。
SecretId
密钥对中的 SecretId,即 AKIDz8krbsJ5**********mLPx3EXAMPL。
CredentialScope
见上文,凭证范围。此示例计算结果是 2019-02-25/ra/tc3_request。
SignedHeaders
见上文,参与签名的头部信息。此示例取值为 content-type;host
Signature
签名值。

反欺诈接口字段

一、接口描述

  • 接口请求域名:
    • 美西:rce.na-siliconvalley.securego.com
  • 请求方式:POST
    • Content-Type :application/json

二、Transaction Check API【风险检查】

1. 输入参数 – Header

参数名称
类型
必选
描述
X-TC-Action
String
required
公共参数,本接口取值:DescribeRiskControl
X-TC-Version
String
required
公共参数,本接口取值:2020-02-26
X-TC-Region
String
required
公共参数,详见产品支持的 地域列表。暂时仅支持: 1、ap-singapore 2、na-siliconvalley
X-TC-Timestamp
String
required
Uinx 时间戳,精度:秒
Host
String
required
本接口取值: 请求域名
    Authorization
String
required
请求签名,用来验证此次请求的合法性,需要用户根据实际的输入参数计算得出。 本接口采用新版本的加密方法生成该字段,加密方法详见对应文件夹对应demo
1 .1 输入参数-body
参数名称
类型
必选
描述
BizCryptoData
InputRiskControlData
requried
业务数据加密参数
1.2 InputRiskControlData【加密数据】
参数名称
类型
必选
描述
IsAuthorized
String
是否授权:1已授权,否则未授权。 调用全栈式风控引擎接口服务时,客户需先明确授权
CryptoType
String
加密类型:1: AES加密
CryptoContent
String
加密内容。非空时接口采用加密模式,详细步骤见下“加密说明”
加密说明:
  • 接口通过BizCryptoData参数,支持采用加密模式传递业务参数。
  • 当CryptoContent非空时,接口触发加密模式。以AES加密为例,加密步骤如下:
    • 向wetech申请获得账号的ClientID,进行base64编码,得到AES密钥key。当key大于等于32字节时,取前32字节为key;大于等于24字节时,取前24字节为key;大于等于16字节时,取前16字节为key
    • 以步骤1中得到的密钥key,对业务数据对象进行AES加密。加密算法模式为AES/ECB/PKCS7Padding。业务数据对象为InputDescribeRiskControl参数的json字符串【json示例见:5.2、InputDescribeRiskControl_json格式】。
    • 对步骤2中AES加密得到的字节数组进行base64编码,得到最终加密后的业务参数请求字符串,即CryptoContent。

2.InputDescribeRiskControl 【加密前明文数据】

参数名称
类型
必选
描述
PostTime
Uint64
用户操作时间戳,精确到秒
BasicInfo
BasicInfo
详情见: BasicInfo
UserInfo
UserInfo
详情见: UserInfo
ClientInfo
ClientInfo
详情见: ClientInfo
ChannelInfo
ChannelInfo
详情见: ChannelInfo
SceneInfo
SceneInfo
详情见: SceneInfo
ExtraInfo
ExtraInfo
详情见: ExtraInfo
2.1 BasicInfo
参数名称
类型
必选
描述
Scene
String
固定值,固定值,场景:transaction
Command
String
固定值,有两种取值 pre-check :第一次调用风险检查服务; post-check :同一笔交易,第一次调用风险检查服务得到风控返回的决策后,再去银行做完授权后,还想再做一次风险检查一次的时候,使用这个命令字(用来区别于第一次) 注:正常完整的信用卡交易分预授权(authorize)和请款 (capture)两步,预授权成功后,得到银行授权结果(授权结果,3D 结果,CVV 结果等),还可以结合银行返回的结果,再进行一次风险检查
ReqTime
String
平台传值,当笔请求时间(UTC0 时间戳,单 位 秒)
Reference
String
可选
平台值,策略文件,为空时使用默认配置 *建议不同场景使用不同文件
AppID
String
固定值,具体应用ID。WeTech提供的appId
Details
可选
详情见:2.1.1 InputBasicInfoDetails
2.1.1 InputBasicInfoDetails
参数名称
类型
描述
Key
String
详情见:2.1.1.1 InputBasicInfoDetailsKey
Value
String
取值
2.1.1.1 InputBasicInfoDetailsKey
基本信息
参数名称
类型
必选
描述
ReqBillNo
String
业务传值,业务订单号,单次请求的唯一
Amount
String
业务传值,应付交易金额(元)
Currency
String
可选
业务传值,应付交易金额对应币种
RcUUID
String
可选
平台值,同一笔交易标识,一般一笔交易多次请求时使用,取值为第一次请求风控时返回得UUID
2.2 UserInfo
参数名称
类型
描述
Details
InputUserInfoDetails
详情见:2.2.1 InputUserInfoDetails
2.2.1 InputUserInfoDetails
参数名称
必选
描述
Key
String
详情见:2.2.1.1 InputUserInfoDetailsKey
Value
String
取值
2.2.1.1 InputUserInfoDetailsKey
账号信息
参数名称
类型
必选
描述
UserID
String
业务传值,发货号码;
UserIDType
String
业务传值,发货号码类型,与 UserID 成对出现 1. 自身平台注册的 (email、phone 注册)填具体注册类型, 2. 第三方注册的 填具体注册平台 facebook, google 等
UserEmail
String
可选
业务传值,邮箱,*信用卡类必填
UserMobile
String
可选
业务传值,手机号
LoginID
String
可选
业务传值,登录号码
LoginIDType
String
可选
业务传值,注册类型,与 LoginID 成对出现 1. 自身平台注册的 (email、phone 注册)填具体注册类型, 2. 第三方注册的 填具体注册平台 facebook, google 等
2.3 ClientInfo
参数名称
类型
描述
Details
InputClientInfoDetails
详情见:2.3.1 InputClientInfoDetails
2.3.1 InputClientInfoDetails
参数名称
类型
描述
Key
String
详细见:2.3.1.1 InputClientInfoDetailsKey
Value
String
取值
2.3.1.1 InputClientInfoDetailsKey
设备信息
参数名称
类型
必选
描述
UserIP
String
业务传值,当前用户 IP
DeviceID
String
可选
业务传值,设备ID
SessionID
String
可选
业务传值,会话ID(嵌入JS获取到得RC_session 值见前端集成)
UserAgent
String
可选
业务传值,浏览器类型(eg. Mozilla/5.0 (Windows NT 10.0; Win64; x64))
AcceptLang
String
可选
业务传值,用户客户端语言
物品信息
ProductID
String
平台传值,物品 ID
ProductType
String
可选
平台传值,物品类型(digital, physical)
ProductItemNum
String
可选
平台传值,物品数量
2.4 ChannelInfo
参数名称
类型
描述
Details
InputChannelInfoDetails
详情见:2.4.1 InputChannelInfoDetails
2.4.1 InputChannelInfoDetails
参数名称
类型
描述
Key
String
详细见:2.4.1.1 InputChannelInfoDetailsKey
Value
String
取值
2.4.1.1 InputChannelInfoDetailsKey
渠道信息
参数名称
类型
必选
描述
Channel
String
平台传值,支付渠道:iap/gwallet/adyen
ChannelBillNo
String
可选
平台传值,渠道订单号,单笔交易的唯一
信用卡,卡号信息
CardNo
String
业务传值,卡号前 6 后 4(eg. 425361****1234)
CardNoMd5
String
业务传值,业务传值,完整卡号的 md5加密值,32位小写十六进制字符串, 例:字符串 1234567890  ——  对应MD5 e807f1fcf82d132f9bb018ca6738a19f
CardBin
String
业务传值,卡号前 6 位
CardExpirationY
String
业务传值,卡有效期(年)YYYY
CardExpirationM
String
业务传值,卡有效期(月)MM
CardHolderFirstName
String
业务传值,持卡人(名)
CardHolderLastName
String
业务传值,持卡人(姓)
账单地址信息
BillingCountry
String
可选
业务传值,国家
BillingPostCode
String
可选
业务传值,邮政编码
BillingState
String
可选
业务传值,省/州
BillingCity
String
可选
业务传值,城市
BillingStreet1
String
可选
业务传值,街道地址
BillingStreet2
String
可选
业务传值,房间门牌号
授权后银行回带信息
ReasonCode
String
业务传值,结果码
ReasonMsg
String
业务传值,结果描述(银行侧返回的原始结果描述,类似 51: Insufficient funds/over credit limit / Not sufficient funds 这样的,要从收单行侧拿到)
3DOffered
String
业务传值,是否要验证 3D (true,false)
LiabilityShift
String
业务传值,是否有责任转移,信用卡网关回传 的(true,false)
GateWay
String
可选
业务传值,信用卡网关, adyen/checkout/worldpay 等
GateWayPSP
String
可选
业务传值,信用卡网关回传的订单
3DResponsed
String
可选
业务传值,3D 验证结果
AvsResult
String
可选
业务传值,AVS 验证结果
CvcResult
String
可选
业务传值,CVC 验证结果
ECI
String
可选
业务传值,eci 值, 信用卡网关回传的
CAVV
String
可选
业务传值,cavv 值, 信用卡网关回传的
CavvAlgorithm
String
可选
业务传值,cavv 算法代码
AuthCode
String
可选
业务传值,授权结果码, 信用卡网关回传的
2.5 SceneInfo
参数名称
类型
描述
Details
InputSceneInfoDetails
待补充【该参数目前取空】
2.5.1 InputSceneInfoDetails
参数名称
类型
描述
Key
String
字段名称
Value
String
取值
2.6 ExtraInfo
参数名称
类型
描述
Details
InputExtraInfoDetails
详情见:2.6.1 InputExtraInfoDetails
2.6.1 InputExtraInfoDetails
参数名称
类型
描述
Key
String
详细见:2.6.1.1 InputExtraInfoDetailsKey
Value
String
取值
2.6.1.1 InputExtraInfoDetailsKey
自定义 – 登录信息
参数名称
类型
必选
描述
LoginIDCountry
String
可选
业务传值,登录用户注册国家
LoginIDRegTime
String
可选
业务传值,登录用户注册时间(UTCO 秒时间戳)
LoginAge
String
可选
业务传值,登录用户年龄
LoginGender
String
可选
业务传值,登录用户性别
LoginNickname
String
可选
业务传值,登录用户昵称
LoginRalname
String
可选
业务传值,登录用户真实
LoginEmail
String
可选
业务传值,登录用户邮箱
LoginMobile
String
可选
业务传值,登录用户手机号
自定义 - 发货信息
ShippingFirstName
String
可选
业务传值,收货人(名)
ShippingLastName
String
可选
业务传值,收货人(姓)
ShippingCountry
String
可选
业务传值,收货人国家
ShippingPostCode
String
可选
业务传值,收货人所在地邮政编码
ShippingState
String
可选
业务传值,收货人所在省/州
ShippingCity
String
可选
业务传值,收货人所在城市
ShippingStreet1
String
可选
业务传值,收货人所在地街道地址
ShippingStreet2
String
可选
业务传值,收货人所在地房间号
自定义 – 交易信息
CardHash
String
可选
业务传值,卡哈希(midasbuy 场景专有)
CardContractID
String
可选
业务传值,签约 ID,用于确认是否签约卡
WebsiteCountry
String
可选
平台传值,网站入口区域
UserRegisterCountry
String
可选
业务传值,用户注册国家
UserActiveCountry
String
可选
业务传值,用户活跃国家
自定义 – 平台信息
ClientBillNo
String
可选
平台传值,平台序列号,单次请求的唯一
ClientIP
String
可选
平台传值,业务服务器ip地址
SubChannel
String
可选
平台传值,支付子渠道

3.输出参数

参数名称
必选
描述
Data
OutputRiskControl
业务总出参
RequestId
String
唯一请求 ID,每次请求都会返回。
3.1 OutputRiskControl
参数名称
类型
描述
UUid
String
当前请求ID
Code
Uint64
返回码。0 表示成功,非 0 标识失败错误码。
Message
String
UTF-8 编码,出错消息。
Value
OutputRiskControlInfo
业务出参
3.1.1 OutputRiskControlInfo
参数名称
类型
描述
ResultCode
Uint64
结果码(建议处理方式): 0:通过, 1:不通过, 2:二次验证 其他:系统错误
Action
String
当ResultCode=2时: 3ds:信用卡3D验证, graphic:图形验证, email:邮箱验证, mobile:手机验证
ResultInfo
String
结果描述: result_code = 0时返回‘ok’ result_code = 1时返回拒绝信息 其他时,返回系统错误信息
Reference
String
当前策略文件ID
ReferenceIdle
String
比对策略文件ID
Score
Uint64
分值总和
ScoreItems
OutputRiskControlScoreItems
分值明细,json格式

4. 示例

4.1 输入示例
java
**POST / HTTP/1.1** **Host:** rce.na-siliconvalley.wetech-rc.com **Content-Type: application/json** **X-TC-Timestamp: 1695817824** **X-TC-Region: na-siliconvalley(美西)** **X-TC-Region: ap-singapore(新加坡)** **X-TC-Version: 2020-02-26** **X-TC-Action: DescribeRiskControl** **Authorization: TC3-HMAC-SHA256 Credential=AKIDY1LTQp34sTs44vbP6bv41kfQzLWZP2Rc/2023-09-27/ra/tc3_request,SignedHeaders=content-type;host, Signature=4bb7f1650e41000ce2c38b961d86c42946b6c9e02ba2928ae8e75b0f46ff26d5** ***Header字段含义与签名生成方法见文件夹对应demo文件*** **<公共请求参数>** **{** "BizCryptoData":{ "IsAuthorized":"1", "CryptoType": "1", "CryptoContent":" V8PkNLOWRJkD3WpjUu4s2hxR5ydckO6xvawfoa00kaf8iNtp3arnKw/6Qz18++HrMXEAoD6mNiUXsYSBlBvWmYRAhNjzwz3RQ51SG92VL+1CG6rWNsSfKkwqAnUvWQig3Zr7wLivbS3hKf6uvrfRG0/RLN5qiJnoPbCVuZinA8So4DOd+kbxvuIk+kogswKqF9M2R12brCtN8OciZvvHdA60sJVkL0TxPZYSikWT4rkSKTkiCM6F2vGYg7MQVgCHYMCJ7q0BcSHl5HWCyucVvYye2MXpBUccrxlT88frOV99aD50wW3MWmFFRhPlwrbKQTdkttASGOuuKwySR/FKJt3uFsCIBPPER+S02vA8P2OvHzHnPoGFECRRuacqy+q7zIoBtE1NF09Q7Od4qSyeAp+kBrZeyH8qAmQi1RpO61lHuL3xCNUmHPyZyF8k9vV6K3SkaKyEfeFdN9wRDRRDfcT3c74+yw0AzAsvYtybblPwKz+r2CEV2iUfiPVJ1c3fsPOptWiE0wgCHblVxCtqwHbZA5i0A/cGgonu4LWAJmjsLdC6KMq3p9OytUpOdyGef7WknVmVJW/qn+ARcppHnYyTimg9Hjlv72hbJcnJCIO2Gwcv/1YPVbpWJ2nZRwRLGi1/kTgy+bEFvoKFUSiQyuzJOzmhsXbMKikhbdBRRM30Hy8YaK67M+sOr2smU0Xt3dbWT8iY5pRcgXTxYKf74UMyvETlXUAqOjLCJKF/0+1pZoyftaclOa8vKF0Diszu/ETTIm16JpXSs7mrHS+s3007wUVE9FGxhAYy5lr9G+oNNlHU7jRoQPPZiT4B6y7M3bEkpjXl8/qGa5UwhL19gLopuhZb+/kuUGr3WFlt8lYn4oQ7Tcjz5EXOu9f0DP2li6/NWSoCROEHl26wI4MtpmxjxoEN4mprL1A9hf2daylij77TaK8Gyz3nrJZc20Qdq20kr09U4AFvVq5jZbAbkK72GdaZKHPk8YhHCvo/PRTAIqR91nOEaehRLeJhQsTPDQYjwYD0C6BSUB2urIMwFX9GAxVGDvnXhfSF9HSEISaIwI0d0pExq1tKiQD5hv9XdUTveG5A2DaWuTOQ+4zKlQ==" **}** **}**
4.2 InputDescribeRiskControl_json格式示例
java
## 参数:BizCryptoData.CryptoContent加密前数据格式: { "PostTime":1666347446, "BasicInfo":{ "Scene":"transaction", "Command":"post-check", "Reference":"", "ReqTime":"1666347446", "AppID":"Test01", "Details":[ {"Key":"ReqBillNo","Value":"16460183922615638888"}, {"Key":"ReqType","Value":"order"}, {"Key":"Amount","Value":"10"}, {"Key":"Currency","Value":"CNY"} ]}, "UserInfo":{ "Details":[ {"Key":"UserID","Value":"123456"}, {"Key":"UserIDType","Value":"facebook"}, {"Key":"UserIP","Value":"23.12.79.213"}, {"Key":"UserEmail","Value":"bengong@midas.com"} ]}, "ClientInfo":{ "Details":[ {"Key":"ClientBillNo","Value":"16460183922615638455"}, {"Key":"ClientIP","Value":"127.0.0.1"} ]}, "ChannelInfo":{ "Details":[ {"Key":"Channel","Value":"adyen"}, {"Key":"ChannelBillNo","Value":"16460183922615638455"}, {"Key":"CardBin","Value":"512312"}, {"Key":"CardMd5","Value":"12345"} ]}, "SceneInfo":{}, "ExtraInfo":{}} ## 参数:BizCryptoData.CryptoContent加密前数据格式: { "PostTime":1666347446, "BasicInfo":{ "Scene":"transaction", "Command":"post-check", "Reference":"", "ReqTime":"1666347446", "AppID":"Test01", "Details":[ {"Key":"ReqBillNo","Value":"16460183922615638888"}, {"Key":"ReqType","Value":"order"}, {"Key":"Amount","Value":"10"}, {"Key":"Currency","Value":"CNY"} ]}, "UserInfo":{ "Details":[ {"Key":"UserID","Value":"123456"}, {"Key":"UserIDType","Value":"facebook"}, {"Key":"UserIP","Value":"23.12.79.213"}, {"Key":"UserEmail","Value":"bengong@midas.com"} ]}, "ClientInfo":{ "Details":[ {"Key":"ClientBillNo","Value":"16460183922615638455"}, {"Key":"ClientIP","Value":"127.0.0.1"} ]}, "ChannelInfo":{ "Details":[ {"Key":"Channel","Value":"adyen"}, {"Key":"ChannelBillNo","Value":"16460183922615638455"}, {"Key":"CardBin","Value":"512312"}, {"Key":"CardMd5","Value":"12345"} ]}, "SceneInfo":{}, "ExtraInfo":{}}
4.3、 输出示例
java
{ "Response":{ "Data":{ "UUid":"b7715263-659f-f315-745d-20e325e8556c", "Code":0, "Message":"OK", "Value":{ "ResultCode":"0", "Action":"", "ResultInfo":"OK", "Reference":"", "ReferenceIdle":"", "Score":"", "ScoreItems":[] }} ,"RequestId":"d12839f7-ae86-497f-a2f2-9687f0e6581d" } }

三.Transaction Notify API 【结果通知】

一笔订单必须至少调用一次

1.输入参数 – Header

参数名称
类型
必选
描述
X-TC-Action
String
公共参数,本接口取值:DescribeRiskNotify
X-TC-Version
String
公共参数,本接口取值:2020-02-26
X-TC-Region
String
公共参数,详见产品支持的 地域列表。暂时仅支持: 1、ap-singapore 2、na-siliconvalley
X-TC-Timestamp
String
Uinx 时间戳,精度:秒
Host
String
本接口取值:请求域名
    Authorization
    String
请求签名,用来验证此次请求的合法性,需要用户根据实际的输入参数计算得出。 本接口采用新版本的加密方法生成该字段,加密方法详见对应文件夹demo
1.1输入参数-body
参数名称
类型
必选
描述
BizCryptoData
InputRiskNotifyData
业务数据加密参数
1.2 InputRiskNotifyData
参数名称
类型
必选
描述
IsAuthorized
String
是否授权:1已授权,否则未授权。 调用全栈式风控引擎接口服务时,客户需先明确授权
CryptoType
String
加密类型:1: AES加密
CryptoContent
String
加密内容。非空时接口采用加密模式,详细步骤见下“加密说明”
加密说明:
  • 接口通过BizCryptoData参数,支持采用加密模式传递业务参数。
  • 当CryptoContent非空时,接口触发加密模式。以AES加密为例,加密步骤如下:
    • 获取ClientID,进行base64编码,得到AES密钥key。当key大于等于32字节时,取前32字节为key;大于等于24字节时,取前24字节为key;大于等于16字节时,取前16字节为key
    • 以步骤1中得到的密钥key,对业务数据对象进行AES加密。加密算法模式为AES/ECB/PKCS7Padding。业务数据对象为InputDescribeRiskNotify参数的json字符串【json示例见:4.2、InputDescribeRiskNotify_json格式】。
    • 对步骤2中AES加密得到的字节数组进行base64编码,得到最终加密后的业务参数请求字符串,即CryptoContent。

2. InputDescribeRiskNotify【加密前明文数据】

参数名称
类型
必选
描述
PostTime
Uint64
用户操作时间戳,精确到秒
BasicInfo
BasicInfo
详情见:BasicInfo
UserInfo
UserInfo
详情见:UserInfo
ClientInfo
ClientInfo
详情见:ClientInfo
ChannelInfo
ChannelInfo
详情见:ChannelInfo
SceneInfo
SceneInfo
详情见:SceneInfo
ExtraInfo
ExtraInfo
详情见:ExtraInfo
2.1 BasicInfo
参数名称
类型
必选
描述
Scene
String
平台传值,固定值,场景:transaction
Command
String
平台传值,固定值,命令字: common(交易结果)/fraud(欺诈)/chargeback(拒付)
AppID
String
可选
业务传值,固定值。WeTech提供的appId
ReqTime
String
平台传值,当笔请求时间(UTC0 时间戳,单 位 秒)
Details
可选
详情见:2.1.1 InputBasicInfoDetails
2.1.1 InputBasicInfoDetails
参数名称
类型
描述
Key
String
详情见:2.1.1.1 InputBasicInfoDetailsKey
Value
String
取值
2.1.1.1 InputBasicInfoDetailsKey
基本信息
参数名称
类型
必选
描述
RcUUID
String
平台传值,下单阶段风控返回的 UUID(发货前 的检查需要带)
TxnResult
String
平台传值,支付结果( 0 成功,1 失败)
ReqBillNo
String
可选
业务传值,业务订单号
Amount
String
可选
业务传值,实付交易金额(元),
Currency
String
可选
业务传值,实付交易金额对应币种
2.2 UserInfo
参数名称
类型
描述
Details
InputUserInfoDetails
详情见:2.2.1 InputUserInfoDetails
2.2.1 InputUserInfoDetails
参数名称
必选
描述
Key
String
详情见:2.2.1.1 InputUserInfoDetailsKey
Value
String
取值
2.2.1.1 InputUserInfoDetailsKey
账号信息
参数名称
类型
必选
描述
UserID
String
业务传值,发货号码,*交易和活动类必填
UserIDType
String
业务传值,发货号码类型,与 UserID 成对出现: 1. 自身平台注册的 (email、phone 注册)填具体注册类型,; 2. 第三方注册的 填具体注册平台 facebook, google 等;
2.3 ClientInfo
参数名称
类型
描述
Details
InputClientInfoDetails
待补充【该参数目前取空值】
2.3.1 InputClientInfoDetails
参数名称
类型
描述
Key
String
字段名称
Value
String
取值
2.4 ChannelInfo
参数名称
类型
描述
Details
InputChannelInfoDetails
详情见:2.4.1 InputChannelInfoDetails
2.4.1 InputChannelInfoDetails
参数名称
类型
描述
Key
String
详细见:2.4.1.1 InputChannelInfoDetailsKey
Value
String
取值
2.4.1.1 InputChannelInfoDetailsKey
渠道信息
参数名称
类型
必选
描述
Channel
String
平台传值,支付渠道:iap/gwallet/adyen
ChannelBillNo
String
平台传值,渠道订单号,单笔交易的唯一
银行回调信息
3DOffered
String
业务传值,是否要验证 3D (true,false)
LiabilityShift
String
业务传值,是否有责任转移,信用卡网关回传 的(true,false)
GateWay
String
可选
业务传值,信用卡网关, adyen/checkout/worldpay 等
GateWayPSP
String
可选
业务传值,信用卡网关回传的订单
ReasonCode
String
可选
业务传值,银行结果码
ReasonMsg
String
可选
业务传值,银行结果描述
3DResponsed
String
可选
业务传值,3D 验证结果
AvsResult
String
可选
业务传值,AVS 验证结果
CvcResult
String
可选
业务传值,CVC 验证结果
ECI
String
可选
业务传值,eci 值, 信用卡网关回传的
CAVV
String
可选
业务传值,cavv 值, 信用卡网关回传的
CavvAlgorithm
String
可选
业务传值,cavv 算法代码
AuthCode
String
可选
业务传值,授权结果码, 信用卡网关回传的
2.5 SceneInfo
参数名称
类型
描述
Details
InputSceneInfoDetails
待补充【该参数目前取空值】
2.5.1 InputSceneInfoDetails
参数名称
类型
描述
Key
String
字段名称
Value
String
取值
2.6 ExtraInfo
参数名称
类型
描述
Details
InputExtraInfoDetails
待补充【该参数目前取空值】
2.6.1 InputExtraInfoDetails
参数名称
类型
描述
Key
String
字段名称
Value
String
取值

3.输出参数

参数名称
类型
描述
Data
OutputRiskControl
业务总出参
RequestId
String
唯一请求 ID,每次请求都会返回。
3.1 OutputRiskNotify
参数名称
类型
描述
UUid
String
当前请求ID
Code
Uint64
返回码。0 表示成功,非 0 标识失败错误码。
Message
String
UTF-8 编码,出错消息。
Value
OutputRiskNotifyInfo
业务出参
3.1.1 OutputRiskNotifyInfo
参数名称
类型
描述
ResultCode
Uint64
通知结果: 0:成功, 1:失败, 其他:系统错误
ResultInfo
String
结果描述: result_code = 0时返回‘ok’ result_code = 1时返回错误信息

4.示例

4.1 输入示例
java
**POST / HTTP/1.1** **Host:** rce.na-siliconvalley.wetech-rc.com **Content-Type: application/json** **X-TC-Timestamp: 1695817824** **X-TC-Region: na-siliconvalley(美西)** **X-TC-Region: ap-singapore(新加坡)** **X-TC-Version: 2020-02-26** **X-TC-Action: DescribeRiskNotify** **Authorization: TC3-HMAC-SHA256 Credential=AKIDY1LTQp34sTs44vbP6bv41kfQzLWZP2Rc/2023-09-27/ra/tc3_request,SignedHeaders=content-type;host, Signature=4bb7f1650e41000ce2c38b961d86c42946b6c9e02ba2928ae8e75b0f46ff26d5** ***Header字段含义与签名生成方法见文件夹对应demo文件*** **<公共请求参数>** **{** "BizCryptoData ":**{** "CryptoType":"1", "IsAuthorized":"1", "CryptoContent":" LkwODPti5do9X1wN2RgVBrflPTOuk5QCMOslhTTmb8T8iNtp3arnKw/6Qz18++HrMXEAoD6mNiUXsYSBlBvWmcuEsJ3MEEp4QP2kNTDAtIGtHjk7kZOoVngx+o33Mt4aHrK+9HTpX68ekfObqPmt7/nRlgVgFh4YzNzNr3B8uQ4qWlAuqn96T6jsY/J3DOe8tHh6aLDw3qqZMqL0LuYk/63e7gwNKCAfIyhZ+k6oZAkd+Xt7UIX0uuwWFdhjkPEU7DbXv7F14/Xtw4zIYrePh3wFn+OAWVZhASql6XlQvIY9DSLP7PGYfnnQdKmJeQuDLLxaSLL3Xum043exoaAJrpFM0b5UfGYTSw6NjxK4Wa1BN2S20BIY664rDJJH8Uom3e4WwIgE88RH5LTa8Dw/Y68fMec+gYUQJFG5pyrL6rvMigG0TU0XT1Ds53ipLJ4Cn6QGtl7IfyoCZCLVGk7rWUe4vfEI1SYc/JnIXyT29XordKRorIR94V033BENFEN9xPdzvj7LDQDMCy9i3JtuU/ArP6vYIRXaJR+I9UnVzd+0i4vBpn4uqXKV1bcDRDDMjpbRFUcYW+UDFWeVaoOXTQ02UdTuNGhA89mJPgHrLszdsSSmNeXz+oZrlTCEvX2Auim6Flv7+S5QavdYWW3yVsEO9Ib84vn82IigvnIeVIbyijaltAFiTgXukXY/+tA2Khr34MRN6riHe6/sdC4qkDxWoU16hKuP4Rt6H0ipiaAMwi6A6jEtM+J/pBWS1zIDD0jpisPnJaX0yL/34qB7tRGWvS8D5CbzpMMiDsfT7kdzyypS9aqVtdETkm9JJ0oXl+843mrJaXjNZq3T7ZK6C5up3ZS/08c/LPSI4ftjDiaGuq2mrqGPvpYKcWtNDoaK/cOQJHKowdL8yY89//L1bQ==" **}** **}**
4.2 InputDescribeRiskNotify_json格式示例:
java
## 参数:BizCryptoData.CryptoContent加密前数据格式: { "PostTime":1665658696, "BasicInfo":{ "Scene":"transaction", "Command":"fraud", "AppID":"CloudTest", "ReqTime":"1665658696", "Details":[ {"Key":"ReqBillNo","Value":"16460183922615638888"}, {"Key":"TxnResult","Value":"0"}, {"Key":"Amount","Value":"10"}, {"Key":"Currency","Value":"CNY"} ] }, "UserInfo":{ "Details":[ {"Key":"UserID","Value":"123456"}, {"Key":"UserIDType","Value":"facebook"} ] }, "ChannelInfo":{ "Details":[ {"Key":"Channel","Value":"creditcard"}, {"Key":"ChannelBillNo","Value":"16460183922615638455"}, {"Key":"3DOffered","Value":"false"}, {"Key":"LiabilityShift","Value":"false"} ] }, "ClientInfo":{}, "SceneInfo":{}, "ExtraInfo":{} }
4.3、 输出示例
java
{ "Response":{ "Data":{ "UUid":"49ef4763-ea95-36a0-7e56-75e9be51cb47", "Code":0, "Message":"OK", "Value":{ "ResultCode":"0", "ResultInfo":"OK" } },"RequestId":"5f3036d2-674b-4137-ba2e-e7806507d9a4" } }

由...提供支持 Notaku