开发指南

API 文档

小程序风控 API

最近更新时间:2021-11-25 15:48:33

接口说明

当前风控API包括如下2项能力。

  1. “帐号风险识别”提供给第三方APP商户和开发者识别授权登录主体黑灰产恶意等级的能力。由于微信安全团队在微信内通过风控拦截了相当一部分黑灰产团伙,阻止其进一步作恶,因此他们将目光投向了授权登录的第三方商户或者APP。通过该能力,第三方商户和开发者可以识别授权登录主体的风险恶意等级,以便快速地制定安全策略,保障业务安全。
  2. “营销活动反作弊”能力是微信安全团队为了与黑灰产团伙长期对抗而开发的强大安全技术,通过风险识别引擎,对小程序、微信授权登录的移动应用的营销活动提供安全技术支持和防护意见,精准识别“羊毛党”、“黄牛党”等恶意群体。在第三方App的商户进行补贴、优惠等商业营销活动时,保护第三方产品的营销资源,降低业务安全问题给产品带来的损失,为相关活动保驾护航。

申请使用

目前微信安全风险识别能力需要申请使用,发送邮件到 elontian@tencent.com,填写公司名、对接人手机号码、小程序名、使用场景说明。我们将在3个工作日内,与您联系接入使用。

接口鉴权方式

接口地址:POST https://api.weixin.qq.com/tcb/servicemarket?access_token=this-is-your-accesstoken

说明:

接口调用的参数是 ACCESS_TOKEN,所以需要获取开发者票据:

  • access_token,开发者票据获取方式(小程序):https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html
  • access_token,开发者票据获取方式(移动应用):https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Smart_APIs/servicemarket.html

示例:

curl https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appId&secret=secret

接口参数说明

请求

小程序请求数据示例

{
    "service": "wxd8a88093cf541a77",
    "api": "weopensecriskservice",
    "data": {
        "openid": "openid",
        "serviceid": 3,
        "sale_risk": {
            "mchcode": "mchcode",
            "phonenum": "phonenum",
            "certid": "certid",
            "wifibssid": "wifibssid",
            "clientip": "clientip",
            "deviceid": "deviceid"
        }
    },
    "client_msg_id": "1234567890"
}

请求参数

参数名称 描述 类型 是否必选
access_token 开发者票据 string
service 服务 ID,业务风险识别服务 ID:wxd8a88093cf541a77 string
api 接口名,业务风险识别接口名:weopensecriskservice string
data 服务提供方接口定义的 JSON 格式的数据 string
client_msg_id 随机字符串 ID,调用方请求的唯一标识,随机值,例如:client_msg_id_${random_string} string

服务请求 data 数据说明

参数名称 描述 类型 是否必选
openid 用户 openid string
serviceid 营销风险识别 serviceid = 3,账号风险识别为 2 number
user_access_token 用户票据,仅移动应用必须
注意:当来源是移动应用时,为必选项。
string
mchcode 商户号 string
phonenum 用户手机号 string
certid 证件 ID string
wifibssid 用户网络环境 WIFI 信息 string
clientip 用户客户端 IP string
deviceid 用户设备信息(Android:IMEI;iOS:IDFA) string

返回

返回数据示例

{
 "errcode": 0,
 "errmsg": "ok",
 "data": "{\"code\": 0,\"msg\": \"$msg\",\"data\":{\"risklevel\": 3}"
}

服务返回 data 说明

参数名称 描述 类型 是否必选
code 返回状态码 number
msg 返回说明信息,若 code 码正常则此处为空,若 code 码为错误则次数说明错误原因 string
data.risklevel 风险识别等级:
0-无风险
1-低风险
2-中风险
3-高风险
风险等级>=1,业务侧可以考虑增加风控措施
number

服务返回 data 内 code 字段说明

返回码 说明
0 请求成功
1 data 内参数错误
2 非正常的 openid
3 该产品尚无权限调用
4 内部服务错误
5 内部服务错误
6 内部服务错误
7 内部服务错误
8 内部服务错误
9 serviceid 参数错误
10 内部服务错误
11 非正常的 openid
12 当前用户未登录无法使用该产品
13 余额不足,无法请求

调用接口

营销活动反作弊

接口说明:将 小程序请求数据示例 中的数据 openid 替换为真实用户 openid 可以调通,另外注意:sale_risk 下级参数可选,但是 sale_risk 本身不可省略。

调用示例:

curl --header "Content-Type: application/json" --request POST --data \
'{"service":"wxd8a88093cf541a77","api":"weopensecriskservice","data":{"openid":"oPDER5U0VMARiyXxUruU4SYmyOiw","serviceid":3,"sale_risk":{"mchcode":"mchcode","phonenum":"phonenum","certid":"certid","wifibssid":"wifibssid","clientip":"clientip","deviceid":"deviceid"}},"client_msg_id":"1234567890"}' \
  https://api.weixin.qq.com/tcb/servicemarket\?access_token\=this-is-your-accesstoken

{"errcode":0,"errmsg":"ok","data":"{\"code\":0,\"msg\":\"请求成功\",\"data\":{\"risklevel\":0}}","request_id":"MLx7w80xCxC2GxvudqpZjJXbYWsuQhYmPobZki66-kFOTVB9xG3UiCDh8hIb8X8Njow","provider_errmsg":""}

帐号风险识别

接口说明:将 小程序请求数据示例 中的数据 openid 替换为真实用户 openid 可以调通,另外注意:login_risk 下级参数可选,但是 login_risk 本身不可省略。

调用示例:

curl --header "Content-Type: application/json" --request POST --data \
'{"service":"wxd8a88093cf541a77","api":"weopensecuseracctrisklevel","data":{"openid":"oPDER5U0VMARiyXxUruU4SYmyOiw","serviceid":2,"login_risk":{"mchcode":"mchcode","phonenum":"phonenum","certid":"certid","wifibssid":"wifibssid","clientip":"clientip","deviceid":"deviceid"}},"client_msg_id":"client_msg_id_wxd8a88093cf541a77"}' \
  https://api.weixin.qq.com/tcb/servicemarket?access_token=43_j1p5v9s_euINp-JJu7hfP0FFoWtK7ztuiQJBXNsxlLdE1L4KA-dEJfOoLHWf1oZhH2ZnnULFvOQZTQtEIKLyHD9ZXYdbXVyIIYbbZNU27idcwUn7EUUqesEFXVAMlqFxdTLNZ6RzNTxxxKInOTShAEAXCB

{"errcode":0,"errmsg":"ok","data":"{\"code\":0,\"msg\":\"请求成功\",\"data\":{\"risklevel\":0}}","request_id":"MLzsyVZzE4Wru-xlcihkjbFws5ByWab9DQPLH_Ku7l9eQASbp9y6GnB7cgmoXNXSBvE","provider_errmsg":""}

代码示例

营销活动反作弊 接口代码示例:

pip install requests
python getsalerisk.py

getsalerisk.py 代码如下:

# -*- coding: utf-8 -*-
import requests
import json

def get_access_token(appid, secret):
    getAccessTokenUrl = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}'.format(appid, secret)
    getAccessTokenReq = requests.get(getAccessTokenUrl)
    getAccessTokenReqContent = json.loads(getAccessTokenReq.text)
    access_token = getAccessTokenReqContent['access_token']
    return access_token


def getsalerisk(appid, secret, openid):
    # 获取开放者票据
    access_token = get_access_token(appid, secret)
    # 请求营销反作弊接口
    Url = 'https://api.weixin.qq.com/wxa/servicemarket?access_token={0}'.format(access_token)
    data = json.dumps({
        "service": "wxd8a88093cf541a77",
        "api": "weopensecriskservice",
        "data": {
            "openid": "{0}".format(openid),
            "serviceid": 3,
            "sale_risk": {
                "mchcode": "mchcode",
                "phonenum": "phonenum",
                "certid": "certid",
                "wifibssid": "wifibssid",
                "clientip": "clientip",
                "deviceid": "deviceid"
            }},
        "client_msg_id": "client_msg_id_wxd8a88093cf541a77"
    })

    session = requests.Session()

    req = session.post(Url, data)

    total_seconds = req.elapsed.total_seconds()

    reqcontent = req.text

    return (str(total_seconds), reqcontent)


if __name__ == '__main__':
    appid = 'your-appid'
    secret = 'your-secret'
    openid = 'openid'
    res = getsalerisk(appid, secret, openid)
    print(res)

目录