diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java index e88aa1957..9f9724c00 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java @@ -413,6 +413,10 @@ public class WxConsts { */ public static final String WEAPP_AUDIT_FAIL = "weapp_audit_fail"; + /** + * 小程序自定义交易组件支付通知 + */ + public static final String OPEN_PRODUCT_ORDER_PAY = "open_product_order_pay"; /** * 点击菜单跳转小程序的事件推送 */ diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/bean/WxMaMessageTest.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/bean/WxMaMessageTest.java index 098da74e5..bfdb912f6 100644 --- a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/bean/WxMaMessageTest.java +++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/bean/WxMaMessageTest.java @@ -6,6 +6,7 @@ import org.testng.annotations.Test; import java.util.List; import java.util.Map; +import static org.assertj.core.api.Assertions.as; import static org.assertj.core.api.Assertions.assertThat; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; @@ -291,4 +292,40 @@ public class WxMaMessageTest { .containsEntry("Lat", "0") .containsEntry("Lng", "0"); } + + /** + * 自定义交易组件付款通知事件测试用例 + * msgType等于event且event等于WxConsts.EventType.OPEN_PRODUCT_ORDER_PAY + */ + @Test + public void testFromXmlForOpenProductOrderPayEvent(){ + String xml = " \n" + + " gh_abcdefg \n" + + " oABCD \n" + + " 1642658087 \n" + + " event \n" + + " open_product_order_pay\n" + + " \n" + + " 123456\n" + + " 1234567\n" + + " 42000000123123\n" + + " 2021-12-30 22:31:00\n" + + " 10\n" + + " oNMZ-5C0SPGHUiKsTwnOXpSHzFvw\n" + + " \n" + + ""; + WxMaMessage wxMessage = WxMaMessage.fromXml(xml); + assertThat(wxMessage.getMsgType()).isEqualTo("event"); + assertThat(wxMessage.getEvent()).isEqualTo(WxConsts.EventType.OPEN_PRODUCT_ORDER_PAY); + Map allFieldsMap = wxMessage.getAllFieldsMap(); + Map orderInfo = (Map) allFieldsMap.get("order_info"); + assertThat(orderInfo).isNotEmpty(); + assertThat(orderInfo) + .containsEntry("out_order_id","123456") + .containsEntry("order_id","1234567") + .containsEntry("transaction_id","42000000123123") + .containsEntry("pay_time","2021-12-30 22:31:00") + .containsEntry("amount","10") + .containsEntry("sp_openid","oNMZ-5C0SPGHUiKsTwnOXpSHzFvw"); + } }