voucher/internal/biz/businesserr/cpn_multi.go

198 lines
6.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package businesserr
// 公共 & 业务错误码常量(统一定义,前缀 MULTI_
// https://pay.weixin.qq.com/doc/v3/merchant/4012463767
const (
MULTI_PARAM_ERROR ErrCode = "PARAM_ERROR" // 参数错误(如缺少必填字段)
MULTI_INVALID_REQUEST ErrCode = "INVALID_REQUEST" // 非法请求(如 OpenID 与 AppID 不匹配、批次状态异常等)
MULTI_SIGN_ERROR ErrCode = "SIGN_ERROR" // 签名验证失败
MULTI_SYSTEM_ERROR ErrCode = "SYSTEM_ERROR" // 系统异常
MULTI_APPID_MCHID_NOT_MATCH ErrCode = "APPID_MCHID_NOT_MATCH" // 商户号与 AppID 不匹配
MULTI_MCH_NOT_EXISTS ErrCode = "MCH_NOT_EXISTS" // 商户号不合法
MULTI_NOT_ENOUGH ErrCode = "NOT_ENOUGH" // 资源不足(预算/余额/限额耗尽)
MULTI_REQUEST_BLOCKED ErrCode = "REQUEST_BLOCKED" // 请求被拦截(跨商户、渠道限制等)
MULTI_RULE_LIMIT ErrCode = "RULE_LIMIT" // 用户或自然人达到领取上限
MULTI_USER_ACCOUNT_ABNORMAL ErrCode = "USER_ACCOUNT_ABNORMAL" // 用户账号异常(风控、未实名等)
MULTI_RESOURCE_NOT_EXISTS ErrCode = "RESOURCE_NOT_EXISTS" // 批次不存在
)
// MULTIAPIErrorMap 定义错误映射,方便根据错误码获取所有可能的错误场景
var CmbMULTIAPIErrorMap = map[ErrCode][]CmbAPIError{
MULTI_SYSTEM_ERROR: {
{
StatusCode: 500,
ErrorCode: MULTI_SYSTEM_ERROR,
Description: "系统异常,请稍后重试",
Hint: "请稍后重试",
ThirdErrCode: ThirdErrCodeDefault,
},
},
MULTI_SIGN_ERROR: {
{
StatusCode: 401,
ErrorCode: MULTI_SIGN_ERROR,
Description: "验证不通过",
Hint: "请参阅 签名常见问题",
ThirdErrCode: ThirdErrCodeDefault,
},
},
MULTI_APPID_MCHID_NOT_MATCH: {
{
StatusCode: 400,
ErrorCode: MULTI_APPID_MCHID_NOT_MATCH,
Description: "商户号与AppID不匹配",
Hint: "调用接口的商户号需与接口传入的AppID有绑定关系请参考常见问题Q4",
ThirdErrCode: ThirdErrCodeDefault,
},
},
MULTI_INVALID_REQUEST: {
{
StatusCode: 400,
ErrorCode: MULTI_INVALID_REQUEST,
Description: "HTTP 请求不符合微信支付 APIv3 接口规则",
Hint: "请参阅 接口规则",
ThirdErrCode: ThirdErrCodeDefault,
},
{
StatusCode: 400,
ErrorCode: MULTI_INVALID_REQUEST,
Description: "非法的商户号",
Hint: "请检查商户号准确性",
ThirdErrCode: ThirdErrCodeDefault,
},
{
StatusCode: 400,
ErrorCode: MULTI_INVALID_REQUEST,
Description: "OpenID与AppID不匹配",
Hint: "OpenID与AppID需有对应关系",
ThirdErrCode: ThirdErrCodeAppIDOpenIDMismatch,
},
},
MULTI_PARAM_ERROR: {
{
StatusCode: 400,
ErrorCode: MULTI_PARAM_ERROR,
Description: "参数错误",
Hint: "请根据错误提示正确传入参数",
ThirdErrCode: ThirdErrCodeDefault,
},
{
StatusCode: 400,
ErrorCode: MULTI_PARAM_ERROR,
Description: "AppID必填",
Hint: "请输入AppID",
ThirdErrCode: ThirdErrCodeDefault,
},
{
StatusCode: 400,
ErrorCode: MULTI_PARAM_ERROR,
Description: "OpenID必填",
Hint: "请输入OpenID",
ThirdErrCode: ThirdErrCodeDefault,
},
{
StatusCode: 400,
ErrorCode: MULTI_PARAM_ERROR,
Description: "批次号必填",
Hint: "请输入批次号",
ThirdErrCode: ThirdErrCodeDefault,
},
{
StatusCode: 400,
ErrorCode: MULTI_PARAM_ERROR,
Description: "商户号必填",
Hint: "请输入商户号",
ThirdErrCode: ThirdErrCodeDefault,
},
},
MULTI_MCH_NOT_EXISTS: {
{
StatusCode: 403,
ErrorCode: MULTI_MCH_NOT_EXISTS,
Description: "商户号不合法",
Hint: "请检查商户号准确性",
ThirdErrCode: ThirdErrCodeDefault,
},
},
MULTI_NOT_ENOUGH: {
{
StatusCode: 403,
ErrorCode: MULTI_NOT_ENOUGH,
Description: "批次预算耗尽",
Hint: "该批次的预算已经耗尽",
ThirdErrCode: ThirdErrCodeAdvanceFundingNotEnough,
},
{
StatusCode: 403,
ErrorCode: MULTI_NOT_ENOUGH,
Description: "账户余额不足,请充值",
Hint: "商户号余额不足,无法继续发券,请充值",
ThirdErrCode: ThirdErrCodeAdvanceFundingNotEnough,
},
{
StatusCode: 403,
ErrorCode: MULTI_NOT_ENOUGH,
Description: "发券超过单天限额",
Hint: "已超过该批次设置的单天发放限制额度,无法发放",
ThirdErrCode: ThirdErrCodeDailyLimit,
},
},
MULTI_REQUEST_BLOCKED: {
{
StatusCode: 403,
ErrorCode: MULTI_REQUEST_BLOCKED,
Description: "参数错误,请检查批次参数",
Hint: "活动未开始或已结束",
ThirdErrCode: ThirdErrCodeBatchNotStarted, // 时间前置判断一下
},
{
StatusCode: 403,
ErrorCode: MULTI_REQUEST_BLOCKED,
Description: "仅在广告场景下发放批次",
Hint: "该批次已在朋友圈广告发放,不支持在其他渠道发放",
ThirdErrCode: ThirdErrCodeDefault,
},
{
StatusCode: 403,
ErrorCode: MULTI_REQUEST_BLOCKED,
Description: "商户号收款功能受限,无法发券",
Hint: "商户号收款功能受限",
ThirdErrCode: ThirdErrCodeDefault,
},
{
StatusCode: 403,
ErrorCode: MULTI_REQUEST_BLOCKED,
Description: "批次不支持跨商户发券",
Hint: "该批次不支持其他商户发放",
ThirdErrCode: ThirdErrCodeDefault,
},
},
MULTI_RULE_LIMIT: {
{
StatusCode: 403,
ErrorCode: MULTI_RULE_LIMIT,
Description: "用户已达最大领券次数",
Hint: "该用户已达到该批次的领取上限",
ThirdErrCode: ThirdErrCodeUserParticipationExceeded,
},
},
MULTI_USER_ACCOUNT_ABNORMAL: {
{
StatusCode: 403,
ErrorCode: MULTI_USER_ACCOUNT_ABNORMAL,
Description: "用户未实名",
Hint: "该用户无实名信息,无法领券。商家可联系微信支付或让用户联系微信支付客服处理。",
ThirdErrCode: ThirdErrCodeUserNotRealNameVerified,
},
},
MULTI_RESOURCE_NOT_EXISTS: {
{
StatusCode: 404,
ErrorCode: MULTI_RESOURCE_NOT_EXISTS,
Description: "批次不存在",
Hint: "请检查批次及制券商户号信息",
ThirdErrCode: ThirdErrCodeDefault,
},
},
}