package constants const ( // RefundMethodOriginalRoute 表示按原支付渠道原路退款。 RefundMethodOriginalRoute = "original_route" // RefundMethodCustomerAccount 表示退至客户提供的收款信息。 RefundMethodCustomerAccount = "customer_account" // RefundMethodAssetWallet 表示退回原资产钱包。 RefundMethodAssetWallet = "asset_wallet" // RefundMethodAgentWallet 表示退回原代理主钱包。 RefundMethodAgentWallet = "agent_wallet" ) // RefundMethodName 返回退款方式中文名称。 func RefundMethodName(method string) string { switch method { case RefundMethodOriginalRoute: return "原路退款" case RefundMethodCustomerAccount: return "客户收款信息退款" case RefundMethodAssetWallet: return "退回资产钱包" case RefundMethodAgentWallet: return "退回代理主钱包" default: return "未知方式" } } const ( // RefundChannelStatusNone 表示未发起渠道退款或不适用该方式。 RefundChannelStatusNone = 0 // RefundChannelStatusProcessing 表示渠道退款已提交但结果未确认。 RefundChannelStatusProcessing = 1 // RefundChannelStatusSucceeded 表示渠道明确退款成功。 RefundChannelStatusSucceeded = 2 // RefundChannelStatusFailed 表示渠道明确退款失败。 RefundChannelStatusFailed = 3 ) // RefundChannelStatusName 返回渠道退款状态中文名称。 func RefundChannelStatusName(status int) string { switch status { case RefundChannelStatusProcessing: return "处理中" case RefundChannelStatusSucceeded: return "已成功" case RefundChannelStatusFailed: return "已失败" default: return "未发起" } } // 退款结构化失败分类稳定编码。 // 分类既用于详情展示与审计,也用于后续佣金回溯判定「明确失败可回溯 / 在途不可回溯」。 const ( // RefundFailureChannelRejected 表示渠道明确拒绝退款。 RefundFailureChannelRejected = "channel_rejected" // RefundFailureCredentialInvalid 表示该商户退款必需凭证缺失或失效,渠道侧不可执行。 RefundFailureCredentialInvalid = "credential_invalid" // RefundFailureInsufficientBalance 表示渠道账户余额不足。 RefundFailureInsufficientBalance = "insufficient_balance" // RefundFailureTimeoutUnknown 表示调用超时或渠道结果未确认,属可恢复状态。 RefundFailureTimeoutUnknown = "timeout_unknown" // RefundFailureApprovalRejected 表示企业微信驳回、撤销或删除。 RefundFailureApprovalRejected = "approval_rejected" // RefundFailureRevokedAfterApproved 表示企业微信通过后撤销,属需人工处理的异常。 RefundFailureRevokedAfterApproved = "revoked_after_approved" // RefundFailurePaymentFactInvalid 表示本地原支付单、实际收款商户、原渠道流水或可退金额校验不通过。 RefundFailurePaymentFactInvalid = "payment_fact_invalid" ) // RefundFailureReasonName 返回失败分类中文名称。 func RefundFailureReasonName(reason string) string { switch reason { case RefundFailureChannelRejected: return "渠道明确拒绝" case RefundFailureCredentialInvalid: return "渠道凭证失效" case RefundFailureInsufficientBalance: return "渠道余额不足" case RefundFailureTimeoutUnknown: return "超时或结果未知" case RefundFailureApprovalRejected: return "企业微信驳回或关闭" case RefundFailureRevokedAfterApproved: return "企业微信通过后撤销" case RefundFailurePaymentFactInvalid: return "本地原支付事实不可用" default: return "无失败" } } // RefundFailureReasonIsDefinitive 判断失败分类是否属于明确失败。 // 明确失败表示退款已终结且可进入后续回溯判定;超时未知与企业微信通过后撤销均非明确失败, // 前者保持可恢复、后者转人工处理,都不得据此回溯佣金。 func RefundFailureReasonIsDefinitive(reason string) bool { switch reason { case RefundFailureChannelRejected, RefundFailureCredentialInvalid, RefundFailureInsufficientBalance, RefundFailureApprovalRejected, RefundFailurePaymentFactInvalid: return true default: return false } }