|
1 | 1 | package cn.binarywang.wx.miniapp.bean; |
2 | 2 |
|
| 3 | +import cn.binarywang.wx.miniapp.bean.xpay.WxMaXPayTeamInfo; |
3 | 4 | import me.chanjar.weixin.common.api.WxConsts; |
4 | 5 | import org.testng.annotations.Test; |
5 | 6 |
|
@@ -294,38 +295,97 @@ public void testFromXmlForAllFieldsMap() { |
294 | 295 | } |
295 | 296 |
|
296 | 297 | /** |
297 | | - * 自定义交易组件付款通知事件测试用例 |
298 | | - * msgType等于event且event等于WxConsts.EventType.OPEN_PRODUCT_ORDER_PAY |
| 298 | + * 虚拟支付退款推送事件 xpay_refund_notify 测试用例(XML格式,含TeamInfo) |
299 | 299 | */ |
300 | 300 | @Test |
301 | | - public void testFromXmlForOpenProductOrderPayEvent(){ |
302 | | - String xml = "<xml> \n" + |
303 | | - " <ToUserName>gh_abcdefg</ToUserName> \n" + |
304 | | - " <FromUserName>oABCD</FromUserName> \n" + |
305 | | - " <CreateTime>1642658087</CreateTime> \n" + |
306 | | - " <MsgType>event</MsgType> \n" + |
307 | | - " <Event>open_product_order_pay</Event>\n" + |
308 | | - " <order_info>\n" + |
309 | | - " <out_order_id>123456</out_order_id>\n" + |
310 | | - " <order_id>1234567</order_id>\n" + |
311 | | - " <transaction_id>42000000123123</transaction_id>\n" + |
312 | | - " <pay_time>2021-12-30 22:31:00</pay_time>\n" + |
313 | | - " <amount>10</amount>\n" + |
314 | | - " <sp_openid>oNMZ-5C0SPGHUiKsTwnOXpSHzFvw</sp_openid>\n" + |
315 | | - " </order_info>\n" + |
| 301 | + public void testXPayRefundNotifyFromXml() { |
| 302 | + String xml = "<xml>\n" + |
| 303 | + " <ToUserName><![CDATA[gh_abcdefg]]></ToUserName>\n" + |
| 304 | + " <FromUserName><![CDATA[oABCDEFG]]></FromUserName>\n" + |
| 305 | + " <CreateTime>1700000000</CreateTime>\n" + |
| 306 | + " <MsgType><![CDATA[event]]></MsgType>\n" + |
| 307 | + " <Event><![CDATA[xpay_refund_notify]]></Event>\n" + |
| 308 | + " <OpenId><![CDATA[oABCDEFG]]></OpenId>\n" + |
| 309 | + " <WxRefundId><![CDATA[wx_refund_123]]></WxRefundId>\n" + |
| 310 | + " <MchRefundId><![CDATA[mch_refund_456]]></MchRefundId>\n" + |
| 311 | + " <WxOrderId><![CDATA[wx_order_789]]></WxOrderId>\n" + |
| 312 | + " <MchOrderId><![CDATA[mch_order_101]]></MchOrderId>\n" + |
| 313 | + " <RefundFee>100</RefundFee>\n" + |
| 314 | + " <RetCode>0</RetCode>\n" + |
| 315 | + " <RetMsg><![CDATA[success]]></RetMsg>\n" + |
| 316 | + " <RefundStartTimestamp>1700000000</RefundStartTimestamp>\n" + |
| 317 | + " <RefundSuccTimestamp>1700000010</RefundSuccTimestamp>\n" + |
| 318 | + " <WxpayRefundTransactionId><![CDATA[wxpay_refund_tx_202]]></WxpayRefundTransactionId>\n" + |
| 319 | + " <RetryTimes>0</RetryTimes>\n" + |
| 320 | + " <TeamInfo>\n" + |
| 321 | + " <ActivityId><![CDATA[act_001]]></ActivityId>\n" + |
| 322 | + " <TeamId><![CDATA[team_002]]></TeamId>\n" + |
| 323 | + " <TeamType>1</TeamType>\n" + |
| 324 | + " <TeamAction>0</TeamAction>\n" + |
| 325 | + " </TeamInfo>\n" + |
316 | 326 | "</xml>"; |
317 | | - WxMaMessage wxMessage = WxMaMessage.fromXml(xml); |
318 | | - assertThat(wxMessage.getMsgType()).isEqualTo("event"); |
319 | | - assertThat(wxMessage.getEvent()).isEqualTo(WxConsts.EventType.OPEN_PRODUCT_ORDER_PAY); |
320 | | - Map<String, Object> allFieldsMap = wxMessage.getAllFieldsMap(); |
321 | | - Map<String, Object> orderInfo = (Map<String, Object>) allFieldsMap.get("order_info"); |
322 | | - assertThat(orderInfo).isNotEmpty(); |
323 | | - assertThat(orderInfo) |
324 | | - .containsEntry("out_order_id","123456") |
325 | | - .containsEntry("order_id","1234567") |
326 | | - .containsEntry("transaction_id","42000000123123") |
327 | | - .containsEntry("pay_time","2021-12-30 22:31:00") |
328 | | - .containsEntry("amount","10") |
329 | | - .containsEntry("sp_openid","oNMZ-5C0SPGHUiKsTwnOXpSHzFvw"); |
| 327 | + |
| 328 | + WxMaMessage msg = WxMaMessage.fromXml(xml); |
| 329 | + checkXPayRefundNotifyMessage(msg); |
| 330 | + } |
| 331 | + |
| 332 | + /** |
| 333 | + * 虚拟支付退款推送事件 xpay_refund_notify 测试用例(JSON格式,含TeamInfo) |
| 334 | + */ |
| 335 | + @Test |
| 336 | + public void testXPayRefundNotifyFromJson() { |
| 337 | + String json = "{\n" + |
| 338 | + " \"ToUserName\": \"gh_abcdefg\",\n" + |
| 339 | + " \"FromUserName\": \"oABCDEFG\",\n" + |
| 340 | + " \"CreateTime\": 1700000000,\n" + |
| 341 | + " \"MsgType\": \"event\",\n" + |
| 342 | + " \"Event\": \"xpay_refund_notify\",\n" + |
| 343 | + " \"OpenId\": \"oABCDEFG\",\n" + |
| 344 | + " \"WxRefundId\": \"wx_refund_123\",\n" + |
| 345 | + " \"MchRefundId\": \"mch_refund_456\",\n" + |
| 346 | + " \"WxOrderId\": \"wx_order_789\",\n" + |
| 347 | + " \"MchOrderId\": \"mch_order_101\",\n" + |
| 348 | + " \"RefundFee\": 100,\n" + |
| 349 | + " \"RetCode\": 0,\n" + |
| 350 | + " \"RetMsg\": \"success\",\n" + |
| 351 | + " \"RefundStartTimestamp\": 1700000000,\n" + |
| 352 | + " \"RefundSuccTimestamp\": 1700000010,\n" + |
| 353 | + " \"WxpayRefundTransactionId\": \"wxpay_refund_tx_202\",\n" + |
| 354 | + " \"RetryTimes\": 0,\n" + |
| 355 | + " \"TeamInfo\": {\n" + |
| 356 | + " \"ActivityId\": \"act_001\",\n" + |
| 357 | + " \"TeamId\": \"team_002\",\n" + |
| 358 | + " \"TeamType\": 1,\n" + |
| 359 | + " \"TeamAction\": 0\n" + |
| 360 | + " }\n" + |
| 361 | + "}"; |
| 362 | + |
| 363 | + WxMaMessage msg = WxMaMessage.fromJson(json); |
| 364 | + checkXPayRefundNotifyMessage(msg); |
| 365 | + } |
| 366 | + |
| 367 | + private void checkXPayRefundNotifyMessage(WxMaMessage msg) { |
| 368 | + assertEquals(msg.getToUser(), "gh_abcdefg"); |
| 369 | + assertEquals(msg.getFromUser(), "oABCDEFG"); |
| 370 | + assertEquals(msg.getCreateTime(), new Integer(1700000000)); |
| 371 | + assertEquals(msg.getMsgType(), WxConsts.XmlMsgType.EVENT); |
| 372 | + assertEquals(msg.getEvent(), "xpay_refund_notify"); |
| 373 | + assertEquals(msg.getWxRefundId(), "wx_refund_123"); |
| 374 | + assertEquals(msg.getMchRefundId(), "mch_refund_456"); |
| 375 | + assertEquals(msg.getWxOrderId(), "wx_order_789"); |
| 376 | + assertEquals(msg.getMchOrderId(), "mch_order_101"); |
| 377 | + assertEquals(msg.getRefundFee(), new Integer(100)); |
| 378 | + assertEquals(msg.getRetCode(), new Integer(0)); |
| 379 | + assertEquals(msg.getRetMsg(), "success"); |
| 380 | + assertEquals(msg.getRefundStartTimestamp(), new Long(1700000000L)); |
| 381 | + assertEquals(msg.getRefundSuccTimestamp(), new Long(1700000010L)); |
| 382 | + assertEquals(msg.getWxpayRefundTransactionId(), "wxpay_refund_tx_202"); |
| 383 | + assertEquals(msg.getRetryTimes(), new Integer(0)); |
| 384 | + WxMaXPayTeamInfo teamInfo = msg.getTeamInfo(); |
| 385 | + assertNotNull(teamInfo); |
| 386 | + assertEquals(teamInfo.getActivityId(), "act_001"); |
| 387 | + assertEquals(teamInfo.getTeamId(), "team_002"); |
| 388 | + assertEquals(teamInfo.getTeamType(), new Integer(1)); |
| 389 | + assertEquals(teamInfo.getTeamAction(), new Integer(0)); |
330 | 390 | } |
331 | 391 | } |
0 commit comments