diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/error/WxMaErrorMsgEnum.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/error/WxMaErrorMsgEnum.java index ffe9b5e3ea..3f380543b0 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/error/WxMaErrorMsgEnum.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/error/WxMaErrorMsgEnum.java @@ -838,6 +838,34 @@ public enum WxMaErrorMsgEnum { */ CODE_89424(89424, "授权次数到达上限"), + /** + * 微信小程序虚拟支付错误码 + * + * @see 虚拟支付 API 文档 + */ + CODE_268490001(268490001, "openid错误"), + CODE_268490002(268490002, "请求参数字段错误,具体看errmsg"), + CODE_268490003(268490003, "签名错误"), + CODE_268490004(268490004, "重复操作(赠送和代币支付和充值广告金相关接口会返回,表示之前的操作已经成功)"), + CODE_268490005(268490005, "订单已经通过cancel_currency_pay接口退款,不支持再退款"), + CODE_268490006(268490006, "代币的退款/支付操作金额不足"), + CODE_268490007(268490007, "图片或文字存在敏感内容,禁止使用"), + CODE_268490008(268490008, "代币未发布,不允许进行代币操作"), + CODE_268490009(268490009, "用户session_key不存在或已过期,请重新登录"), + CODE_268490011(268490011, "数据生成中,请稍后调用本接口获取"), + CODE_268490012(268490012, "批量任务运行中,请等待完成后才能再次运行"), + CODE_268490013(268490013, "禁止对核销状态的单进行退款"), + CODE_268490014(268490014, "退款操作进行中,稍后可以使用相同参数重试"), + CODE_268490015(268490015, "频率限制"), + CODE_268490016(268490016, "退款的left_fee字段与实际不符,请通过query_order接口查询确认"), + CODE_268490018(268490018, "广告金充值账户行业id不匹配"), + CODE_268490019(268490019, "广告金充值账户id已绑定其他appid"), + CODE_268490020(268490020, "广告金充值账户主体名称错误"), + CODE_268490021(268490021, "账户未完成进件"), + CODE_268490022(268490022, "广告金充值账户无效"), + CODE_268490023(268490023, "广告金余额不足"), + CODE_268490024(268490024, "广告金充值金额必须大于0"), + ; private final int code; diff --git a/weixin-java-common/src/test/java/me/chanjar/weixin/common/error/WxMaErrorMsgEnumTest.java b/weixin-java-common/src/test/java/me/chanjar/weixin/common/error/WxMaErrorMsgEnumTest.java new file mode 100644 index 0000000000..66147bb7ec --- /dev/null +++ b/weixin-java-common/src/test/java/me/chanjar/weixin/common/error/WxMaErrorMsgEnumTest.java @@ -0,0 +1,62 @@ +package me.chanjar.weixin.common.error; + +import org.testng.annotations.Test; + +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertNull; + +/** + * 微信小程序错误码枚举测试 + * + * @author GitHub Copilot + */ +@Test +public class WxMaErrorMsgEnumTest { + + public void testFindMsgByCodeForExistingCode() { + String msg = WxMaErrorMsgEnum.findMsgByCode(40001); + assertNotNull(msg); + } + + public void testFindMsgByCodeForNonExistingCode() { + String msg = WxMaErrorMsgEnum.findMsgByCode(999999); + assertNull(msg); + } + + /** + * 验证微信小程序虚拟支付错误码 + */ + public void testVirtualPaymentErrorCodes() { + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490001), "openid错误"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490002), "请求参数字段错误,具体看errmsg"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490003), "签名错误"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490004), "重复操作(赠送和代币支付和充值广告金相关接口会返回,表示之前的操作已经成功)"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490005), "订单已经通过cancel_currency_pay接口退款,不支持再退款"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490006), "代币的退款/支付操作金额不足"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490007), "图片或文字存在敏感内容,禁止使用"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490008), "代币未发布,不允许进行代币操作"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490009), "用户session_key不存在或已过期,请重新登录"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490011), "数据生成中,请稍后调用本接口获取"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490012), "批量任务运行中,请等待完成后才能再次运行"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490013), "禁止对核销状态的单进行退款"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490014), "退款操作进行中,稍后可以使用相同参数重试"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490015), "频率限制"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490016), "退款的left_fee字段与实际不符,请通过query_order接口查询确认"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490018), "广告金充值账户行业id不匹配"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490019), "广告金充值账户id已绑定其他appid"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490020), "广告金充值账户主体名称错误"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490021), "账户未完成进件"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490022), "广告金充值账户无效"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490023), "广告金余额不足"); + assertEquals(WxMaErrorMsgEnum.findMsgByCode(268490024), "广告金充值金额必须大于0"); + } + + /** + * 验证虚拟支付错误码中不存在的编号(如268490010、268490017)返回null + */ + public void testVirtualPaymentMissingCodes() { + assertNull(WxMaErrorMsgEnum.findMsgByCode(268490010)); + assertNull(WxMaErrorMsgEnum.findMsgByCode(268490017)); + } +}