一、背景说明
今天上线了新年红包的功能,但是部分用户提示了如下的异常,没有明显的异常提示,就是在查询ELK时,看了如下的错误提示,错误截图如图
提示“发送失败,此请求可能存在风险,已被微信拦截”
参考文档:
https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_4&index=3
二、问题分析
出现这个现象是由于用户账号被微信风控系统判定为风险用户了,为保证商户资金安全因此拦截了此次发放。建议使用活跃、已实名认证并且无违规使用行为的微信账号参与红包活动,避免被微信官方拦截。造成这个问题的原因可能有以下两种
2.1 存在有违规使用行为(例如:使用微信外挂软件等)
近年来商户在以微信企业红包的方式做经营活动的同时,也催生了“红包羊毛党”。
“红包羊毛党”一般通过囤积大量虚假微信帐号,批量参与活动以获得红包,甚至直接利用活动流程中的漏洞进行资金盗刷,严重损害了商户的利益。
因此,微信支付为商户提供了红包防刷能力,基于微信用户大数据,识别出帐号的风险等级并拦截高风险帐号,以保护商户资金安全。启用防刷会令异常的帐号无法领取红包,商户可以根据自身的用户体验和安全需求,设置是否开启以及选择不同的防刷等级。
登录微信支付商户平台 -> 产品中心 -> 现金红包 -> 产品设置 -> 修改防刷等级;
注意事项:关闭红包防刷机制后系统将无法为你拦截掉恶意用户、小号、机器号码,可能对你的资金造成风险,请商户慎重操作。
2.2 用户微信账号未实名认证导致的限额 或 微信账号是否长期未活跃
(1)、实名认证
微信用户对账号进行实名认证路径略
(2)、联系微信客服
拨打95017联系微信客服是否可以解除风险;
三、实际场景
3.1 微信领取红包有没有金额限制呢?
根据官方文档的描述:
如果您是财付通用户,则领取红包是没有金额限制的,但是如果系统发现此账号存在风险,则为了您账号的资金安全,系统会有所限制。
如果您非财付通用户,为了您的账号资金安全,领取红包是有金额限制的,最多能领取1000元的红包;若超过1000元还想继续领取红包,则需要在微信钱包中成功绑定银行卡后才可以继续领取。
3.2 原来是被限额了
用户反馈是他领取红包1月份限额了,要等到2月份才可以领取,导致红包发放失败(请求接口失败)
/**
* 微信红包的API地址
*/
public static final String SENDREDPACK_API_URL = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";