diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CardMerchantCheckResultEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CardMerchantCheckResultEvent.xml
new file mode 100644
index 00000000..d6eb522f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CardMerchantCheckResultEvent.xml
@@ -0,0 +1,10 @@
+
+
+
+ 123456789
+
+
+ 0
+ 1
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CardNotPassCheckEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CardNotPassCheckEvent.xml
new file mode 100644
index 00000000..810910a4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CardNotPassCheckEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 123456789
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CardPassCheckEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CardPassCheckEvent.xml
new file mode 100644
index 00000000..ce0abe21
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CardPassCheckEvent.xml
@@ -0,0 +1,8 @@
+
+
+
+ 123456789
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CardSKURemindEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CardSKURemindEvent.xml
new file mode 100644
index 00000000..269a18c2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CardSKURemindEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 1443838506
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CloudInvoiceResultEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CloudInvoiceResultEvent.xml
new file mode 100644
index 00000000..2cb7b1b0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/CloudInvoiceResultEvent.xml
@@ -0,0 +1,11 @@
+
+
+
+
+ 123456789
+
+
+
+ 100
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/GiftCardPayDoneEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/GiftCardPayDoneEvent.xml
new file mode 100644
index 00000000..17f19922
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/GiftCardPayDoneEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 1472631550
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/GiftCardSendToFriendEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/GiftCardSendToFriendEvent.xml
new file mode 100644
index 00000000..0eef386c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/GiftCardSendToFriendEvent.xml
@@ -0,0 +1,11 @@
+
+
+
+ 1472631550
+
+
+
+
+ true
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/GiftCardUserAcceptEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/GiftCardUserAcceptEvent.xml
new file mode 100644
index 00000000..16273c18
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/GiftCardUserAcceptEvent.xml
@@ -0,0 +1,10 @@
+
+
+
+ 1472631800
+
+
+
+
+ true
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/OrderStatusFinanceSuccessEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/OrderStatusFinanceSuccessEvent.xml
new file mode 100644
index 00000000..0189ecbd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/OrderStatusFinanceSuccessEvent.xml
@@ -0,0 +1,19 @@
+
+
+
+ 1453295737
+
+
+
+
+ 1453295737
+ 0
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/SubmitMemberCardUserInfoEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/SubmitMemberCardUserInfoEvent.xml
new file mode 100644
index 00000000..7827fd66
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/SubmitMemberCardUserInfoEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 1432668700
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UpdateMemberCardEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UpdateMemberCardEvent.xml
new file mode 100644
index 00000000..ead3f565
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UpdateMemberCardEvent.xml
@@ -0,0 +1,11 @@
+
+
+
+ 1445507140
+
+
+
+
+ 3
+ 0
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserAuthorizeInvoiceEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserAuthorizeInvoiceEvent.xml
new file mode 100644
index 00000000..6aecc63a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserAuthorizeInvoiceEvent.xml
@@ -0,0 +1,11 @@
+
+
+
+ 1475134700
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserConsumeCardEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserConsumeCardEvent.xml
new file mode 100644
index 00000000..ab8ed8ec
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserConsumeCardEvent.xml
@@ -0,0 +1,15 @@
+
+
+
+ 1472549042
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserDeleteCardEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserDeleteCardEvent.xml
new file mode 100644
index 00000000..f4e7b766
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserDeleteCardEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 123456789
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserEnterSessionFromCardEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserEnterSessionFromCardEvent.xml
new file mode 100644
index 00000000..da6d4e58
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserEnterSessionFromCardEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 123456789
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserGetCardEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserGetCardEvent.xml
new file mode 100644
index 00000000..b7522d5f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserGetCardEvent.xml
@@ -0,0 +1,17 @@
+
+
+
+ 1472551036
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+ 0
+ o6_bmasdasdsad6_2sgVt7hMZOPfL
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserGiftingCardEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserGiftingCardEvent.xml
new file mode 100644
index 00000000..a4487263
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserGiftingCardEvent.xml
@@ -0,0 +1,12 @@
+
+
+
+ 1474181868
+
+
+
+
+ 0
+
+ 0
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserPayFromPayCellEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserPayFromPayCellEvent.xml
new file mode 100644
index 00000000..6c71e414
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserPayFromPayCellEvent.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+ 1442390947
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 291710000
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserViewCardEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserViewCardEvent.xml
new file mode 100644
index 00000000..73176857
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Card/UserViewCardEvent.xml
@@ -0,0 +1,10 @@
+
+
+
+ 1467811138
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/CardInvoice/CloudInvoiceResultEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/CardInvoice/CloudInvoiceResultEvent.xml
new file mode 100644
index 00000000..64632518
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/CardInvoice/CloudInvoiceResultEvent.xml
@@ -0,0 +1,10 @@
+
+
+
+ 123456789
+
+
+
+ 100
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/CardInvoice/SubmitInvoiceTitleEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/CardInvoice/SubmitInvoiceTitleEvent.xml
new file mode 100644
index 00000000..11b75ad2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/CardInvoice/SubmitInvoiceTitleEvent.xml
@@ -0,0 +1,15 @@
+
+
+
+ 123456789
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/CardInvoice/UpdateInvoiceStatusEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/CardInvoice/UpdateInvoiceStatusEvent.xml
new file mode 100644
index 00000000..50f3ca2b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/CardInvoice/UpdateInvoiceStatusEvent.xml
@@ -0,0 +1,10 @@
+
+
+
+ 1478068440
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/CardInvoice/UserAuthorizeInvoiceEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/CardInvoice/UserAuthorizeInvoiceEvent.xml
new file mode 100644
index 00000000..6aecc63a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/CardInvoice/UserAuthorizeInvoiceEvent.xml
@@ -0,0 +1,11 @@
+
+
+
+ 1475134700
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Merchant/MerchantOrderEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Merchant/MerchantOrderEvent.xml
new file mode 100644
index 00000000..5786910e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/Merchant/MerchantOrderEvent.xml
@@ -0,0 +1,11 @@
+
+
+
+ 1398144192
+
+
+
+ 2
+
+
+
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/AnnualRenewEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/AnnualRenewEvent.xml
new file mode 100644
index 00000000..102d7b0f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/AnnualRenewEvent.xml
@@ -0,0 +1,8 @@
+
+
+
+ 1442401004
+
+
+ 1442401004
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/NamingVerifyFailEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/NamingVerifyFailEvent.xml
new file mode 100644
index 00000000..52e9b5fc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/NamingVerifyFailEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 1442401061
+
+
+ 1442401061
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/NamingVerifySuccessEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/NamingVerifySuccessEvent.xml
new file mode 100644
index 00000000..8896629a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/NamingVerifySuccessEvent.xml
@@ -0,0 +1,8 @@
+
+
+
+ 1442401093
+
+
+ 1442401093
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/QualificationVerifyFailEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/QualificationVerifyFailEvent.xml
new file mode 100644
index 00000000..8699a2be
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/QualificationVerifyFailEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 1442401156
+
+
+ 1442401122
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/QualificationVerifySuccessEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/QualificationVerifySuccessEvent.xml
new file mode 100644
index 00000000..9169a2db
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/QualificationVerifySuccessEvent.xml
@@ -0,0 +1,8 @@
+
+
+
+ 1442401156
+
+
+ 1442401156
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/VerifyExpiredEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/VerifyExpiredEvent.xml
new file mode 100644
index 00000000..f142e7fe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpAccreditation/VerifyExpiredEvent.xml
@@ -0,0 +1,8 @@
+
+
+
+ 1442400900
+
+
+ 1442400900
+
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpGuide/GuideQrcodeScanEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpGuide/GuideQrcodeScanEvent.xml
new file mode 100644
index 00000000..7d873d1a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpGuide/GuideQrcodeScanEvent.xml
@@ -0,0 +1,14 @@
+
+
+
+ 1546924844
+
+
+
+ ![CDATA[xxx]]
+ ![CDATA[xxx]]
+ ![CDATA[xxx]]
+ 11
+ ![CDATA[xxx]]
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpJob/MassSendJobFinishEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpJob/MassSendJobFinishEvent.xml
new file mode 100644
index 00000000..a1af58ff
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpJob/MassSendJobFinishEvent.xml
@@ -0,0 +1,48 @@
+
+
+
+ 1481013459
+
+
+ 1000001625
+
+ 0
+ 0
+ 0
+ 0
+
+ 2
+
+ -
+ 1
+ 0
+ 2
+
+ 1
+ 1
+ 1
+ 1
+
+ -
+ 2
+ 0
+ 2
+
+ 1
+ 1
+ 1
+ 1
+
+
+ 2
+
+
+ 1
+
+ -
+ 1
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpJob/TemplateSendJobFinishEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpJob/TemplateSendJobFinishEvent.xml
new file mode 100644
index 00000000..f9f52589
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpJob/TemplateSendJobFinishEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 1395658920
+
+
+ 200163836
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/ImageMessageEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/ImageMessageEvent.xml
new file mode 100644
index 00000000..14ae2e0f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/ImageMessageEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 1348831860
+
+
+
+ 1234567890123456
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/LocationMessageEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/LocationMessageEvent.xml
new file mode 100644
index 00000000..c5497ffc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/LocationMessageEvent.xml
@@ -0,0 +1,10 @@
+
+
+
+ 1351776360
+
+
+
+
+ 1234567890123456
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/ShortVideoMessageEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/ShortVideoMessageEvent.xml
new file mode 100644
index 00000000..07fac186
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/ShortVideoMessageEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 1357290913
+
+
+
+ 1234567890123456
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/TextMessageEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/TextMessageEvent.xml
new file mode 100644
index 00000000..d3d4954a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/TextMessageEvent.xml
@@ -0,0 +1,8 @@
+
+
+
+ 1348831860
+
+
+ 1234567890123456
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/VideoMessageEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/VideoMessageEvent.xml
new file mode 100644
index 00000000..fb988034
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/VideoMessageEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 1357290913
+
+
+
+ 1234567890123456
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/VoiceMessageEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/VoiceMessageEvent.xml
new file mode 100644
index 00000000..9e2734fc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpMessage/VoiceMessageEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 1357290913
+
+
+
+ 1234567890123456
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ClickPushEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ClickPushEvent.xml
new file mode 100644
index 00000000..71482b45
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ClickPushEvent.xml
@@ -0,0 +1,8 @@
+
+
+
+ 123456789
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/LocationPushEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/LocationPushEvent.xml
new file mode 100644
index 00000000..c0e90e2d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/LocationPushEvent.xml
@@ -0,0 +1,10 @@
+
+
+
+ 123456789
+
+
+ 23.137466
+ 113.352425
+ 119.385040
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ScanCodePushEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ScanCodePushEvent.xml
new file mode 100644
index 00000000..f26fad12
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ScanCodePushEvent.xml
@@ -0,0 +1,12 @@
+
+
+
+ 1408090502
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ScanPushEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ScanPushEvent.xml
new file mode 100644
index 00000000..b6c780fb
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ScanPushEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 123456789
+
+
+
+
+
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/SubscribePushEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/SubscribePushEvent.xml
new file mode 100644
index 00000000..44d493fb
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/SubscribePushEvent.xml
@@ -0,0 +1,7 @@
+
+
+
+ 123456789
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/UnsubscribePushEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/UnsubscribePushEvent.xml
new file mode 100644
index 00000000..2dea21fa
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/UnsubscribePushEvent.xml
@@ -0,0 +1,7 @@
+
+
+
+ 123456789
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ViewMiniProgramPushEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ViewMiniProgramPushEvent.xml
new file mode 100644
index 00000000..a5e655dc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ViewMiniProgramPushEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 123456789
+
+
+
+ MENUID
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ViewPushEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ViewPushEvent.xml
new file mode 100644
index 00000000..7606f4d5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpPush/ViewPushEvent.xml
@@ -0,0 +1,8 @@
+
+
+
+ 123456789
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpSubscribeMessage/SubscribeMessageChangeEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpSubscribeMessage/SubscribeMessageChangeEvent.xml
new file mode 100644
index 00000000..de1e3ea8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpSubscribeMessage/SubscribeMessageChangeEvent.xml
@@ -0,0 +1,13 @@
+
+
+
+ 1610969440
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpSubscribeMessage/SubscribeMessagePopupEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpSubscribeMessage/SubscribeMessagePopupEvent.xml
new file mode 100644
index 00000000..d0efe165
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpSubscribeMessage/SubscribeMessagePopupEvent.xml
@@ -0,0 +1,19 @@
+
+
+
+ 1610969440
+
+
+
+
+
+
+ 2
+
+
+
+
+ 2
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpSubscribeMessage/SubscribeMessageSentEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpSubscribeMessage/SubscribeMessageSentEvent.xml
new file mode 100644
index 00000000..4de67a4d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/MpSubscribeMessage/SubscribeMessageSentEvent.xml
@@ -0,0 +1,15 @@
+
+
+
+ 1610969468
+
+
+
+
+
+ 1700827132819554304
+ 0
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/OpenComponent/ComponentVerifyTicketEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/OpenComponent/ComponentVerifyTicketEvent.xml
new file mode 100644
index 00000000..2895e209
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/OpenComponent/ComponentVerifyTicketEvent.xml
@@ -0,0 +1,6 @@
+
+ some_appid
+ 1413192605
+ component_verify_ticket
+ some_verify_ticket
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/POI/POICheckNotifyEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/POI/POICheckNotifyEvent.xml
new file mode 100644
index 00000000..0b6f2a91
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/POI/POICheckNotifyEvent.xml
@@ -0,0 +1,11 @@
+
+
+
+ 1408622107
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/AddExpressPathEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/AddExpressPathEvent.json
new file mode 100644
index 00000000..e872f683
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/AddExpressPathEvent.json
@@ -0,0 +1,29 @@
+{
+ "ToUserName": "toUser",
+ "FromUserName": "fromUser",
+ "CreateTime": 1546924844,
+ "MsgType": "event",
+ "Event": "add_express_path",
+ "DeliveryID": "SF",
+ "WayBillId": "123456789",
+ "OrderId": "123456789",
+ "Version": 2,
+ "Count": 3,
+ "Actions": [
+ {
+ "ActionTime": 1546924840,
+ "ActionType": 100001,
+ "ActionMsg": "小哥A揽件成功"
+ },
+ {
+ "ActionTime": 1546924841,
+ "ActionType": 200001,
+ "ActionMsg": "到达广州集包地"
+ },
+ {
+ "ActionTime": 1546924842,
+ "ActionType": 200001,
+ "ActionMsg": "运往目的地"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/AddExpressPathEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/AddExpressPathEvent.xml
new file mode 100644
index 00000000..ac34ecf1
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/AddExpressPathEvent.xml
@@ -0,0 +1,27 @@
+
+
+
+ 1546924844
+
+
+
+
+
+ 3
+ 3
+
+ 1546924840
+ 100001
+
+
+
+ 1546924841
+ 200001
+
+
+
+ 1546924842
+ 200001
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/AddWaybillEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/AddWaybillEvent.json
new file mode 100644
index 00000000..8e07757a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/AddWaybillEvent.json
@@ -0,0 +1,63 @@
+{
+ "ToUserName": "gh_abcdefg",
+ "FromUserName": "oABCD",
+ "CreateTime": 1533042556,
+ "MsgType": "event",
+ "Event": "add_waybill",
+ "Token": "1234ABC234523451",
+ "OrderID": "012345678901234567890123456789",
+ "BizID": "xyz",
+ "BizPwd": "xyz123",
+ "ShopAppID": "wxABCD",
+ "WayBillID": "123456789",
+ "Remark": "易碎物品",
+ "Sender": {
+ "Name": "张三",
+ "Tel": "020-88888888",
+ "Mobile": "18666666666",
+ "Company": "公司名",
+ "PostCode": "123456",
+ "Country": "中国",
+ "Province": "广东省",
+ "City": "广州市",
+ "Area": "海珠区",
+ "Address": "XX路XX号XX大厦XX栋XX"
+ },
+ "Receiver": {
+ "Name": "王小蒙",
+ "Tel": "029-77777777",
+ "Mobile": "18610000000",
+ "Company": "公司名",
+ "PostCode": "654321",
+ "Country": "中国",
+ "Province": "广东省",
+ "City": "广州市",
+ "Area": "天河区",
+ "Address": "XX路XX号XX大厦XX栋XX"
+ },
+ "Cargo": {
+ "Weight": 1.2,
+ "Space_X": 20.5,
+ "Space_Y": 15,
+ "Space_Z": 10,
+ "Count": 2,
+ "DetailList": [
+ {
+ "Name": "一千零一夜钻石包",
+ "Count": 1
+ },
+ {
+ "Name": "爱马仕柏金钻石包",
+ "Count": 1
+ }
+ ]
+ },
+ "Insured": {
+ "UseInsured": 1,
+ "InsuredValue": 10000
+ },
+ "Service": {
+ "ServiceType": 0,
+ "ServiceName": "标准快递"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/AddWaybillEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/AddWaybillEvent.xml
new file mode 100644
index 00000000..1d146937
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/AddWaybillEvent.xml
@@ -0,0 +1,61 @@
+
+
+
+ 1533042556
+
+
+ 1234ABC234523451
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.2
+ 20.5
+ 15.0
+ 10.0
+ 2
+
+
+ 1
+
+
+
+ 1
+
+
+
+ 1
+ 10000
+
+
+ 0
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/CancelWaybillEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/CancelWaybillEvent.json
new file mode 100644
index 00000000..309f638e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/CancelWaybillEvent.json
@@ -0,0 +1,12 @@
+{
+ "ToUserName": "gh_abcdefg",
+ "FromUserName": "oABCD",
+ "CreateTime": 1533042556,
+ "MsgType": "event",
+ "Event": "cancel_waybill",
+ "BizID": "xyz",
+ "BizPwd": "xyz123",
+ "ShopAppID": "wxABCD",
+ "OrderID": "012345678901234567890123456789",
+ "WayBillID": "123456789"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/CancelWaybillEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/CancelWaybillEvent.xml
new file mode 100644
index 00000000..32695107
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/CancelWaybillEvent.xml
@@ -0,0 +1,12 @@
+
+
+
+ 1533042556
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/CheckBusinessEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/CheckBusinessEvent.json
new file mode 100644
index 00000000..aaa2f3a7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/CheckBusinessEvent.json
@@ -0,0 +1,18 @@
+{
+ "ToUserName": "gh_abcdefg",
+ "FromUserName": "oABCD",
+ "CreateTime": 1533042556,
+ "MsgType": "event",
+ "Event": "check_biz",
+ "BizID": "xyz",
+ "BizPwd": "xyz123",
+ "ShopAppID": "wxABCD",
+ "ShopName": "商户名称",
+ "ShopTelphone": "18677778888",
+ "ShopContact": "村正",
+ "ServiceName": "标准快递",
+ "SenderProvince": "广东省",
+ "SenderCity": "广州市",
+ "SenderArea": "海珠区",
+ "SenderAddress": "新港中路397号"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/CheckBusinessEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/CheckBusinessEvent.xml
new file mode 100644
index 00000000..3e9baf2b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/CheckBusinessEvent.xml
@@ -0,0 +1,18 @@
+
+
+
+ 1533042556
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/GetQuotaEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/GetQuotaEvent.json
new file mode 100644
index 00000000..8e03e87e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/GetQuotaEvent.json
@@ -0,0 +1,10 @@
+{
+ "ToUserName": "gh_abcdefg",
+ "FromUserName": "oABCD",
+ "CreateTime": 1533042556,
+ "MsgType": "event",
+ "Event": "get_quota",
+ "BizID": "xyz",
+ "BizPwd": "xyz123",
+ "ShopAppID": "wxABCD"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/GetQuotaEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/GetQuotaEvent.xml
new file mode 100644
index 00000000..eb5c18ca
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/GetQuotaEvent.xml
@@ -0,0 +1,10 @@
+
+
+
+ 1533042556
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/UpdateBusinessBindResultEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/UpdateBusinessBindResultEvent.json
new file mode 100644
index 00000000..33a328f0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/UpdateBusinessBindResultEvent.json
@@ -0,0 +1,9 @@
+{
+ "ToUserName": "toUser",
+ "FromUserName": "fromUser",
+ "CreateTime": 1546924844,
+ "MsgType": "event",
+ "Event": "update_business_bind_result",
+ "delivery_id": "EMS",
+ "biz_id": "1234567"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/UpdateBusinessBindResultEvent.xml b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/UpdateBusinessBindResultEvent.xml
new file mode 100644
index 00000000..0995b177
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaExpress/UpdateBusinessBindResultEvent.xml
@@ -0,0 +1,9 @@
+
+
+
+ 1546924844
+
+
+
+
+
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaImmediateDelivery/UpdateWaybillStatusEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaImmediateDelivery/UpdateWaybillStatusEvent.json
new file mode 100644
index 00000000..77037241
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaImmediateDelivery/UpdateWaybillStatusEvent.json
@@ -0,0 +1,18 @@
+{
+ "ToUserName": "toUser",
+ "FromUserName": "fromUser",
+ "CreateTime": 1546924844,
+ "MsgType": "event",
+ "Event": "update_waybill_status",
+ "shopid": "123456",
+ "shop_order_id": "123456",
+ "waybill_id": "123456",
+ "action_time": 1546924844,
+ "order_status": 102,
+ "action_msg": "",
+ "shop_no": "123456",
+ "agent": {
+ "name": "xxx",
+ "phone": "1234567"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaSecurity/WxaMediaCheckEvent.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaSecurity/WxaMediaCheckEvent.json
new file mode 100644
index 00000000..7466286b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/EventSamples/WxaSecurity/WxaMediaCheckEvent.json
@@ -0,0 +1,12 @@
+{
+ "ToUserName": "gh_38cc49f9733b",
+ "FromUserName": "oH1fu0FdHqpToe2T6gBj0WyB8iS1",
+ "CreateTime": 1552465698,
+ "MsgType": "event",
+ "Event": "wxa_media_check",
+ "isrisky": 0,
+ "extra_info_json": "",
+ "appid": "wxd8c59133dfcbfc71",
+ "trace_id": "967e945cd8a3e458f3c74dcb886068e9",
+ "status_code": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageAICropRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageAICropRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageAICropRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageAICropResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageAICropResponse.json
new file mode 100644
index 00000000..471105fe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageAICropResponse.json
@@ -0,0 +1,22 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "results": [
+ {
+ "crop_left": 112,
+ "crop_top": 0,
+ "crop_right": 839,
+ "crop_bottom": 727
+ },
+ {
+ "crop_left": 0,
+ "crop_top": 205,
+ "crop_right": 965,
+ "crop_bottom": 615
+ }
+ ],
+ "img_size": {
+ "w": 966,
+ "h": 728
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageQrcodeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageQrcodeRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageQrcodeRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageQrcodeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageQrcodeResponse.json
new file mode 100644
index 00000000..9c15be39
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageQrcodeResponse.json
@@ -0,0 +1,62 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "code_results": [
+ {
+ "type_name": "QR_CODE",
+ "data": "http://www.qq.com",
+ "pos": {
+ "left_top": {
+ "x": 585,
+ "y": 378
+ },
+ "right_top": {
+ "x": 828,
+ "y": 378
+ },
+ "right_bottom": {
+ "x": 828,
+ "y": 618
+ },
+ "left_bottom": {
+ "x": 585,
+ "y": 618
+ }
+ }
+ },
+ {
+ "type_name": "QR_CODE",
+ "data": "https://mp.weixin.qq.com",
+ "pos": {
+ "left_top": {
+ "x": 185,
+ "y": 142
+ },
+ "right_top": {
+ "x": 396,
+ "y": 142
+ },
+ "right_bottom": {
+ "x": 396,
+ "y": 353
+ },
+ "left_bottom": {
+ "x": 185,
+ "y": 353
+ }
+ }
+ },
+ {
+ "type_name": "EAN_13",
+ "data": "5906789678957"
+ },
+ {
+ "type_name": "CODE_128",
+ "data": "50090500019191"
+ }
+ ],
+ "img_size": {
+ "w": 1000,
+ "h": 900
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageSuperResolutionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageSuperResolutionRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageSuperResolutionRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageSuperResolutionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageSuperResolutionResponse.json
new file mode 100644
index 00000000..932fb464
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/Image/CVImageSuperResolutionResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "media_id": "6WXsIXkG7lXuDLspD9xfm5dsvHzb0EFl0li6ySxi92ap8Vl3zZoD9DpOyNudeJGB"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRBankCardRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRBankCardRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRBankCardRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRBankCardResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRBankCardResponse.json
new file mode 100644
index 00000000..ac38253f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRBankCardResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": "0",
+ "errmsg": "ok",
+ "number": "622213XXXXXXXXX"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRBusinessLicenseRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRBusinessLicenseRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRBusinessLicenseRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRBusinessLicenseResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRBusinessLicenseResponse.json
new file mode 100644
index 00000000..5d2b8682
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRBusinessLicenseResponse.json
@@ -0,0 +1,40 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "reg_num": "123123",
+ "serial": "123123",
+ "legal_representative": "张三",
+ "enterprise_name": "XX饮食店",
+ "type_of_organization": "个人经营",
+ "address": "XX市XX区XX路XX号",
+ "type_of_enterprise": "xxx",
+ "business_scope": "中型餐馆(不含凉菜、不含裱花蛋糕,不含生食海产品)。",
+ "registered_capital": "200万",
+ "paid_in_capital": "200万",
+ "valid_period": "2019年1月1日",
+ "registered_date": "2018年1月1日",
+ "cert_position": {
+ "pos": {
+ "left_top": {
+ "x": 155,
+ "y": 191
+ },
+ "right_top": {
+ "x": 725,
+ "y": 157
+ },
+ "right_bottom": {
+ "x": 743,
+ "y": 512
+ },
+ "left_bottom": {
+ "x": 164,
+ "y": 525
+ }
+ }
+ },
+ "img_size": {
+ "w": 966,
+ "h": 728
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRCommonRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRCommonRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRCommonRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRCommonResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRCommonResponse.json
new file mode 100644
index 00000000..fdc43bf6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRCommonResponse.json
@@ -0,0 +1,52 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "items": [
+ {
+ "text": "腾讯",
+ "pos": {
+ "left_top": {
+ "x": 575,
+ "y": 519
+ },
+ "right_top": {
+ "x": 744,
+ "y": 519
+ },
+ "right_bottom": {
+ "x": 744,
+ "y": 532
+ },
+ "left_bottom": {
+ "x": 573,
+ "y": 532
+ }
+ }
+ },
+ {
+ "text": "微信团队",
+ "pos": {
+ "left_top": {
+ "x": 670,
+ "y": 516
+ },
+ "right_top": {
+ "x": 762,
+ "y": 517
+ },
+ "right_bottom": {
+ "x": 762,
+ "y": 532
+ },
+ "left_bottom": {
+ "x": 670,
+ "y": 531
+ }
+ }
+ }
+ ],
+ "img_size": {
+ "w": 1280,
+ "h": 720
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRDrivingLicenseRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRDrivingLicenseRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRDrivingLicenseRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRDrivingLicenseResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRDrivingLicenseResponse.json
new file mode 100644
index 00000000..4ff418ae
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRDrivingLicenseResponse.json
@@ -0,0 +1,15 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "id_num": "660601xxxxxxxx1234",
+ "name": "张三",
+ "sex": "男",
+ "nationality": "中国",
+ "address": "广东省东莞市xxxxx号",
+ "birth_date": "1990-12-21",
+ "issue_date": "2012-12-21",
+ "car_class": "C1",
+ "valid_from": "2018-07-06",
+ "valid_to": "2020-07-01",
+ "official_seal": "xx市公安局公安交通管理局"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRDrivingRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRDrivingRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRDrivingRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRDrivingResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRDrivingResponse.json
new file mode 100644
index 00000000..6f9fe711
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRDrivingResponse.json
@@ -0,0 +1,64 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "plate_num": "粤xxxxx",
+ "vehicle_type": "小型普通客车",
+ "owner": "东莞市xxxxx机械厂",
+ "addr": "广东省东莞市xxxxx号",
+ "use_character": "非营运",
+ "model": "江淮牌HFCxxxxxxx",
+ "vin": "LJ166xxxxxxxx51",
+ "engine_num": "J3xxxxx3",
+ "register_date": "2018-07-06",
+ "issue_date": "2018-07-01",
+ "plate_num_b": "粤xxxxx",
+ "record": "441xxxxxx3",
+ "passengers_num": "7人",
+ "total_quality": "2700kg",
+ "prepare_quality": "1995kg",
+ "overall_size": "4582x1795x1458mm",
+ "card_position_front": {
+ "pos": {
+ "left_top": {
+ "x": 119,
+ "y": 2925
+ },
+ "right_top": {
+ "x": 1435,
+ "y": 2887
+ },
+ "right_bottom": {
+ "x": 1435,
+ "y": 3793
+ },
+ "left_bottom": {
+ "x": 119,
+ "y": 3831
+ }
+ }
+ },
+ "card_position_back": {
+ "pos": {
+ "left_top": {
+ "x": 1523,
+ "y": 2849
+ },
+ "right_top": {
+ "x": 2898,
+ "y": 2887
+ },
+ "right_bottom": {
+ "x": 2927,
+ "y": 3831
+ },
+ "left_bottom": {
+ "x": 1523,
+ "y": 3831
+ }
+ }
+ },
+ "img_size": {
+ "w": 3120,
+ "h": 4208
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRIdCardRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRIdCardRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRIdCardRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRIdCardResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRIdCardResponse.json
new file mode 100644
index 00000000..f182aea6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRIdCardResponse.json
@@ -0,0 +1,11 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "type": "Front",
+ "name": "张三",
+ "id": "123456789012345678",
+ "addr": "广东省广州市XXX",
+ "gender": "男",
+ "nationality": "汉",
+ "valid_date": "20171025-20271025"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRPlateNumberRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRPlateNumberRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRPlateNumberRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRPlateNumberResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRPlateNumberResponse.json
new file mode 100644
index 00000000..4298418b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CV/OCR/CVOCRPlateNumberResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "number": "粤A123456"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardBatchGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardBatchGetRequest.json
new file mode 100644
index 00000000..5e0c0ee3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardBatchGetRequest.json
@@ -0,0 +1,5 @@
+{
+ "offset": 0,
+ "count": 10,
+ "status_list": [ "CARD_STATUS_VERIFY_OK", "CARD_STATUS_DISPATCH" ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardBatchGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardBatchGetResponse.json
new file mode 100644
index 00000000..19fbd965
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardBatchGetResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "card_id_list": [ "ph_gmt7cUVrlRk8swPwx7aDyF-pg" ],
+ "total_num": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardCreateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardCreateRequest.json
new file mode 100644
index 00000000..1eb3b7f7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardCreateRequest.json
@@ -0,0 +1,337 @@
+{
+ "card": {
+ "card_type": "GROUPON",
+ "groupon": {
+ "base_info": {
+ "sub_merchant_info": {
+ "merchant_id": "123456"
+ },
+ "logo_url": "http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFNjakmxibMLGWpXrEXB33367o7zHN0CwngnQY7zb7g/0",
+ "brand_name": "微信餐厅",
+ "code_type": "CODE_TYPE_TEXT",
+ "title": "132元双人火锅套餐",
+ "color": "Color010",
+ "notice": "使用时向服务员出示此券",
+ "service_phone": "020-88888888",
+ "description": "不可与其他优惠同享\n如需团购券发票,请在消费时向商户提出\n店内均可使用,仅限堂食",
+ "date_info": {
+ "type": "DATE_TYPE_FIX_TIME_RANGE",
+ "begin_timestamp": 1397577600,
+ "end_timestamp": 1472724261
+ },
+ "sku": {
+ "quantity": 500000
+ },
+ "use_limit": 100,
+ "get_limit": 3,
+ "use_custom_code": false,
+ "bind_openid": false,
+ "can_share": true,
+ "can_give_friend": true,
+ "location_id_list": [
+ 123,
+ 12321,
+ 345345
+ ],
+ "center_title": "顶部居中按钮",
+ "center_sub_title": "按钮下方的wording",
+ "center_url": "www.qq.com",
+ "custom_url_name": "立即使用",
+ "custom_url": "http://www.qq.com",
+ "custom_url_sub_title": "6个汉字tips",
+ "promotion_url_name": "更多优惠",
+ "promotion_url": "http://www.qq.com"
+ },
+ "advanced_info": {
+ "use_condition": {
+ "accept_category": "鞋类",
+ "reject_category": "阿迪达斯",
+ "can_use_with_other_discount": true
+ },
+ "abstract": {
+ "abstract": "微信餐厅推出多种新季菜品,期待您的光临",
+ "icon_url_list": [
+ "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sjpiby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw / 0 "
+ ]
+ },
+ "text_image_list": [
+ {
+ "image_url": "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sjpiby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0",
+ "text": "此菜品精选食材,以独特的烹饪方法,最大程度地刺激食 客的味蕾"
+ },
+ {
+ "image_url": "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sj piby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0",
+ "text": "此菜品迎合大众口味,老少皆宜,营养均衡"
+ }
+ ],
+ "time_limit": [
+ {
+ "type": "MONDAY",
+ "begin_hour": 0,
+ "end_hour": 10,
+ "begin_minute": 10,
+ "end_minute": 59
+ },
+ {
+ "type": "HOLIDAY"
+ }
+ ],
+ "business_service": [
+ "BIZ_SERVICE_FREE_WIFI",
+ "BIZ_SERVICE_WITH_PET",
+ "BIZ_SERVICE_FREE_PARK",
+ "BIZ_SERVICE_DELIVER"
+ ]
+ },
+ "deal_detail": "以下锅底2选1(有菌王锅、麻辣锅、大骨锅、番茄锅、清补 凉锅、酸菜鱼锅可选):\n大锅1份 12元\n小锅2份 16元 "
+ },
+ "cash": {
+ "base_info": {
+ },
+ "advanced_info": {
+ },
+ "least_cost": 1000,
+ "reduce_cost": 100
+ },
+ "discount": {
+ "base_info": {
+ },
+ "advanced_info": {
+ },
+ "discount": 30
+ },
+ "gift": {
+ "base_info": {
+ },
+ "advanced_info": {
+ },
+ "gift": "可兑换音乐木盒一个"
+ },
+ "general_coupon": {
+ "base_info": {
+ },
+ "advanced_info": {
+ },
+ "default_detail": "优惠券专用,填写优惠详情"
+ },
+ "general_card": {
+ "sub_card_type": "GIFT_CARD",
+ "background_pic_url": "https://mmbiz.qlogo.cn/mmbiz/",
+ "base_info": {
+ "max_give_friend_times": 1,
+ "giftcard_info": {
+ "price": 1
+ },
+ "logo_url": "https://mmbiz.qlogo.cn/mmbiz/p98FjXy8LaeMq67mEpDmkj05EtiaVcGOibVaVux3Agib1ibcHFkCoic7HuQWFawx9XGCNWIO085drjdxTib2nBHlYGAA/0?wx_fmt=gif",
+ "brand_name": "微信咖啡厅",
+ "code_type": "CODE_TYPE_QRCODE",
+ "title": "心意卡",
+ "color": "Color020",
+ "notice": "使用时向服务员出示",
+ "service_phone": "020-88888888",
+ "description": "不可与其他优惠同享",
+ "date_info": {
+ "type": "DATE_TYPE_FIX_TIME_RANGE",
+ "begin_timestamp": 1397577600,
+ "end_timestamp": 1472724261
+ },
+ "sku": {
+ "quantity": 50000000
+ },
+ "get_limit": 0,
+ "use_custom_code": false,
+ "can_give_friend": true,
+ "location_id_list": [
+ 213059884
+ ],
+ "center_title": "顶部居中按钮",
+ "center_sub_title": "按钮下方的wording",
+ "center_url": "www.qq.com",
+ "center_app_brand_user_name": "gh_86a091e50ad4@app",
+ "center_app_brand_pass": "pages/index/index",
+ "custom_url_name": "新品推荐",
+ "custom_url": "https://www.starbucks.com.cn/",
+ "custom_app_brand_user_name": "gh_86a091e50ad4@app",
+ "custom_app_brand_pass": "pages/index/index",
+ "need_push_on_view": true
+ },
+ "advanced_info": {
+ "text_image_list": [
+ {
+ "image_url": "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sjpiby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0",
+ "text": "此菜品精选食材,以独特的烹饪方法,最大程度地刺激食 客的味"
+ },
+ {
+ "image_url": "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sj piby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0",
+ "text": "此菜品迎合大众口味,老少皆宜,营养均衡"
+ }
+ ]
+ },
+ "supply_balance": true,
+ "prerogative": "礼品卡享受更多优惠",
+ "auto_activate": true,
+ "init_balance": 10000,
+ "custom_field1": {
+ "name": "优惠券",
+ "url": ""
+ },
+ "custom_field2": {
+ "name": "兑换券",
+ "url": ""
+ }
+ },
+ "member_card": {
+ "background_pic_url": "https://mmbiz.qlogo.cn/mmbiz/",
+ "base_info": {
+ "logo_url": "http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZ/0",
+ "brand_name": "海底捞",
+ "code_type": "CODE_TYPE_TEXT",
+ "title": "海底捞会员卡",
+ "color": "Color010",
+ "notice": "使用时向服务员出示此券",
+ "service_phone": "020-88888888",
+ "description": "不可与其他优惠同享",
+ "date_info": {
+ "type": "DATE_TYPE_PERMANENT"
+ },
+ "sku": {
+ "quantity": 50000000
+ },
+ "get_limit": 3,
+ "use_custom_code": false,
+ "can_give_friend": true,
+ "location_id_list": [
+ 123,
+ 12321
+ ],
+ "custom_url_name": "立即使用",
+ "custom_url": "http://weixin.qq.com",
+ "custom_url_sub_title": "6个汉字tips",
+ "promotion_url_name": "营销入口1",
+ "promotion_url": "http://www.qq.com",
+ "need_push_on_view": true,
+ "pay_info": {
+ "swipe_card": {
+ "is_swipe_card": true
+ }
+ }
+ },
+ "advanced_info": {
+ "use_condition": {
+ "accept_category": "鞋类",
+ "reject_category": "阿迪达斯",
+ "can_use_with_other_discount": true
+ },
+ "abstract": {
+ "abstract": "微信餐厅推出多种新季菜品,期待您的光临",
+ "icon_url_list": [
+ "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sjpiby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0"
+ ]
+ },
+ "text_image_list": [
+ {
+ "image_url": "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sjpiby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0",
+ "text": "此菜品精选食材,以独特的烹饪方法,最大程度地刺激食 客的味蕾"
+ },
+ {
+ "image_url": "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sj piby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0",
+ "text": "此菜品迎合大众口味,老少皆宜,营养均衡"
+ }
+ ],
+ "time_limit": [
+ {
+ "type": "MONDAY",
+ "begin_hour": 0,
+ "end_hour": 10,
+ "begin_minute": 10,
+ "end_minute": 59
+ },
+ {
+ "type": "HOLIDAY"
+ }
+ ],
+ "business_service": [
+ "BIZ_SERVICE_FREE_WIFI",
+ "BIZ_SERVICE_WITH_PET",
+ "BIZ_SERVICE_FREE_PARK",
+ "BIZ_SERVICE_DELIVER"
+ ]
+ },
+ "supply_bonus": true,
+ "supply_balance": false,
+ "prerogative": "test_prerogative",
+ "auto_activate": true,
+ "custom_field1": {
+ "name_type": "FIELD_NAME_TYPE_LEVEL",
+ "url": "http://www.qq.com"
+ },
+ "activate_url": "http://www.qq.com",
+ "custom_cell1": {
+ "name": "使用入口2",
+ "tips": "激活后显示",
+ "url": "http://www.qq.com"
+ },
+ "bonus_rule": {
+ "cost_money_unit": 100,
+ "increase_bonus": 1,
+ "max_increase_bonus": 200,
+ "init_increase_bonus": 10,
+ "cost_bonus_unit": 5,
+ "reduce_money": 100,
+ "least_money_to_use_bonus": 1000,
+ "max_reduce_bonus": 50
+ },
+ "discount": 10
+ },
+ "meeting_ticket": {
+ "base_info": {
+ "logo_url": "http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFNjakmxibMLGWpXrEXB33367o7zHN0CwngnQY7zb7g/0",
+ "brand_name": "票务公司",
+ "code_type": "CODE_TYPE_TEXT",
+ "title": "XX会议",
+ "color": "Color010",
+ "notice": "使用时向检票员出示此券",
+ "service_phone": "020-88888888",
+ "description": "请务必准时入场",
+ "date_info": {
+ "type": "1",
+ "begin_timestamp": 1397577600,
+ "end_timestamp": 1422724261
+ },
+ "sku": {
+ "quantity": 50000000
+ },
+ "get_limit": 3,
+ "use_custom_code": false,
+ "bind_openid": false,
+ "can_share": true,
+ "can_give_friend": true,
+ "location_id_list": [ 123, 12321, 345345 ],
+ "custom_url_name": "查看更多",
+ "custom_url": "http://www.qq.com",
+ "custom_url_sub_title": "6个汉字tips"
+ },
+ "meeting_detail": "会议时间:xxx;地点:xxx "
+ },
+ "scenic_ticket": {
+ "base_info": {
+ },
+ "ticket_class": "全日票"
+ },
+ "movie_ticket": {
+ "base_info": {
+ },
+ "detail": "电影名:xxx,电影简介:xxx"
+ },
+ "boarding_pass": {
+ "base_info": {
+ },
+ "from": "成都",
+ "to": "广州",
+ "flight": "CE123",
+ "departure_time": "1434507901",
+ "landing_time": "1434909901",
+ "air_model": "空客A320"
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardCreateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardCreateResponse.json
new file mode 100644
index 00000000..39d048f3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardCreateResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "card_id": "p1Pj9jr90_SQRaVqYI239Ka1erkI"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardDeleteRequest.json
new file mode 100644
index 00000000..150f18dc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardDeleteRequest.json
@@ -0,0 +1,3 @@
+{
+ "card_id": "pFS7Fjg8kV1IdDz01r4SQwMkuCKc"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardDeleteResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardDeleteResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardGetRequest.json
new file mode 100644
index 00000000..150f18dc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardGetRequest.json
@@ -0,0 +1,3 @@
+{
+ "card_id": "pFS7Fjg8kV1IdDz01r4SQwMkuCKc"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardGetResponse.json
new file mode 100644
index 00000000..8a54d37c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardGetResponse.json
@@ -0,0 +1,58 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "card": {
+ "card_type": "DISCOUNT",
+ "discount": {
+ "base_info": {
+ "id": "pbLatjnP97_F9PudzBARQhn7xR7A",
+ "logo_url": "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LafmY25YclQ7vw5noBxeVH3DG5AKFR1ZsRgMgsvjll7EkUsZib00J964AEpTjkNXF2HorJHt5mtt45Q/0?wx_fmt=png",
+ "code_type": "CODE_TYPE_NONE",
+ "brand_name": "微信餐厅",
+ "title": "9折优惠券",
+ "date_info": {
+ "type": "DATE_TYPE_FIX_TERM",
+ "fixed_term": 30,
+ "fixed_begin_term": 0
+ },
+ "color": "#10AD61",
+ "notice": "到店使用",
+ "description": "",
+ "location_id_list": [
+ 218384742,
+ 402521653,
+ 402521608
+ ],
+ "get_limit": 3,
+ "can_share": true,
+ "can_give_friend": true,
+ "status": "CARD_STATUS_VERIFY_OK",
+ "sku": {
+ "quantity": 100096,
+ "total_quantity": 100100
+ },
+ "create_time": 1457525546,
+ "update_time": 1457526240
+ },
+ "discount": 10,
+ "advanced_info": {
+ "time_limit": [
+ {
+ "type": "MONDAY"
+ },
+ {
+ "type": "TUESDAY"
+ }
+ ],
+ "text_image_list": [],
+ "business_service": [],
+ "abstract": {
+ "abstract": "点击了解更多",
+ "icon_url_list": [
+ "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LafiawSeJeqBzk8qC40iaKIwUPm4TSCelulzEbAywKr7tWjkd5vRjbmFloUFeThfwhwMUZIXmsCtJpyQ/0?wx_fmt=jpeg"
+ ]
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardLandingPageCreateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardLandingPageCreateRequest.json
new file mode 100644
index 00000000..ff491a2c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardLandingPageCreateRequest.json
@@ -0,0 +1,16 @@
+{
+ "banner": "http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFN",
+ "page_title": "惠城优惠大派送",
+ "can_share": true,
+ "scene": "SCENE_NEAR_BY",
+ "card_list": [
+ {
+ "card_id": "pXch-jnOlGtbuWwIO2NDftZeynRE",
+ "thumb_url": "www.qq.com/a.jpg"
+ },
+ {
+ "card_id": "pXch-jnAN-ZBoRbiwgqBZ1RV60fI",
+ "thumb_url": "www.qq.com/b.jpg"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardLandingPageCreateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardLandingPageCreateResponse.json
new file mode 100644
index 00000000..dd85426e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardLandingPageCreateResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "url": "www.test.url",
+ "page_id": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardModifyStockRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardModifyStockRequest.json
new file mode 100644
index 00000000..8a1e520c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardModifyStockRequest.json
@@ -0,0 +1,5 @@
+{
+ "card_id": "pFS7Fjg8kV1IdDz01r4SQwMkuCKc",
+ "increase_stock_value": 1231231,
+ "reduce_stock_value": 1231231
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardModifyStockResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardModifyStockResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardModifyStockResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardMpnewsGetHtmlRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardMpnewsGetHtmlRequest.json
new file mode 100644
index 00000000..8c9d3452
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardMpnewsGetHtmlRequest.json
@@ -0,0 +1,3 @@
+{
+ "card_id": "p1Pj9jr90_SQRaVqYI239Ka1erkI"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardMpnewsGetHtmlResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardMpnewsGetHtmlResponse.json
new file mode 100644
index 00000000..8539fb8c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardMpnewsGetHtmlResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "content": ""
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardPayCellSetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardPayCellSetRequest.json
new file mode 100644
index 00000000..0f852d27
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardPayCellSetRequest.json
@@ -0,0 +1,4 @@
+{
+ "card_id": "ph_gmt7cUVrlRk8swPwx7aDyF-pg",
+ "is_open": true
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardPayCellSetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardPayCellSetResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardPayCellSetResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardQrcodeCreateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardQrcodeCreateRequest.json
new file mode 100644
index 00000000..d7c9f2af
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardQrcodeCreateRequest.json
@@ -0,0 +1,27 @@
+{
+ "action_name": "QR_CARD",
+ "expire_seconds": 1800,
+ "action_info": {
+ "card": {
+ "card_id": "pFS7Fjg8kV1IdDz01r4SQwMkuCKc",
+ "code": "198374613512",
+ "openid": "oFS7Fjl0WsZ9AMZqrI80nbIq8xrA",
+ "is_unique_code": false,
+ "outer_str": "12b"
+ },
+ "multiple_card": {
+ "card_list": [
+ {
+ "card_id": "p1Pj9jgj3BcomSgtuW8B1wl-wo88",
+ "code": "2392583481",
+ "outer_str": "12b"
+ },
+ {
+ "card_id": "p1Pj9jgj3BcomSgtuW8B1wl-wo98",
+ "code": "2392583482",
+ "outer_str": "12b"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardQrcodeCreateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardQrcodeCreateResponse.json
new file mode 100644
index 00000000..7ed4ac69
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardQrcodeCreateResponse.json
@@ -0,0 +1,8 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "ticket": "gQHB8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0JIV3lhX3psZmlvSDZmWGVMMTZvAAIEsNnKVQMEIAMAAA==",
+ "expire_seconds": 1800,
+ "url": "http://weixin.qq.com/q/BHWya_zlfioH6fXeL16o ",
+ "show_qrcode_url": " https://mp.weixin.qq.com/cgi-bin/showqrcode? ticket=gQH98DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0czVzRlSWpsamlyM2plWTNKVktvAAIE6SfgVQMEgDPhAQ%3D%3D"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardSelfConsumeCellSetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardSelfConsumeCellSetRequest.json
new file mode 100644
index 00000000..9645fc80
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardSelfConsumeCellSetRequest.json
@@ -0,0 +1,6 @@
+{
+ "card_id": "ph_gmt7cUVrlRk8swPwx7aDyF-pg",
+ "is_open": true,
+ "need_verify_cod": false,
+ "need_remark_amount": false
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardSelfConsumeCellSetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardSelfConsumeCellSetResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardSelfConsumeCellSetResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardTestWhiteListSetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardTestWhiteListSetRequest.json
new file mode 100644
index 00000000..78ea7a18
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardTestWhiteListSetRequest.json
@@ -0,0 +1,10 @@
+{
+ "openid": [
+ "o1Pj9jmZvwSyyyyyyBa4aULW2mA",
+ "o1Pj9jmZvxxxxxxxxxULW2mA"
+ ],
+ "username": [
+ "afdvvf",
+ "abcd"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardTestWhiteListSetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardTestWhiteListSetResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardTestWhiteListSetResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardUpdateRequest.json
new file mode 100644
index 00000000..e374cc09
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardUpdateRequest.json
@@ -0,0 +1,31 @@
+{
+ "card_id": "ph_gmt7cUVrlRk8swPwx7aDyF-pg",
+ "member_card": {
+ "base_info": {
+ "logo_url": "http:\/\/www.supadmin.cn\/uploads\/allimg\/120216\/1_120216214725_1.jpg",
+ "color": "Color010",
+ "notice": "使用时向服务员出示此券",
+ "service_phone": "020-88888888",
+ "description": "不可与其他优惠同享。如需团购券发票,请在消费时向商户提出店内均可使用,仅限堂食餐前不可打包,餐后未吃完,可打包本团购券不限人数,建议2人使用,超过建议人数须另收酱料费5元 / 位。本单谢绝自带酒水饮料",
+ "location_id_list": [ 123, 12321, 345345 ],
+ "pay_info": {
+ "swipe_card": {
+ "is_swipe_card": true
+ }
+ }
+ },
+ "bonus_cleared": "aaaaaaaaaaaaaa",
+ "bonus_rules": "aaaaaaaaaaaaaa",
+ "prerogative": "",
+ "activate_msg_operation": {
+ "url_cell": {
+ "card_id_list": [
+ "pbLatjhcI6XUxJWA0Au3Gaq5eFPs"
+ ],
+ "end_time": 1492724561,
+ "text": "恭喜你获得一张50元代金券",
+ "url": "www.qq.com"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardUpdateResponse.json
new file mode 100644
index 00000000..547fb358
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/CardUpdateResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "send_check": false
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeCheckCodeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeCheckCodeRequest.json
new file mode 100644
index 00000000..ca268bc3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeCheckCodeRequest.json
@@ -0,0 +1,10 @@
+{
+ "card_id": "pDF3iY0_dVjb_Pua96MMewA96qvA",
+ "code": [
+ "11111",
+ "22222",
+ "33333",
+ "44444",
+ "55555"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeCheckCodeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeCheckCodeResponse.json
new file mode 100644
index 00000000..b17ac394
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeCheckCodeResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "exist_code": [ "11111", "22222", "33333" ],
+ "not_exist_code": [ "44444", "55555" ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeConsumeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeConsumeRequest.json
new file mode 100644
index 00000000..be3319d9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeConsumeRequest.json
@@ -0,0 +1,4 @@
+{
+ "code": "12312313",
+ "card_id": "pFS7Fjg8kV1IdDz01r4SQwMkuCKc"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeConsumeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeConsumeResponse.json
new file mode 100644
index 00000000..ed4467dd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeConsumeResponse.json
@@ -0,0 +1,8 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "card": {
+ "card_id": "pFS7Fjg8kV1IdDz01r4SQwMkuCKc"
+ },
+ "openid": "oFS7Fjl0WsZ9AMZqrI80nbIq8xrA"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeDecryptRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeDecryptRequest.json
new file mode 100644
index 00000000..388a8f12
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeDecryptRequest.json
@@ -0,0 +1,3 @@
+{
+ "encrypt_code": "XXIzTtMqCxwOaawoE91+VJdsFmv7b8g0VZIZkqf4GWA60Fzpc8ksZ/5ZZ0DVkXdE"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeDecryptResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeDecryptResponse.json
new file mode 100644
index 00000000..1f60aff4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeDecryptResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "code": "751234212312"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeDepositRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeDepositRequest.json
new file mode 100644
index 00000000..ca268bc3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeDepositRequest.json
@@ -0,0 +1,10 @@
+{
+ "card_id": "pDF3iY0_dVjb_Pua96MMewA96qvA",
+ "code": [
+ "11111",
+ "22222",
+ "33333",
+ "44444",
+ "55555"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeDepositResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeDepositResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeDepositResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeGetDepositCountRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeGetDepositCountRequest.json
new file mode 100644
index 00000000..8bca720b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeGetDepositCountRequest.json
@@ -0,0 +1,3 @@
+{
+ "card_id": " pDF3iY0_dVjb_Pua96MMewA96qvA "
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeGetDepositCountResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeGetDepositCountResponse.json
new file mode 100644
index 00000000..e32b6417
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeGetDepositCountResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "count": 123
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeGetRequest.json
new file mode 100644
index 00000000..2816cc6a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeGetRequest.json
@@ -0,0 +1,5 @@
+{
+ "card_id": "card_id_123+",
+ "code": "123456789",
+ "check_consume": true
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeGetResponse.json
new file mode 100644
index 00000000..5a172676
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeGetResponse.json
@@ -0,0 +1,28 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "card": {
+ "card_id": "pbLatjk4T4Hx-QFQGL4zGQy27_Qg",
+ "begin_time": 1457452800,
+ "end_time": 1463155199
+ },
+ "openid": "obLatjm43RA5C6QfMO5szKYnT3dM",
+ "can_consume": true,
+ "nickname": "Fourier",
+ "membership_number": "316510891298",
+ "bonus": 460,
+ "user_info": {
+ "common_field_list": [
+ {
+ "name": "USER_FORM_INFO_FLAG_MOBILE",
+ "value": "1552xxxx8888"
+ },
+ {
+ "name": "USER_FORM_INFO_FLAG_NAME",
+ "value": "微信"
+ }
+ ],
+ "custom_field_list": []
+ },
+ "user_card_status": "NORMAL"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeUnavailableRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeUnavailableRequest.json
new file mode 100644
index 00000000..05a7ae61
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeUnavailableRequest.json
@@ -0,0 +1,5 @@
+{
+ "code": "12312313",
+ "card_id": "pFS7Fjg8kV1IdDz01r4SQwMkuCKc",
+ "reason": "退款"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeUnavailableResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeUnavailableResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeUnavailableResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeUpdateRequest.json
new file mode 100644
index 00000000..44cbc1cf
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeUpdateRequest.json
@@ -0,0 +1,5 @@
+{
+ "code": "12345678",
+ "card_id": "pFS7Fjg8kV1IdDz01r4SQwMkuCKc",
+ "new_code": "3495739475"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeUpdateResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/Code/CardCodeUpdateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGeneralCardUpdateUserRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGeneralCardUpdateUserRequest.json
new file mode 100644
index 00000000..f8089585
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGeneralCardUpdateUserRequest.json
@@ -0,0 +1,9 @@
+{
+ "code": "12312313",
+ "card_id": "p1Pj9jr90_SQRaVqYI239Ka1erkI",
+ "background_pic_url": "https://mmbiz.qlogo.cn/mmbiz/0?wx_fmt=jpeg",
+ "record_bonus": "消费30元,获得3积分",
+ "bonus": 3000,
+ "custom_field_value1": "xxxxx",
+ "can_give_friend": true
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGeneralCardUpdateUserResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGeneralCardUpdateUserResponse.json
new file mode 100644
index 00000000..93f476e8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGeneralCardUpdateUserResponse.json
@@ -0,0 +1,7 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "result_bonus": 100,
+ "result_balance": 200,
+ "openid": "oFS7Fjl0WsZ9AMZqrI80nbIq8xrA"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardMaintainSetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardMaintainSetRequest.json
new file mode 100644
index 00000000..2f5f31d0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardMaintainSetRequest.json
@@ -0,0 +1,5 @@
+{
+ "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
+ "all": true,
+ "maintain": true
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardMaintainSetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardMaintainSetResponse.json
new file mode 100644
index 00000000..7f8d294e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardMaintainSetResponse.json
@@ -0,0 +1,15 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "control_info": {
+ "biz_control_type": "E_PAGE_CONTROL_BIZ",
+ "system_biz_control_type": "E_PAGE_CONTROL_NORMAL",
+ "list": [
+ {
+ "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
+ "page_control_type": "E_PAGE_CONTROL_BIZ",
+ "system_page_control_type": "E_PAGE_CONTROL_SYSTEM"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageAddRequest.json
new file mode 100644
index 00000000..eb8e9231
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageAddRequest.json
@@ -0,0 +1,123 @@
+{
+ "page": {
+ "page_title": "礼品卡",
+ "support_multi": true,
+ "banner_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
+ "theme_list": [
+ {
+ "theme_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
+ "title": "title",
+ "title_color": "#FB966E",
+ "show_sku_title_first": true,
+ "item_list": [
+ {
+ "card_id": "pbLatjiSj_yVRH5XTb2Zsln7DNQg",
+ "title": "焦糖拿铁"
+ },
+ {
+ "card_id": "pbLatjlq75CPBR_tYCRdPlxSGlOs",
+ "title": "焦糖拿铁"
+ }
+ ],
+ "pic_item_list": [
+ {
+ "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
+ "default_gifting_msg": "祝福语1"
+ },
+ {
+ "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
+ "default_gifting_msg": "祝福语2"
+ },
+ {
+ "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
+ "default_gifting_msg": "祝福语3"
+ }
+ ],
+ "category_index": 0
+ },
+ {
+ "theme_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
+ "title": "title_lalala",
+ "title_color": "#FB966E",
+ "item_list": [
+ {
+ "card_id": "pbLatjiSj_yVRH5XTb2Zsln7DNQg",
+ "title": "焦糖拿铁"
+ },
+ {
+ "card_id": "pbLatjlq75CPBR_tYCRdPlxSGlOs",
+ "title": "蛋糕"
+ }
+ ],
+ "pic_item_list": [
+ {
+ "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
+ "default_gifting_msg": "祝福语1",
+ "outer_img_id": "outer_img_id_1"
+ },
+ {
+ "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
+ "default_gifting_msg": "祝福语2",
+ "outer_img_id": "outer_img_id_2"
+ },
+ {
+ "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
+ "default_gifting_msg": "祝福语3",
+ "outer_img_id": "outer_img_id_3"
+ }
+ ],
+ "category_index": 1
+ },
+ {
+ "theme_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
+ "title": "title_lalala",
+ "title_color": "#FB966E",
+ "item_list": [
+ {
+ "card_id": "pbLatjiSj_yVRH5XTb2Zsln7DNQg"
+ },
+ {
+ "card_id": "pbLatjlq75CPBR_tYCRdPlxSGlOs"
+ }
+ ],
+ "pic_item_list": [
+ {
+ "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
+ "default_gifting_msg": "祝福语1",
+ "outer_img_id": "outer_img_id_1"
+ },
+ {
+ "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
+ "default_gifting_msg": "祝福语2",
+ "outer_img_id": "outer_img_id_2"
+ },
+ {
+ "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
+ "default_gifting_msg": "祝福语3",
+ "outer_img_id": "outer_img_id_3"
+ }
+ ],
+ "is_banner": true
+ }
+ ],
+ "category_list": [
+ {
+ "title": "主题分类一"
+ },
+ {
+ "title": "主题分类二"
+ }
+ ],
+ "address": "广州市海珠区222号",
+ "service_phone": "020-12345678",
+ "biz_description": "退款指引",
+ "cell_1": {
+ "title": "申请发票",
+ "url": "https://open.weixin.qq.com"
+ },
+ "cell_2": {
+ "title": "申请退款",
+ "url": "https://mp.weixin.qq.com"
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageAddResponse.json
new file mode 100644
index 00000000..67000757
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageAddResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageBatchGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageBatchGetRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageBatchGetRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageBatchGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageBatchGetResponse.json
new file mode 100644
index 00000000..4a1ad657
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageBatchGetResponse.json
@@ -0,0 +1,10 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "page_id_list": [
+ "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
+ "abcedfghifk=+Uasdaseq14fadkf8123h4jl",
+ "abcedfghifk=+Uasdaseq14fadkf8123h4jm",
+ "abcedfghifk=+Uasdaseq14fadkf8123h4jn"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageGetRequest.json
new file mode 100644
index 00000000..e2027696
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageGetRequest.json
@@ -0,0 +1,3 @@
+{
+ "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageGetResponse.json
new file mode 100644
index 00000000..9de011f3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageGetResponse.json
@@ -0,0 +1,33 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "page": {
+ "banner_pic_url": "http://img.com/banner_pic",
+ "theme_list": [
+ {
+ "theme_pic_url": "http://img.com/theme_pic",
+ "title": "title_lalala",
+ "title_color": "#FFFFFF",
+ "item_list": [
+ {
+ "card_id": "card_id_lalala"
+ }
+ ],
+ "pic_item_list": [
+ {
+ "background_pic_url": "http://img.com/bg_pic1",
+ "default_gifting_msg": "祝福语1"
+ },
+ {
+ "background_pic_url": "http://img.com/bg_pic2",
+ "default_gifting_msg": "祝福语2"
+ },
+ {
+ "background_pic_url": "http://img.com/bg_pic3",
+ "default_gifting_msg": "祝福语3"
+ }
+ ]
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageUpdateRequest.json
new file mode 100644
index 00000000..bc4616b2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageUpdateRequest.json
@@ -0,0 +1,32 @@
+{
+ "page": {
+ "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
+ "banner_pic_url": "http://img.com/banner_pic",
+ "theme_list": [
+ {
+ "theme_pic_url": "http://img.com/theme_pic",
+ "title": "title_lalala",
+ "title_color": "#FFFFFF",
+ "item_list": [
+ {
+ "card_id": "card_id_lalala"
+ }
+ ],
+ "pic_item_list": [
+ {
+ "background_pic_url": "http://img.com/bg_pic1",
+ "default_gifting_msg": "祝福语1"
+ },
+ {
+ "background_pic_url": "http://img.com/bg_pic2",
+ "default_gifting_msg": "祝福语2"
+ },
+ {
+ "background_pic_url": "http://img.com/bg_pic3",
+ "default_gifting_msg": "祝福语3"
+ }
+ ]
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageUpdateResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPageUpdateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPaySubMerchantBindRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPaySubMerchantBindRequest.json
new file mode 100644
index 00000000..8740d87d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPaySubMerchantBindRequest.json
@@ -0,0 +1,4 @@
+{
+ "sub_mch_id": "1900015421",
+ "wxa_appid": "wx8638fbedaf138a87"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPaySubMerchantBindResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPaySubMerchantBindResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPaySubMerchantBindResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPayWhiteListAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPayWhiteListAddRequest.json
new file mode 100644
index 00000000..6d26221b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPayWhiteListAddRequest.json
@@ -0,0 +1,3 @@
+{
+ "sub_mch_id": "1900015421"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPayWhiteListAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPayWhiteListAddResponse.json
new file mode 100644
index 00000000..69645a2a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardPayWhiteListAddResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "url": "https://pay.weixin.qq.com/index.php/public/product/detail?pid=61&productType=0"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardWxaSetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardWxaSetRequest.json
new file mode 100644
index 00000000..ef25e973
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardWxaSetRequest.json
@@ -0,0 +1,4 @@
+{
+ "wxa_appid": "wx123456789",
+ "page_id": "asdasdjkafkjaslfjasl+fjas="
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardWxaSetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardWxaSetResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/CardGiftCardWxaSetResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderBatchGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderBatchGetRequest.json
new file mode 100644
index 00000000..aed2e928
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderBatchGetRequest.json
@@ -0,0 +1,7 @@
+{
+ "begin_time": 1472400000,
+ "end_time": 1472716604,
+ "sort_type": "ASC",
+ "offset": 0,
+ "count": 2
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderBatchGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderBatchGetResponse.json
new file mode 100644
index 00000000..9c7a67f5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderBatchGetResponse.json
@@ -0,0 +1,49 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "total_count": 47,
+ "order_list": [
+ {
+ "order_id": "Z2y2rY74ksZX1ceuGA",
+ "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
+ "trans_id": "4001562001201608292531663351",
+ "create_time": 123,
+ "pay_finish_time": 123,
+ "total_price": 123,
+ "open_id": "123",
+ "accepter_openid": "123",
+ "card_list": [
+ {
+ "card_id": "card_id_1",
+ "price": 123,
+ "code": "code_123456",
+ "default_gifting_msg": "",
+ "background_pic_url": "",
+ "accepter_openid": "123"
+ }
+ ],
+ "outer_str": "web",
+ "IsChatRoom": true
+ },
+ {
+ "order_id": "Z2y2rY74ksZX1ceuGA",
+ "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
+ "trans_id": "4001562001201608292531663351",
+ "create_time": 123,
+ "pay_finish_time": 123,
+ "total_price": 123,
+ "open_id": "123",
+ "accepter_openid": "123",
+ "card_list": [
+ {
+ "card_id": "card_id_1",
+ "price": 123,
+ "code": "code_123456",
+ "default_gifting_msg": "",
+ "background_pic_url": ""
+ }
+ ],
+ "outer_str": "web"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderGetRequest.json
new file mode 100644
index 00000000..f94d6581
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderGetRequest.json
@@ -0,0 +1,3 @@
+{
+ "order_id": "Z2y2rY74ksZX1ceuGA"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderGetResponse.json
new file mode 100644
index 00000000..f33bcaf0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderGetResponse.json
@@ -0,0 +1,26 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "order": {
+ "order_id": "Z2y2rY74ksZX1ceuGA",
+ "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
+ "trans_id": "4001562001201608292531663351",
+ "create_time": 123,
+ "pay_finish_time": 123,
+ "total_price": 123,
+ "open_id": "123",
+ "accepter_openid": "123",
+ "card_list": [
+ {
+ "card_id": "card_id_1",
+ "price": 123,
+ "code": "code_123456",
+ "default_gifting_msg": "",
+ "background_pic_url": "",
+ "accepter_openid": "123"
+ }
+ ],
+ "outer_str": "web",
+ "IsChatRoom": true
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderRefundRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderRefundRequest.json
new file mode 100644
index 00000000..6a7aa470
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderRefundRequest.json
@@ -0,0 +1,3 @@
+{
+ "order_id": "xxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderRefundResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderRefundResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/GiftCard/Order/CardGiftCardOrderRefundResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateGetUrlRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateGetUrlRequest.json
new file mode 100644
index 00000000..39795051
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateGetUrlRequest.json
@@ -0,0 +1,4 @@
+{
+ "card_id": "pbLatji6o5g7hJh8Otuvux4y1ty0",
+ "outer_str": "123"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateGetUrlResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateGetUrlResponse.json
new file mode 100644
index 00000000..a38ad231
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateGetUrlResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "url": "https://mp.weixin.qq.com/bizmall/activatemembercard?action=preshow&&enxxxxxxx=MjM5Mzc0OTEwMA%3D%3D#wechat_redirect"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateRequest.json
new file mode 100644
index 00000000..e3ab586d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateRequest.json
@@ -0,0 +1,10 @@
+{
+ "init_bonus": 100,
+ "init_bonus_record": "旧积分同步",
+ "init_balance": 200,
+ "membership_number": "AAA00000001",
+ "code": "12312313",
+ "card_id": "xxxx_card_id",
+ "background_pic_url": "https://mmbiz.qlogo.cn/mmbiz/0?wx_fmt=jpeg",
+ "init_custom_field_value1": "xxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateTempInfoGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateTempInfoGetRequest.json
new file mode 100644
index 00000000..07932799
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateTempInfoGetRequest.json
@@ -0,0 +1,3 @@
+{
+ "activate_ticket": "abcdefg"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateTempInfoGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateTempInfoGetResponse.json
new file mode 100644
index 00000000..13c37962
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateTempInfoGetResponse.json
@@ -0,0 +1,21 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "info": {
+ "common_field_list": [
+ {
+ "name": "USER_FORM_INFO_FLAG_MOBILE",
+ "value": "15*****518"
+ },
+ {
+ "name": "USER_FORM_INFO_FLAG_NAME",
+ "value": "HK"
+ },
+ {
+ "name": "USER_FORM_INFO_FLAG_EDUCATION_BACKGROUND",
+ "value": "研究生"
+ }
+ ],
+ "custom_field_list": []
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateUserFormSetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateUserFormSetRequest.json
new file mode 100644
index 00000000..cc8a16c0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateUserFormSetRequest.json
@@ -0,0 +1,55 @@
+{
+ "card_id": "pbLatjnrwUUdZI641gKdTMJzHGfc",
+ "service_statement": {
+ "name": "会员守则",
+ "url": "https://www.qq.com"
+ },
+ "bind_old_card": {
+ "name": "老会员绑定",
+ "url": "https://www.qq.com"
+ },
+ "required_form": {
+ "can_modify": false,
+ "rich_field_list": [
+ {
+ "type": "FORM_FIELD_RADIO",
+ "name": "兴趣",
+ "values": [
+ "钢琴",
+ "舞蹈",
+ "足球"
+ ]
+ },
+ {
+ "type": "FORM_FIELD_SELECT",
+ "name": "喜好",
+ "values": [
+ "郭敬明",
+ "韩寒",
+ "南派三叔"
+ ]
+ },
+ {
+ "type": "FORM_FIELD_CHECK_BOX",
+ "name": "职业",
+ "values": [
+ "赛车手",
+ "旅行家"
+ ]
+ }
+ ],
+ "common_field_id_list": [
+ "USER_FORM_INFO_FLAG_MOBILE"
+ ]
+ },
+ "optional_form": {
+ "can_modify": false,
+ "common_field_id_list": [
+ "USER_FORM_INFO_FLAG_LOCATION",
+ "USER_FORM_INFO_FLAG_BIRTHDAY"
+ ],
+ "custom_field_list": [
+ "喜欢的电影"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateUserFormSetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateUserFormSetResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardActivateUserFormSetResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardUpdateUserRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardUpdateUserRequest.json
new file mode 100644
index 00000000..7193a0c3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardUpdateUserRequest.json
@@ -0,0 +1,18 @@
+{
+ "code": "179011264953",
+ "card_id": "p1Pj9jr90_SQRaVqYI239Ka1erkI",
+ "background_pic_url": "https://mmbiz.qlogo.cn/mmbiz/0?wx_fmt=jpeg",
+ "record_bonus": "消费30元,获得3积分",
+ "bonus": 3000,
+ "add_bonus": 30,
+ "balance": 3000,
+ "add_balance": -30,
+ "record_balance": "购买焦糖玛琪朵一杯,扣除金额30元。",
+ "custom_field_value1": "xxxxx",
+ "custom_field_value2": "xxxxx",
+ "notify_optional": {
+ "is_notify_bonus": true,
+ "is_notify_balance": true,
+ "is_notify_custom_field1": true
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardUpdateUserResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardUpdateUserResponse.json
new file mode 100644
index 00000000..93f476e8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardUpdateUserResponse.json
@@ -0,0 +1,7 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "result_bonus": 100,
+ "result_balance": 200,
+ "openid": "oFS7Fjl0WsZ9AMZqrI80nbIq8xrA"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardUserInfoGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardUserInfoGetRequest.json
new file mode 100644
index 00000000..ce29eff5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardUserInfoGetRequest.json
@@ -0,0 +1,4 @@
+{
+ "card_id": "pbLatjtZ7v1BG_ZnTjbW85GYc_E8",
+ "code": "916679873278"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardUserInfoGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardUserInfoGetResponse.json
new file mode 100644
index 00000000..ecea31b0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/MemberCard/CardMemberCardUserInfoGetResponse.json
@@ -0,0 +1,22 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "openid": "obLatjjwDolFjRRd3doGIdwNqRXw",
+ "nickname": "Fourier",
+ "membership_number": "316510891298",
+ "bonus": 460,
+ "user_info": {
+ "common_field_list": [
+ {
+ "name": "USER_FORM_INFO_FLAG_MOBILE",
+ "value": "15521328888"
+ },
+ {
+ "name": "USER_FORM_INFO_FLAG_NAME",
+ "value": "微信"
+ }
+ ],
+ "custom_field_list": []
+ },
+ "user_card_status": "NORMAL"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardAddRequest.json
new file mode 100644
index 00000000..f1fd7bc1
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardAddRequest.json
@@ -0,0 +1,19 @@
+{
+ "rule_info": {
+ "type": "RULE_TYPE_PAY_MEMBER_CARD",
+ "base_info": {
+ "mchid_list": [
+ "123",
+ "456"
+ ],
+ "begin_time": 1480317217,
+ "end_time": 1580317217
+ },
+ "member_rule": {
+ "card_id": "abcdefg",
+ "least_cost": 2,
+ "max_cost": 20000,
+ "jump_url": "www.qq.com"
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardAddResponse.json
new file mode 100644
index 00000000..6d8dcb68
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardAddResponse.json
@@ -0,0 +1,18 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "rule_id": 1231243,
+ "fail_mchid_list": [
+ {
+ "mchid": "111",
+ "errcode": 23112,
+ "errmsg": "err",
+ "occupy_rule_id": 12332123,
+ "occupy_appid": "appid"
+ }
+ ],
+ "succ_mchid_list": [
+ "123",
+ "456"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardBatchGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardBatchGetRequest.json
new file mode 100644
index 00000000..2bbee283
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardBatchGetRequest.json
@@ -0,0 +1,6 @@
+{
+ "type": "RULE_TYPE_PAY_MEMBER_CARD",
+ "effective": true,
+ "offset": 0,
+ "count": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardBatchGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardBatchGetResponse.json
new file mode 100644
index 00000000..ae9d67e3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardBatchGetResponse.json
@@ -0,0 +1,27 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "total_count": 4,
+ "rule_list": [
+ {
+ "type": "RULE_TYPE_PAY_MEMBER_CARD",
+ "base_info": {
+ "mchid_list": [
+ "123",
+ "456"
+ ],
+ "begin_time": 1480317217,
+ "end_time": 1580317217,
+ "status": "RULE_STATUS_OK",
+ "create_time": 1480317217,
+ "update_time": 1480317217
+ },
+ "member_rule": {
+ "card_id": "abcdefg",
+ "least_cost": 2,
+ "max_cost": 20000,
+ "jump_url": "www.qq.com"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardDeleteRequest.json
new file mode 100644
index 00000000..73b14c99
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardDeleteRequest.json
@@ -0,0 +1,3 @@
+{
+ "rule_id": 1233
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardDeleteResponse.json
new file mode 100644
index 00000000..4dfc6cba
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardDeleteResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardGetByIdRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardGetByIdRequest.json
new file mode 100644
index 00000000..73b14c99
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardGetByIdRequest.json
@@ -0,0 +1,3 @@
+{
+ "rule_id": 1233
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardGetByIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardGetByIdResponse.json
new file mode 100644
index 00000000..2463c850
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/PayGiftCard/CardPayGiftCardGetByIdResponse.json
@@ -0,0 +1,24 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "rule_info": {
+ "type": "RULE_TYPE_PAY_MEMBER_CARD",
+ "base_info": {
+ "mchid_list": [
+ "123",
+ "456"
+ ],
+ "begin_time": 1480317217,
+ "end_time": 1580317217,
+ "status": "RULE_STATUS_OK",
+ "create_time": 1480317217,
+ "update_time": 1480317217
+ },
+ "member_rule": {
+ "card_id": "abcdefg",
+ "least_cost": 2,
+ "max_cost": 20000,
+ "jump_url": "www.qq.com"
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardBoardingPassCheckinRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardBoardingPassCheckinRequest.json
new file mode 100644
index 00000000..24af1219
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardBoardingPassCheckinRequest.json
@@ -0,0 +1,10 @@
+{
+ "code": "198374613512",
+ "card_id": "p1Pj9jr90_SQRaVqYI239Ka1erkI",
+ "passenger_name": "乘客姓名",
+ "class": "舱等",
+ "seat": "座位号",
+ "etkt_bnr": "电子客票号",
+ "qrcode_data": "二维码数据",
+ "is_cancel": false
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardBoardingPassCheckinResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardBoardingPassCheckinResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardBoardingPassCheckinResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardMeetingTicketUpdateUserRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardMeetingTicketUpdateUserRequest.json
new file mode 100644
index 00000000..33d2aed9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardMeetingTicketUpdateUserRequest.json
@@ -0,0 +1,7 @@
+{
+ "code": "717523732898",
+ "card_id": "pXch-jvdwkJjY7evUFV-sGsoMl7A",
+ "zone": "C区",
+ "entrance": "东北门",
+ "seat_number": "2排15号"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardMeetingTicketUpdateUserResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardMeetingTicketUpdateUserResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardMeetingTicketUpdateUserResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardMovieTicketUpdateUserRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardMovieTicketUpdateUserRequest.json
new file mode 100644
index 00000000..a2866872
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardMovieTicketUpdateUserRequest.json
@@ -0,0 +1,9 @@
+{
+ "code": "277217129962",
+ "card_id": "p1Pj9jr90_SQRaVqYI239Ka1erkI",
+ "ticket_class": "4D",
+ "show_time": 1408493192,
+ "duration": 120,
+ "screening_room": "5号影厅",
+ "seat_number": [ "5排14号", "5排15号" ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardMovieTicketUpdateUserResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardMovieTicketUpdateUserResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SpecialTicket/CardMovieTicketUpdateUserResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardGetApplyProtocolRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardGetApplyProtocolRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardGetApplyProtocolRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardGetApplyProtocolResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardGetApplyProtocolResponse.json
new file mode 100644
index 00000000..0f30a8fc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardGetApplyProtocolResponse.json
@@ -0,0 +1,20 @@
+{
+ "category": [
+ {
+ "primary_category_id": 1,
+ "category_name": "美食",
+ "secondary_category": [
+ {
+ "secondary_category_id": 101,
+ "category_name": "粤菜",
+ "need_qualification_stuffs": [
+ "food_service_license_id",
+ "food_service_license_bizmedia_id"
+ ]
+ }
+ ]
+ }
+ ],
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantBatchGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantBatchGetRequest.json
new file mode 100644
index 00000000..bc9453c9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantBatchGetRequest.json
@@ -0,0 +1,5 @@
+{
+ "begin_id": "",
+ "limit": 50,
+ "status": "CHECKING"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantBatchGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantBatchGetResponse.json
new file mode 100644
index 00000000..772f406f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantBatchGetResponse.json
@@ -0,0 +1,29 @@
+{
+ "info_list": [
+ {
+ "merchant_id": 12,
+ "create_time": 1438790559,
+ "update_time": 1438790559,
+ "brand_name": "aaaaaa",
+ "logo_url": "http://mmbiz.xxxx",
+ "status": "CHECKING",
+ "begin_time": 1438790559,
+ "end_time": 1438990559,
+ "primary_category_id": 1,
+ "secondary_category_id": 101
+ },
+ {
+ "merchant_id": 13,
+ "create_time": 1438790559,
+ "update_time": 1438790559,
+ "brand_name": "bbbbbb",
+ "logo_url": "http://mmbiz.xxxx",
+ "status": "APPROVED",
+ "begin_time": 1438790559,
+ "end_time": 1438990559,
+ "primary_category_id": 1,
+ "secondary_category_id": 101
+ }
+ ],
+ "next_begin_id": 13
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantGetRequest.json
new file mode 100644
index 00000000..da41ccfa
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantGetRequest.json
@@ -0,0 +1,3 @@
+{
+ "merchant_id": "12"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantGetResponse.json
new file mode 100644
index 00000000..632a629c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantGetResponse.json
@@ -0,0 +1,14 @@
+{
+ "info": {
+ "merchant_id": "12",
+ "create_time": 1438790559,
+ "update_time": 1438790559,
+ "brand_name": "aaaaaa",
+ "logo_url": "http://mmbiz.xxxx",
+ "status": "CHECKING",
+ "begin_time": 1438790559,
+ "end_time": 1438990559,
+ "primary_category_id": 1,
+ "secondary_category_id": 101
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantSubmitRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantSubmitRequest.json
new file mode 100644
index 00000000..bc8df80f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantSubmitRequest.json
@@ -0,0 +1,13 @@
+{
+ "info": {
+ "brand_name": "aaaaaa",
+ "app_id": "xxxxxxxxxxx",
+ "logo_url": "http://mmbiz.xxxx",
+ "protocol": "xxxxxxxxxx",
+ "agreement_media_id": "xxxxxxxxxx",
+ "operator_media_id": "xxxxxxxx",
+ "end_time": 1438990559,
+ "primary_category_id": 1,
+ "secondary_category_id": 101
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantSubmitResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantSubmitResponse.json
new file mode 100644
index 00000000..9fdd09ef
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantSubmitResponse.json
@@ -0,0 +1,15 @@
+{
+ "info": {
+ "merchant_id": 12,
+ "app_id": "xxxxxxxxxxxxx",
+ "create_time": 1438790559,
+ "update_time": 1438790559,
+ "brand_name": "aaaaaa",
+ "logo_url": "http://mmbiz.xxxx",
+ "status": "CHECKING",
+ "begin_time": 1438790559,
+ "end_time": 1438990559,
+ "primary_category_id": 1,
+ "secondary_category_id": 101
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantUpdateRequest.json
new file mode 100644
index 00000000..20ee87ea
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantUpdateRequest.json
@@ -0,0 +1,14 @@
+{
+ "info": {
+ "merchant_id": "12",
+ "app_id": "xxxxxxxxxxxxx",
+ "brand_name": "aaaaaa",
+ "logo_url": "http://mmbiz.xxxx",
+ "protocol": "media_id",
+ "agreement_media_id": "xxxxxxxxxx",
+ "operator_media_id": "xxxxxxxx",
+ "end_time": 1438990559,
+ "primary_category_id": 1,
+ "secondary_category_id": 101
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantUpdateResponse.json
new file mode 100644
index 00000000..23f56a64
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/SubMerchant/CardSubMerchantUpdateResponse.json
@@ -0,0 +1,14 @@
+{
+ "info": {
+ "merchant_id": 12,
+ "create_time": 1438790559,
+ "update_time": 1438790559,
+ "brand_name": "aaaaaa",
+ "logo_url": "http://mmbiz.xxxx",
+ "status": "CHECKING",
+ "begin_time": 1438790559,
+ "end_time": 1438990559,
+ "primary_category_id": 1,
+ "secondary_category_id": 101
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/User/CardUserGetCardListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/User/CardUserGetCardListRequest.json
new file mode 100644
index 00000000..a2781f4f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/User/CardUserGetCardListRequest.json
@@ -0,0 +1,4 @@
+{
+ "openid": "12312313",
+ "card_id": "xxxxxxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/User/CardUserGetCardListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/User/CardUserGetCardListResponse.json
new file mode 100644
index 00000000..76037bcb
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Card/User/CardUserGetCardListResponse.json
@@ -0,0 +1,15 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "card_list": [
+ {
+ "code": "xxx1434079154",
+ "card_id": "xxxxxxxxxx"
+ },
+ {
+ "code": "xxx1434079155",
+ "card_id": "xxxxxxxxxx"
+ }
+ ],
+ "has_share_card": true
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceClearOutInvoiceRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceClearOutInvoiceRequest.json
new file mode 100644
index 00000000..a1850baa
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceClearOutInvoiceRequest.json
@@ -0,0 +1,10 @@
+{
+ "invoiceinfo": {
+ "wxopenid": "os92LxEDbiOw7kWZanRN_Bb3Q45I",
+ "fpqqlsh": "test20160511000400",
+ "nsrsbh": "110109500321654",
+ "nsrmc": "百旺电子测试1",
+ "yfpdm": "050003521100",
+ "yfphm": "30329969"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceClearOutInvoiceResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceClearOutInvoiceResponse.json
new file mode 100644
index 00000000..4936e21a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceClearOutInvoiceResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "sucesss"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceGetAuthDataRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceGetAuthDataRequest.json
new file mode 100644
index 00000000..028ca294
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceGetAuthDataRequest.json
@@ -0,0 +1,4 @@
+{
+ "s_pappid": "{s_pappid}",
+ "order_id": "{order_id}"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceGetAuthDataResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceGetAuthDataResponse.json
new file mode 100644
index 00000000..9c5693c9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceGetAuthDataResponse.json
@@ -0,0 +1,33 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "invoice_status": "auth success",
+ "auth_time": 1480342498,
+ "user_auth_info": {
+ "user_field": {
+ "title": "Dhxhhx ",
+ "phone": "5554545",
+ "email": "dhxhxhhx@qq.cind",
+ "custom_field": [
+ {
+ "key": "field1",
+ "value": "管理理论"
+ }
+ ]
+ },
+ "biz_field": {
+ "title": "王xx",
+ "tax_no": "6464646766",
+ "addr": "后过敏",
+ "phone": "1557548768",
+ "bank_type": "仔仔细细",
+ "bank_no": "545454646",
+ "custom_field": [
+ {
+ "key": "field2",
+ "value": "哈哈哈啊"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceGetAuthUrlRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceGetAuthUrlRequest.json
new file mode 100644
index 00000000..03952ab5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceGetAuthUrlRequest.json
@@ -0,0 +1,10 @@
+{
+ "s_pappid": "wxabcd",
+ "order_id": "1234",
+ "money": 11,
+ "timestamp": 1474875876,
+ "source": "web",
+ "redirect_url": "https://mp.weixin.qq.com",
+ "ticket": "tttt",
+ "type": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceGetAuthUrlResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceGetAuthUrlResponse.json
new file mode 100644
index 00000000..58560db6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceGetAuthUrlResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "auth_url": "auth_url",
+ "appid": "appid"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceInsertRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceInsertRequest.json
new file mode 100644
index 00000000..dceaa370
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceInsertRequest.json
@@ -0,0 +1,29 @@
+{
+ "order_id": "111163",
+ "card_ext": {
+ "nonce_str": "j!Re1WxaHv",
+ "user_card": {
+ "invoice_user_data": {
+ "info": [
+ {
+ "price": 10000,
+ "num": 3,
+ "name": "牙膏",
+ "unit": "个"
+ }
+ ],
+ "billing_no": "4545145712",
+ "billing_code": "4541212454512",
+ "billing_time": "1468306058",
+ "tax": 123,
+ "s_pdf_media_id": "s_pdf_media_id_abc123",
+ "fee": 123,
+ "title": "灌哥发票",
+ "fee_without_tax": 2345,
+ "buyer_number": "123456789012345678"
+ }
+ }
+ },
+ "card_id": "pjZ8Yt9WoOePThU0NfUKz5-tBEWU",
+ "appid": "wxc0b84a53ed8e8d29"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceInsertResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceInsertResponse.json
new file mode 100644
index 00000000..7d93b4c0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceInsertResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "code": "682xxxx661927",
+ "openid": "ojZ8Ytz4lESxxxx_R1TvB2Kds"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceMakeOutInvoiceRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceMakeOutInvoiceRequest.json
new file mode 100644
index 00000000..b12c8856
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceMakeOutInvoiceRequest.json
@@ -0,0 +1,41 @@
+{
+ "invoiceinfo": {
+ "wxopenid": "os92LxEDbiOw7kWZanRN_Bb3Q45I",
+ "ddh": "30000",
+ "fpqqlsh": "test20160511000461",
+ "nsrsbh": "110109500321654",
+ "nsrmc": "百旺电子测试1",
+ "nsrdz": "深圳市",
+ "nsrdh": "0755228899988",
+ "nsrbank": "中国银行广州支行",
+ "nsrbankid": "12345678",
+ "ghfnsrsbh": "110109500321654",
+ "ghfmc": "周一",
+ "ghfdz": "广州市",
+ "ghfdh": "13717771888",
+ "ghfbank": "工商银行",
+ "ghfbankid": "12345678",
+ "kpr": "小明",
+ "skr": "李四",
+ "fhr": "小王",
+ "jshj": "159.0",
+ "hjje": "135.9",
+ "hjse": "23.1",
+ "bz": "备注",
+ "hylx": "0",
+ "invoicedetail_list": [
+ {
+ "fphxz": "0",
+ "spbm": "1090418010000000000",
+ "xmmc": "洗衣机",
+ "dw": "台",
+ "ggxh": "60L",
+ "xmsl": "1",
+ "xmdj": "135.9",
+ "xmje": "135.9",
+ "sl": "0.17",
+ "se": "23.1"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceMakeOutInvoiceResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceMakeOutInvoiceResponse.json
new file mode 100644
index 00000000..4936e21a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceMakeOutInvoiceResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "sucesss"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceQueryInvoiceInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceQueryInvoiceInfoRequest.json
new file mode 100644
index 00000000..02d49cbf
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceQueryInvoiceInfoRequest.json
@@ -0,0 +1,4 @@
+{
+ "fpqqlsh": "test20160511000440",
+ "nsrsbh": "110109500321654"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceQueryInvoiceInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceQueryInvoiceInfoResponse.json
new file mode 100644
index 00000000..646a43b0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceQueryInvoiceInfoResponse.json
@@ -0,0 +1,12 @@
+{
+ "errcode": 0,
+ "errmsg": "发票数据获取成功",
+ "invoicedetail": {
+ "fpqqlsh": "14574d75004451097845",
+ "fpdm": "088978450417",
+ "fphm": "21590001",
+ "jym": "59004166725791147047",
+ "kprq": "20171204172159",
+ "pdfurl": "http://weixin.com"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceRejectInsertRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceRejectInsertRequest.json
new file mode 100644
index 00000000..aa3bdb75
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceRejectInsertRequest.json
@@ -0,0 +1,6 @@
+{
+ "s_pappid": "d3JCEfhGLW+q0iGP+o9",
+ "order_id": "111229",
+ "reason": "1234",
+ "url": "http://xxx.com"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceRejectInsertResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceRejectInsertResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceRejectInsertResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetAuthFieldRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetAuthFieldRequest.json
new file mode 100644
index 00000000..f29ba0db
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetAuthFieldRequest.json
@@ -0,0 +1,27 @@
+{
+ "auth_field": {
+ "user_field": {
+ "show_title": 1,
+ "show_phone": 1,
+ "show_email": 1,
+ "custom_field": [
+ {
+ "key": "field1"
+ }
+ ]
+ },
+ "biz_field": {
+ "show_title": 1,
+ "show_tax_no": 1,
+ "show_addr": 1,
+ "show_phone": 1,
+ "show_bank_type": 1,
+ "show_bank_no": 1,
+ "custom_field": [
+ {
+ "key": "field2"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetAuthFieldResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetAuthFieldResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetAuthFieldResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetContactRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetContactRequest.json
new file mode 100644
index 00000000..f03609ad
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetContactRequest.json
@@ -0,0 +1,6 @@
+{
+ "contact": {
+ "phone": "88888888",
+ "time_out": 12345
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetContactResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetContactResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetContactResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetPayMerchantRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetPayMerchantRequest.json
new file mode 100644
index 00000000..a6110274
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetPayMerchantRequest.json
@@ -0,0 +1,6 @@
+{
+ "paymch_info": {
+ "mchid": "1234",
+ "s_pappid": "wxabcd"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetPayMerchantResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetPayMerchantResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetPayMerchantResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetUrlRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetUrlRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetUrlRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetUrlResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetUrlResponse.json
new file mode 100644
index 00000000..c9bc9dc2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/CardInvoiceSetUrlResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "invoice_url": "https://mp.weixin.qq.com/bizmall/authinvoice?action=list&s_pappid=d3xxxxxxxxxxxxxGLSS0wrL14No8c1"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformCreateCardRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformCreateCardRequest.json
new file mode 100644
index 00000000..84403b29
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformCreateCardRequest.json
@@ -0,0 +1,16 @@
+{
+ "invoice_info": {
+ "base_info": {
+ "logo_url": "http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFNjakmxibMLGWpXrEXB33367o7zHN0CwngnQY7zb7g/0",
+ "title": "xx公司",
+ "custom_url_name": "xyz",
+ "custom_url": "xyz",
+ "custom_url_sub_title": "xyz",
+ "promotion_url_name": "puname",
+ "promotion_url": "purl",
+ "promotion_url_sub_title": "ptitle"
+ },
+ "type": " 广东省增值税普通发票 ",
+ "payee": " 测试 - 收款方 "
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformCreateCardResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformCreateCardResponse.json
new file mode 100644
index 00000000..091e7d56
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformCreateCardResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "card_id": "pjZ8Yt9WoOePThU0NfUKz5-tBEWU"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformGetPdfRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformGetPdfRequest.json
new file mode 100644
index 00000000..8475cb8a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformGetPdfRequest.json
@@ -0,0 +1,4 @@
+{
+ "action": "get_url",
+ "s_media_id": "75195574948725301"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformGetPdfResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformGetPdfResponse.json
new file mode 100644
index 00000000..14a133b7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformGetPdfResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "pdf_url": "https://mp.weixin.qq.com/intp/invoice/getpdf?action=media_pdf&media_key=dFRnTkV6WCswNjB1V1czZ0tVU3MhaX4yb2pxeEVSY0teSCtuflY6UXAifD5rL09kTjFpOFVWKyJGNCgxTCtkJER6VjFlRCtVU2JKcS5FZw",
+ "pdf_url_expire_time": 7200
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformSetPdfRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformSetPdfRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformSetPdfRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformSetPdfResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformSetPdfResponse.json
new file mode 100644
index 00000000..8747a85b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformSetPdfResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "s_media_id": "3015806758683707"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformUpdateStatusRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformUpdateStatusRequest.json
new file mode 100644
index 00000000..a390aa4e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformUpdateStatusRequest.json
@@ -0,0 +1,5 @@
+{
+ "card_id": "pjZ8Yt7Um2jYxzneP8GomnxoVFWo",
+ "code": "186921658591",
+ "reimburse_status": "INVOICE_REIMBURSE_INIT"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformUpdateStatusResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformUpdateStatusResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Platform/CardInvoicePlatformUpdateStatusResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessGetSelectTitleUrlRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessGetSelectTitleUrlRequest.json
new file mode 100644
index 00000000..a9c1db01
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessGetSelectTitleUrlRequest.json
@@ -0,0 +1,3 @@
+{
+ "attach": "abcdefg"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessGetSelectTitleUrlResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessGetSelectTitleUrlResponse.json
new file mode 100644
index 00000000..ba615485
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessGetSelectTitleUrlResponse.json
@@ -0,0 +1,5 @@
+{
+ "url": "https://mp.weixin.qq.com/intp/invoice/usertitle?action=select_title&select_title_key=iY1bpfvAuwKgkfQECzlhog#wechat_redirect",
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessGetUserTitleUrlRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessGetUserTitleUrlRequest.json
new file mode 100644
index 00000000..937292f8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessGetUserTitleUrlRequest.json
@@ -0,0 +1,8 @@
+{
+ "tax_no": "1486715052",
+ "addr": "abc",
+ "title": "用户抬头",
+ "bank_type": "bank_type",
+ "phone": "12345",
+ "bank_no": "bank_no"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessGetUserTitleUrlResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessGetUserTitleUrlResponse.json
new file mode 100644
index 00000000..33e11af5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessGetUserTitleUrlResponse.json
@@ -0,0 +1,5 @@
+{
+ "url": "https://mp.weixin.qq.com/intp/invoice/usertitle?action=list_auth&biz_title_key=hMjjwk#wechat_redirect",
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessScanTitleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessScanTitleRequest.json
new file mode 100644
index 00000000..3ea00c9b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessScanTitleRequest.json
@@ -0,0 +1,3 @@
+{
+ "scan_text": "https//mp.weixingg.com/intp/invoice/usertitlewxa?action=list_auth&invoice_key=abcd"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessScanTitleResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessScanTitleResponse.json
new file mode 100644
index 00000000..1b97e55e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Quick/CardInvoiceBusinessScanTitleResponse.json
@@ -0,0 +1,11 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "title": "单位抬头测试",
+ "tax_no": "aaaaaaaaaa123456",
+ "addr": "1496647324",
+ "bank_type": "bank_type",
+ "phone": "12345",
+ "title_type": 0,
+ "bank_no": "1235456465341234"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseGetInvoiceBatchRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseGetInvoiceBatchRequest.json
new file mode 100644
index 00000000..a41bb2ab
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseGetInvoiceBatchRequest.json
@@ -0,0 +1,12 @@
+{
+ "item_list": [
+ {
+ "card_id": "pjZ8Yt7KKEXWMpETmwG2ZZxX2m6E",
+ "encrypt_code": "O/mPnGTpBu22a1szmK2 "
+ },
+ {
+ "card_id": "pjZ8YtxSguaLUaaDqzeAf385soJM",
+ "encrypt_code": "O/mPnGTpBu22a1szmK2ogz "
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseGetInvoiceBatchResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseGetInvoiceBatchResponse.json
new file mode 100644
index 00000000..c1a8e3ac
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseGetInvoiceBatchResponse.json
@@ -0,0 +1,64 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "item_list": [
+ {
+ "user_info": {
+ "fee": 123,
+ "title": "灌哥发票",
+ "billing_time": 1504085973,
+ "billing_no": "1504085973",
+ "billing_code": "aabbccdd",
+ "info": [
+ {
+ "name": "牙膏",
+ "num": 3,
+ "unit": "个",
+ "price": 10000
+ }
+ ],
+ "fee_without_tax": 2345,
+ "tax": 123,
+ "pdf_url": "http://pdfurl",
+ "reimburse_status": "INVOICE_REIMBURSE_INIT",
+ "order_id": "1504085935",
+ "check_code": "check_code",
+ "buyer_number": "buyer_number"
+ },
+ "card_id": "pjZ8Yt7KKEXWMpETmwG2ZZxX2m6E",
+ "openid": "oZI8Fj8L63WugQsljlzzfCcw3AkQ",
+ "type": "广东省增值税普通发票",
+ "payee": "测试-收款方",
+ "detail": "detail"
+ },
+ {
+ "user_info": {
+ "fee": 123,
+ "title": "灌哥发票",
+ "billing_time": 1504083578,
+ "billing_no": "1504083578",
+ "billing_code": "aabbccdd",
+ "info": [
+ {
+ "name": "牙膏",
+ "num": 3,
+ "unit": "个",
+ "price": 10000
+ }
+ ],
+ "fee_without_tax": 2345,
+ "tax": 123,
+ "pdf_url": " http://pdfurl",
+ "reimburse_status": "INVOICE_REIMBURSE_INIT",
+ "order_id": "1504083522",
+ "check_code": "check_code",
+ "buyer_number": "buyer_number"
+ },
+ "card_id": "pjZ8YtxSguaLUaaDqzeAf385soJM",
+ "openid": "oZI8Fj8L63WugQsljlzzfCcw3AkQ",
+ "type": "广东省增值税普通发票",
+ "payee": "测试-收款方",
+ "detail": "detail"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseGetInvoiceInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseGetInvoiceInfoRequest.json
new file mode 100644
index 00000000..91bbbe81
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseGetInvoiceInfoRequest.json
@@ -0,0 +1,4 @@
+{
+ "card_id": "pjZ8Yt5crPbAouhFqFf6JFgZv4Lc",
+ "encrypt_code": "fbdt/fWy1VitQwhbKtSjNeR3BJyfpeJXfZjjGsdCXiM="
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseGetInvoiceInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseGetInvoiceInfoResponse.json
new file mode 100644
index 00000000..e8f05dc5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseGetInvoiceInfoResponse.json
@@ -0,0 +1,31 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "card_id": "pjZ8Yt5crPbAouhFqFf6JFgZv4Lc",
+ "begin_time": 1476068114,
+ "end_time": 1476168114,
+ "user_card_status": "EXPIRE",
+ "openid": "obLatjnG4vRXJvSO8p914rSK8-Vo",
+ "type": "广东省增值税普通发票",
+ "payee": "测试-收款方",
+ "detail": "测试-detail",
+ "user_info": {
+ "fee": 1100,
+ "title": "XX公司",
+ "billing_time": 1468322401,
+ "billing_no": "hello",
+ "billing_code": "world",
+ "info": [
+ {
+ "name": "绿巨人",
+ "num": 10,
+ "unit": "吨",
+ "price": 4
+ }
+ ],
+ "fee_without_tax": 2345,
+ "tax": 123,
+ "pdf_url": "pdf_url",
+ "reimburse_status": "INVOICE_REIMBURSE_INIT"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseUpdateInvoiceStatusRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseUpdateInvoiceStatusRequest.json
new file mode 100644
index 00000000..efe82a9f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseUpdateInvoiceStatusRequest.json
@@ -0,0 +1,5 @@
+{
+ "card_id": "pjZ8Yt5crPbAouhFqFf6JFgZv4Lc",
+ "encrypt_code": "fbdt/fWy1VitQwhbKtSjNeR3BJyfpeJXfZjjGsdCXiM=",
+ "reimburse_status": "INVOICE_REIMBURSE_INIT"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseUpdateInvoiceStatusResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseUpdateInvoiceStatusResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseUpdateInvoiceStatusResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseUpdateStatusBatchRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseUpdateStatusBatchRequest.json
new file mode 100644
index 00000000..e8f67c3b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseUpdateStatusBatchRequest.json
@@ -0,0 +1,14 @@
+{
+ "openid": "{openid}",
+ "reimburse_status": "{reimburse_status}",
+ "invoice_list": [
+ {
+ "card_id": "cardid_1",
+ "encrypt_code": "encrypt_code_1"
+ },
+ {
+ "card_id": "cardid_2",
+ "encrypt_code": "encrypt_code_2"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseUpdateStatusBatchResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseUpdateStatusBatchResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/Reimburse/CardInvoiceReimburseUpdateStatusBatchResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetAuthFieldRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetAuthFieldRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetAuthFieldRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetAuthFieldResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetAuthFieldResponse.json
new file mode 100644
index 00000000..d465688d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetAuthFieldResponse.json
@@ -0,0 +1,29 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "auth_field": {
+ "user_field": {
+ "show_title": 1,
+ "show_phone": 1,
+ "show_email": 1,
+ "custom_field": [
+ {
+ "key": "field1"
+ }
+ ]
+ },
+ "biz_field": {
+ "show_title": 1,
+ "show_tax_no": 1,
+ "show_addr": 1,
+ "show_phone": 1,
+ "show_bank_type": 1,
+ "show_bank_no": 1,
+ "custom_field": [
+ {
+ "key": "field2"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetContactRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetContactRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetContactRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetContactResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetContactResponse.json
new file mode 100644
index 00000000..c244683c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetContactResponse.json
@@ -0,0 +1,8 @@
+{
+ "contact": {
+ "phone": "88888888",
+ "time_out": 12345
+ },
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetPayMerchantRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetPayMerchantRequest.json
new file mode 100644
index 00000000..8593c62d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetPayMerchantRequest.json
@@ -0,0 +1,2 @@
+{
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetPayMerchantResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetPayMerchantResponse.json
new file mode 100644
index 00000000..ca13ac7d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CardInvoice/SetBusinessAttribute/CardInvoiceGetPayMerchantResponse.json
@@ -0,0 +1,8 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "paymch_info": {
+ "mchid": "1234",
+ "s_pappid": "wxabcd"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Cgibin/CgibinClearQuotaRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Cgibin/CgibinClearQuotaRequest.json
new file mode 100644
index 00000000..bc6f424b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Cgibin/CgibinClearQuotaRequest.json
@@ -0,0 +1,3 @@
+{
+ "appid": "APPID"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Cgibin/CgibinClearQuotaResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Cgibin/CgibinClearQuotaResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Cgibin/CgibinClearQuotaResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentCloseRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentCloseRequest.json
new file mode 100644
index 00000000..fa807dd7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentCloseRequest.json
@@ -0,0 +1,4 @@
+{
+ "msg_data_id": 1,
+ "index": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentCloseResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentCloseResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentCloseResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentDeleteRequest.json
new file mode 100644
index 00000000..9c644cac
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentDeleteRequest.json
@@ -0,0 +1,5 @@
+{
+ "msg_data_id": 1,
+ "index": 0,
+ "user_comment_id": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentDeleteResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentDeleteResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentListRequest.json
new file mode 100644
index 00000000..ee93e2c3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentListRequest.json
@@ -0,0 +1,7 @@
+{
+ "msg_data_id": 0,
+ "index": 0,
+ "begin": 0,
+ "count": 0,
+ "type": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentListResponse.json
new file mode 100644
index 00000000..ee877008
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentListResponse.json
@@ -0,0 +1,20 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "total": 0,
+ "comment": [
+ {
+ "user_comment_id": 0,
+ "openid": "OPENID",
+ "create_time": 12345,
+ "content": "CONTENT",
+ "comment_type": 1,
+ "reply": [
+ {
+ "content": "CONTENT",
+ "create_time": 12345
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentMarkElectRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentMarkElectRequest.json
new file mode 100644
index 00000000..9c644cac
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentMarkElectRequest.json
@@ -0,0 +1,5 @@
+{
+ "msg_data_id": 1,
+ "index": 0,
+ "user_comment_id": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentMarkElectResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentMarkElectResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentMarkElectResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentOpenRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentOpenRequest.json
new file mode 100644
index 00000000..fa807dd7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentOpenRequest.json
@@ -0,0 +1,4 @@
+{
+ "msg_data_id": 1,
+ "index": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentOpenResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentOpenResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentOpenResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentUnmarkElectRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentUnmarkElectRequest.json
new file mode 100644
index 00000000..9c644cac
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentUnmarkElectRequest.json
@@ -0,0 +1,5 @@
+{
+ "msg_data_id": 1,
+ "index": 0,
+ "user_comment_id": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentUnmarkElectResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentUnmarkElectResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/CgibinCommentUnmarkElectResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/Reply/CgibinCommentReplyAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/Reply/CgibinCommentReplyAddRequest.json
new file mode 100644
index 00000000..1e3e69c6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/Reply/CgibinCommentReplyAddRequest.json
@@ -0,0 +1,6 @@
+{
+ "msg_data_id": 1,
+ "index": 0,
+ "user_comment_id": 0,
+ "content": "CONTENT"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/Reply/CgibinCommentReplyAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/Reply/CgibinCommentReplyAddResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/Reply/CgibinCommentReplyAddResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/Reply/CgibinCommentReplyDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/Reply/CgibinCommentReplyDeleteRequest.json
new file mode 100644
index 00000000..9c644cac
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/Reply/CgibinCommentReplyDeleteRequest.json
@@ -0,0 +1,5 @@
+{
+ "msg_data_id": 1,
+ "index": 0,
+ "user_comment_id": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/Reply/CgibinCommentReplyDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/Reply/CgibinCommentReplyDeleteResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComment/Reply/CgibinCommentReplyDeleteResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiAuthorizerTokenRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiAuthorizerTokenRequest.json
new file mode 100644
index 00000000..c78d4e7e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiAuthorizerTokenRequest.json
@@ -0,0 +1,5 @@
+{
+ "component_appid": "appid_value",
+ "authorizer_appid": "auth_appid_value",
+ "authorizer_refresh_token": "refresh_token_value"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiAuthorizerTokenResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiAuthorizerTokenResponse.json
new file mode 100644
index 00000000..a8aa9994
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiAuthorizerTokenResponse.json
@@ -0,0 +1,5 @@
+{
+ "authorizer_access_token": "some-access-token",
+ "expires_in": 7200,
+ "authorizer_refresh_token": "refresh_token_value"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiComponentTokenRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiComponentTokenRequest.json
new file mode 100644
index 00000000..c5868de8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiComponentTokenRequest.json
@@ -0,0 +1,5 @@
+{
+ "component_appid": "appid_value",
+ "component_appsecret": "appsecret_value",
+ "component_verify_ticket": "ticket_value"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiComponentTokenResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiComponentTokenResponse.json
new file mode 100644
index 00000000..8cd0452b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiComponentTokenResponse.json
@@ -0,0 +1,4 @@
+{
+ "component_access_token": "61W3mEpU66027wgNZ_MhGHNQDHnFATkDa9-2llqrMBjUwxRSNPbVsMmyD-yq8wZETSoE5NQgecigDrSHkPtIYA",
+ "expires_in": 7200
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiCreatePreAuthCodeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiCreatePreAuthCodeRequest.json
new file mode 100644
index 00000000..5888b501
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiCreatePreAuthCodeRequest.json
@@ -0,0 +1,3 @@
+{
+ "component_appid": "appid_value"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiCreatePreAuthCodeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiCreatePreAuthCodeResponse.json
new file mode 100644
index 00000000..af119171
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiCreatePreAuthCodeResponse.json
@@ -0,0 +1,4 @@
+{
+ "pre_auth_code": "Cx_Dk6qiBE0Dmx4EmlT3oRfArPvwSQ-oa3NL_fwHM7VI08r52wazoZX2Rhpz1dEw",
+ "expires_in": 600
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerInfoRequest.json
new file mode 100644
index 00000000..745a677f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerInfoRequest.json
@@ -0,0 +1,4 @@
+{
+ "component_appid": "appid_value",
+ "authorizer_appid": "auth_appid_value"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerInfoResponse.json
new file mode 100644
index 00000000..3a8b814c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerInfoResponse.json
@@ -0,0 +1,56 @@
+{
+ "authorizer_info": {
+ "nick_name": "微信SDK Demo Special",
+ "head_img": "http://wx.qlogo.cn/mmopen/GPy",
+ "service_type_info": {
+ "id": 2
+ },
+ "verify_type_info": {
+ "id": 0
+ },
+ "user_name": "gh_eb5e3a772040",
+ "principal_name": "腾讯计算机系统有限公司",
+ "business_info": {
+ "open_store": 0,
+ "open_scan": 0,
+ "open_pay": 0,
+ "open_card": 0,
+ "open_shake": 0
+ },
+ "alias": "paytest01",
+ "qrcode_url": "URL",
+ "signature": "欢迎小伙伴一起参与盲盒游戏,集齐9款鞋卡,可以兑换大奖!",
+ "MiniProgramInfo": {
+ "network": {
+ "RequestDomain": [ "https:xxx", "https:xxxx", "https:xxx" ],
+ "WsRequestDomain": [],
+ "UploadDomain": [],
+ "DownloadDomain": [],
+ "BizDomain": [],
+ "UDPDomain": []
+ },
+ "categories": [
+ {
+ "first": "工具",
+ "second": "效率"
+ }
+ ],
+ "visit_status": 0
+ }
+ },
+ "authorization_info": {
+ "authorizer_appid": "wxf8b4f85f3a794e77",
+ "func_info": [
+ {
+ "funcscope_category": {
+ "id": 1
+ }
+ },
+ {
+ "funcscope_category": {
+ "id": 2
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerListRequest.json
new file mode 100644
index 00000000..deea0e51
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerListRequest.json
@@ -0,0 +1,5 @@
+{
+ "component_appid": "appid_value",
+ "offset": 0,
+ "count": 100
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerListResponse.json
new file mode 100644
index 00000000..3ea2450a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerListResponse.json
@@ -0,0 +1,15 @@
+{
+ "total_count": 33,
+ "list": [
+ {
+ "authorizer_appid": "authorizer_appid_1",
+ "refresh_token": "refresh_token_1",
+ "auth_time": 1558000607
+ },
+ {
+ "authorizer_appid": "authorizer_appid_2",
+ "refresh_token": "refresh_token_2",
+ "auth_time": 1558000607
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerOptionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerOptionRequest.json
new file mode 100644
index 00000000..b9be3bbc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerOptionRequest.json
@@ -0,0 +1,5 @@
+{
+ "component_appid": "appid_value",
+ "authorizer_appid": "auth_appid_value ",
+ "option_name": "option_name_value"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerOptionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerOptionResponse.json
new file mode 100644
index 00000000..7d7cdd34
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiGetAuthorizerOptionResponse.json
@@ -0,0 +1,5 @@
+{
+ "authorizer_appid": "wx7bc5ba58cabd00f4",
+ "option_name": "voice_recognize",
+ "option_value": "1"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiQueryAuthRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiQueryAuthRequest.json
new file mode 100644
index 00000000..b24156a0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiQueryAuthRequest.json
@@ -0,0 +1,4 @@
+{
+ "component_appid": "appid_value",
+ "authorization_code": "auth_code_value"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiQueryAuthResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiQueryAuthResponse.json
new file mode 100644
index 00000000..12da2dba
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiQueryAuthResponse.json
@@ -0,0 +1,25 @@
+{
+ "authorization_info": {
+ "authorizer_appid": "wxf8b4f85f3a794e77",
+ "authorizer_access_token": "QXjUqNqfYVH0yBE1iI_7vuN_9gQbpjfK7hYwJ3P7xOa88a89-Aga5x1NMYJyB8G2yKt1KCl0nPC3W9GJzw0Zzq_dBxc8pxIGUNi_bFes0qM",
+ "expires_in": 7200,
+ "authorizer_refresh_token": "dTo-YCXPL4llX-u1W1pPpnp8Hgm4wpJtlR6iV0doKdY",
+ "func_info": [
+ {
+ "funcscope_category": {
+ "id": 1
+ }
+ },
+ {
+ "funcscope_category": {
+ "id": 2
+ }
+ },
+ {
+ "funcscope_category": {
+ "id": 3
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiSetAuthorizerOptionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiSetAuthorizerOptionRequest.json
new file mode 100644
index 00000000..c3941e4b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiSetAuthorizerOptionRequest.json
@@ -0,0 +1,6 @@
+{
+ "component_appid": "appid_value",
+ "authorizer_appid": "auth_appid_value ",
+ "option_name": "option_name_value",
+ "option_value": "option_value_value"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiSetAuthorizerOptionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiSetAuthorizerOptionResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiSetAuthorizerOptionResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiStartPushTicketRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiStartPushTicketRequest.json
new file mode 100644
index 00000000..e726c90e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiStartPushTicketRequest.json
@@ -0,0 +1,4 @@
+{
+ "component_appid": "wxd0bfc95064b5bfc1",
+ "component_secret": "28c223a63f7de0d5xxxxxxxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiStartPushTicketResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiStartPushTicketResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinComponent/CgibinComponentApiStartPushTicketResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinCustomService/CgibinCustomServiceGetKfListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinCustomService/CgibinCustomServiceGetKfListRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinCustomService/CgibinCustomServiceGetKfListRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinCustomService/CgibinCustomServiceGetKfListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinCustomService/CgibinCustomServiceGetKfListResponse.json
new file mode 100644
index 00000000..149bfb70
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinCustomService/CgibinCustomServiceGetKfListResponse.json
@@ -0,0 +1,27 @@
+{
+ "kf_list": [
+ {
+ "kf_account": "test1@test",
+ "kf_nick": "ntest1",
+ "kf_id": "1001",
+ "kf_headimgurl": " http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjfUS8Ym0GSaLic0FD3vN0V8PILcibEGb2fPfEOmw/0",
+ "kf_wx": "kfwx1"
+ },
+ {
+ "kf_account": "test2@test",
+ "kf_nick": "ntest2",
+ "kf_id": "1002",
+ "kf_headimgurl": " http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjfUS8Ym0GSaLic0FD3vN0V8PILcibEGb2fPfEOmw/0",
+ "kf_wx": "kfwx2"
+ },
+ {
+ "kf_account": "test3@test",
+ "kf_nick": "ntest3",
+ "kf_id": "1003",
+ "kf_headimgurl": " http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjfUS8Ym0GSaLic0FD3vN0V8PILcibEGb2fPfEOmw/0",
+ "invite_wx": "kfwx3",
+ "invite_expire_time": 123456789,
+ "invite_status": "waiting"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinCustomService/CgibinCustomServiceGetOnlineKfListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinCustomService/CgibinCustomServiceGetOnlineKfListRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinCustomService/CgibinCustomServiceGetOnlineKfListRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinCustomService/CgibinCustomServiceGetOnlineKfListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinCustomService/CgibinCustomServiceGetOnlineKfListResponse.json
new file mode 100644
index 00000000..4dc15c53
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinCustomService/CgibinCustomServiceGetOnlineKfListResponse.json
@@ -0,0 +1,16 @@
+{
+ "kf_online_list": [
+ {
+ "kf_account": "test1@test",
+ "status": 1,
+ "kf_id": "1001",
+ "accepted_case": 1
+ },
+ {
+ "kf_account": "test2@test",
+ "status": 1,
+ "kf_id": "1002",
+ "accepted_case": 2
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessAccountBindRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessAccountBindRequest.json
new file mode 100644
index 00000000..0c648370
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessAccountBindRequest.json
@@ -0,0 +1,6 @@
+{
+ "type": "bind",
+ "biz_id": "123456",
+ "delivery_id": "YUNDA",
+ "password": "123456789123456789"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessAccountBindResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessAccountBindResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessAccountBindResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessAccountGetAllRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessAccountGetAllRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessAccountGetAllRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessAccountGetAllResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessAccountGetAllResponse.json
new file mode 100644
index 00000000..40e77ba5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessAccountGetAllResponse.json
@@ -0,0 +1,17 @@
+{
+ "count": 1,
+ "list": [
+ {
+ "biz_id": "123456789",
+ "delivery_id": "YUNDA",
+ "create_time": 1555482786,
+ "update_time": 1556594799,
+ "status_code": 0,
+ "alias": "",
+ "remark_wrong_msg": "",
+ "remark_content": "",
+ "quota_num": 55,
+ "quota_update_time": 1556594799
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessDeliveryGetAllRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessDeliveryGetAllRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessDeliveryGetAllRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessDeliveryGetAllResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessDeliveryGetAllResponse.json
new file mode 100644
index 00000000..73c53d90
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessDeliveryGetAllResponse.json
@@ -0,0 +1,33 @@
+{
+ "count": 7,
+ "data": [
+ {
+ "delivery_id": "BEST",
+ "delivery_name": "百世快递"
+ },
+ {
+ "delivery_id": "EMS",
+ "delivery_name": "中国邮政速递物流"
+ },
+ {
+ "delivery_id": "PJ",
+ "delivery_name": "品骏物流"
+ },
+ {
+ "delivery_id": "SF",
+ "delivery_name": "顺丰速运"
+ },
+ {
+ "delivery_id": "YTO",
+ "delivery_name": "圆通速递"
+ },
+ {
+ "delivery_id": "YUNDA",
+ "delivery_name": "韵达快递"
+ },
+ {
+ "delivery_id": "ZTO",
+ "delivery_name": "中通快递"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderAddRequest.json
new file mode 100644
index 00000000..a6b01f9f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderAddRequest.json
@@ -0,0 +1,63 @@
+{
+ "add_source": 0,
+ "order_id": "01234567890123456789",
+ "openid": "oABC123456",
+ "delivery_id": "SF",
+ "biz_id": "xyz",
+ "custom_remark": "易碎物品",
+ "sender": {
+ "name": "张三",
+ "tel": "020-88888888",
+ "mobile": "18666666666",
+ "company": "公司名",
+ "post_code": "123456",
+ "country": "中国",
+ "province": "广东省",
+ "city": "广州市",
+ "area": "海珠区",
+ "address": "XX路XX号XX大厦XX栋XX"
+ },
+ "receiver": {
+ "name": "王小蒙",
+ "tel": "020-77777777",
+ "mobile": "18610000000",
+ "company": "公司名",
+ "post_code": "654321",
+ "country": "中国",
+ "province": "广东省",
+ "city": "广州市",
+ "area": "天河区",
+ "address": "XX路XX号XX大厦XX栋XX"
+ },
+ "shop": {
+ "wxa_path": "/index/index?from=waybill&id=01234567890123456789",
+ "img_url": "https://mmbiz.qpic.cn/mmbiz_png/OiaFLUqewuIDNQnTiaCInIG8ibdosYHhQHPbXJUrqYSNIcBL60vo4LIjlcoNG1QPkeH5GWWEB41Ny895CokeAah8A/640",
+ "goods_name": "微信气泡狗抱枕&微信气泡狗钥匙扣",
+ "goods_count": 2
+ },
+ "cargo": {
+ "count": 2,
+ "weight": 5.5,
+ "space_x": 30.5,
+ "space_y": 20,
+ "space_z": 20,
+ "detail_list": [
+ {
+ "name": "微信气泡狗抱枕",
+ "count": 1
+ },
+ {
+ "name": "微信气泡狗钥匙扣",
+ "count": 1
+ }
+ ]
+ },
+ "insured": {
+ "use_insured": 1,
+ "insured_value": 10000
+ },
+ "service": {
+ "service_type": 0,
+ "service_name": "标准快递"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderAddResponse.json
new file mode 100644
index 00000000..4763c01f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderAddResponse.json
@@ -0,0 +1,16 @@
+{
+ "delivery_resultcode": 0,
+ "delivery_resultmsg": "ok",
+ "order_id": "01234567890123456789",
+ "waybill_id": "123456789",
+ "waybill_data": [
+ {
+ "key": "SF_bagAddr",
+ "value": "广州"
+ },
+ {
+ "key": "SF_mark",
+ "value": "101- 07-03 509"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderBatchGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderBatchGetRequest.json
new file mode 100644
index 00000000..ab59d7d8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderBatchGetRequest.json
@@ -0,0 +1,14 @@
+{
+ "order_list": [
+ {
+ "order_id": "01234567890123456789",
+ "delivery_id": "SF",
+ "waybill_id": "123456789"
+ },
+ {
+ "order_id": "01234567890123456789",
+ "delivery_id": "SF",
+ "waybill_id": "123456789"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderBatchGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderBatchGetResponse.json
new file mode 100644
index 00000000..7886c668
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderBatchGetResponse.json
@@ -0,0 +1,42 @@
+{
+ "order_list": [
+ {
+ "errcode": 0,
+ "errmsg": "ok",
+ "order_id": "01234567890123456789",
+ "delivery_id": "SF",
+ "waybill_id": "123456789",
+ "print_html": "jh7DjipP4ul4CQYUh69cniskrQZuOPwa1inAbXIqKbU0t71c0s65Au54cdWBZW0QJY4LYeofdM",
+ "waybill_data": [
+ {
+ "key": "SF_bagAddr",
+ "value": "广州"
+ },
+ {
+ "key": "SF_mark",
+ "value": "101- 07-03 509"
+ }
+ ],
+ "order_status": 0
+ },
+ {
+ "errcode": 0,
+ "errmsg": "ok",
+ "order_id": "01234567890123456789_2",
+ "delivery_id": "SF",
+ "waybill_id": "123456789_2",
+ "print_html": "jh7DjipP4ul4CQYUh69cniskrQZuOPwa1inAbXIqKbU0t71c0s65Au54cdWBZW0QJY4LYeofdM",
+ "waybill_data": [
+ {
+ "key": "SF_bagAddr",
+ "value": "广州"
+ },
+ {
+ "key": "SF_mark",
+ "value": "101- 07-03 509"
+ }
+ ],
+ "order_status": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderCancelRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderCancelRequest.json
new file mode 100644
index 00000000..18fa41ed
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderCancelRequest.json
@@ -0,0 +1,6 @@
+{
+ "order_id": "01234567890123456789",
+ "openid": "oABC123456",
+ "delivery_id": "SF",
+ "waybill_id": "123456789"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderCancelResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderCancelResponse.json
new file mode 100644
index 00000000..c86a7d3a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderCancelResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "delivery_resultcode": 0,
+ "delivery_resultmsg": ""
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderGetRequest.json
new file mode 100644
index 00000000..18fa41ed
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderGetRequest.json
@@ -0,0 +1,6 @@
+{
+ "order_id": "01234567890123456789",
+ "openid": "oABC123456",
+ "delivery_id": "SF",
+ "waybill_id": "123456789"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderGetResponse.json
new file mode 100644
index 00000000..b158a256
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessOrderGetResponse.json
@@ -0,0 +1,17 @@
+{
+ "print_html": "jh7DjipP4ul4CQYUh69cniskrQZuOPwa1inAbXIqKbU0t71c0s65Au54cdWBZW0QJY4LYeofdM",
+ "waybill_data": [
+ {
+ "key": "SF_bagAddr",
+ "value": "广州"
+ },
+ {
+ "key": "SF_mark",
+ "value": "101- 07-03 509"
+ }
+ ],
+ "delivery_id": "SF",
+ "waybill_id": "123456",
+ "order_id": "123456",
+ "order_status": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPathGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPathGetRequest.json
new file mode 100644
index 00000000..18fa41ed
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPathGetRequest.json
@@ -0,0 +1,6 @@
+{
+ "order_id": "01234567890123456789",
+ "openid": "oABC123456",
+ "delivery_id": "SF",
+ "waybill_id": "123456789"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPathGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPathGetResponse.json
new file mode 100644
index 00000000..776d3659
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPathGetResponse.json
@@ -0,0 +1,23 @@
+{
+ "openid": "OPENID",
+ "delivery_id": "SF",
+ "waybill_id": "12345678901234567890",
+ "path_item_num": 3,
+ "path_item_list": [
+ {
+ "action_time": 1533052800,
+ "action_type": 100001,
+ "action_msg": "快递员已成功取件"
+ },
+ {
+ "action_time": 1533062800,
+ "action_type": 200001,
+ "action_msg": "快件已到达xxx集散中心,准备发往xxx"
+ },
+ {
+ "action_time": 1533072800,
+ "action_type": 300001,
+ "action_msg": "快递员已出发,联系电话xxxxxx"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPrinterGetAllRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPrinterGetAllRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPrinterGetAllRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPrinterGetAllResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPrinterGetAllResponse.json
new file mode 100644
index 00000000..8afb527e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPrinterGetAllResponse.json
@@ -0,0 +1,11 @@
+{
+ "count": 2,
+ "openid": [
+ "oABC",
+ "oXYZ"
+ ],
+ "tagid_list": [
+ "123",
+ "456"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPrinterUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPrinterUpdateRequest.json
new file mode 100644
index 00000000..4d54e7f4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPrinterUpdateRequest.json
@@ -0,0 +1,5 @@
+{
+ "openid": "oJ4v0wRAfiXcnIbM3SgGEUkTw3Qw",
+ "update_type": "bind",
+ "tagid_list": "123,456"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPrinterUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPrinterUpdateResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessPrinterUpdateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessQuotaGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessQuotaGetRequest.json
new file mode 100644
index 00000000..6ae749f1
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessQuotaGetRequest.json
@@ -0,0 +1,4 @@
+{
+ "delivery_id": "YTO",
+ "biz_id": "xyz"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessQuotaGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessQuotaGetResponse.json
new file mode 100644
index 00000000..9c3726c8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessQuotaGetResponse.json
@@ -0,0 +1,3 @@
+{
+ "quota_num": 210
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessTestUpdateOrderRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessTestUpdateOrderRequest.json
new file mode 100644
index 00000000..1ff6d9d0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessTestUpdateOrderRequest.json
@@ -0,0 +1,9 @@
+{
+ "biz_id": "test_biz_id",
+ "order_id": "xxxxxxxxxxxx",
+ "delivery_id": "TEST",
+ "waybill_id": "xxxxxxxxxx",
+ "action_time": 123456789,
+ "action_type": 100001,
+ "action_msg": "揽件阶段"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessTestUpdateOrderResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessTestUpdateOrderResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Business/CgibinExpressBusinessTestUpdateOrderResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryContactGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryContactGetRequest.json
new file mode 100644
index 00000000..ec6addcb
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryContactGetRequest.json
@@ -0,0 +1,4 @@
+{
+ "token": "TOKEN",
+ "waybill_id": "12345678901234567890"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryContactGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryContactGetResponse.json
new file mode 100644
index 00000000..f4566c16
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryContactGetResponse.json
@@ -0,0 +1,15 @@
+{
+ "waybill_id": "12345678901234567890",
+ "sender": {
+ "address": "广东省广州市海珠区XX路XX号XX大厦XX栋XX",
+ "name": "张三",
+ "tel": "020-88888888",
+ "mobile": "18666666666"
+ },
+ "receiver": {
+ "address": "广东省广州市天河区XX路XX号XX大厦XX栋XX",
+ "name": "王小蒙",
+ "tel": "029-77777777",
+ "mobile": "18610000000"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryPathUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryPathUpdateRequest.json
new file mode 100644
index 00000000..a74ad9af
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryPathUpdateRequest.json
@@ -0,0 +1,7 @@
+{
+ "token": "TOKEN",
+ "waybill_id": "12345678901234567890",
+ "action_time": 1533052800,
+ "action_type": 300002,
+ "action_msg": "丽影邓丽君【18666666666】正在派件"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryPathUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryPathUpdateResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryPathUpdateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryServiceBusinessUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryServiceBusinessUpdateRequest.json
new file mode 100644
index 00000000..c60e0104
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryServiceBusinessUpdateRequest.json
@@ -0,0 +1,6 @@
+{
+ "shop_app_id": "wxABCD",
+ "biz_id": "xyz",
+ "result_code": 0,
+ "result_msg": "审核通过"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryServiceBusinessUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryServiceBusinessUpdateResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryServiceBusinessUpdateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryTemplatePreviewRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryTemplatePreviewRequest.json
new file mode 100644
index 00000000..dda7336c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryTemplatePreviewRequest.json
@@ -0,0 +1,67 @@
+{
+ "waybill_id": "1234567890123",
+ "waybill_data": "##ZTO_mark##11-22-33##ZTO_bagAddr##广州##",
+ "waybill_template": "PGh0bWw+dGVzdDwvaHRtbD4=",
+ "custom": {
+ "order_id": "012345678901234567890123456789",
+ "openid": "oABC123456",
+ "delivery_id": "ZTO",
+ "biz_id": "xyz",
+ "custom_remark": "易碎物品",
+ "sender": {
+ "name": "张三",
+ "tel": "18666666666",
+ "mobile": "020-88888888",
+ "company": "公司名",
+ "post_code": "123456",
+ "country": "中国",
+ "province": "广东省",
+ "city": "广州市",
+ "area": "海珠区",
+ "address": "XX路XX号XX大厦XX栋XX"
+ },
+ "receiver": {
+ "name": "王小蒙",
+ "tel": "18610000000",
+ "mobile": "020-77777777",
+ "company": "公司名",
+ "post_code": "654321",
+ "country": "中国",
+ "province": "广东省",
+ "city": "广州市",
+ "area": "天河区",
+ "address": "XX路XX号XX大厦XX栋XX"
+ },
+ "shop": {
+ "wxa_path": "/index/index?from=waybill",
+ "img_url": "https://mmbiz.qpic.cn/mmbiz_png/KfrZwACMrmwbPGicysN6kibW0ibXwzmA3mtTwgSsdw4Uicabduu2pfbfwdKicQ8n0v91kRAUX6SDESQypl5tlRwHUPA/640",
+ "goods_name": "一千零一夜钻石包&爱马仕柏金钻石包",
+ "goods_count": 2
+ },
+ "cargo": {
+ "count": 2,
+ "weight": 5.5,
+ "space_x": 30.5,
+ "space_y": 20,
+ "space_z": 20,
+ "detail_list": [
+ {
+ "name": "一千零一夜钻石包",
+ "count": 1
+ },
+ {
+ "name": "爱马仕柏金钻石包",
+ "count": 1
+ }
+ ]
+ },
+ "insured": {
+ "use_insured": 1,
+ "insured_value": 10000
+ },
+ "service": {
+ "service_type": 0,
+ "service_name": "标准快递"
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryTemplatePreviewResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryTemplatePreviewResponse.json
new file mode 100644
index 00000000..6c38f848
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/Delivery/CgibinExpressDeliveryTemplatePreviewResponse.json
@@ -0,0 +1,4 @@
+{
+ "waybill_id": "1234567890123",
+ "rendered_waybill_template": "PGh0bWw+dGVzdDwvaHRtbD4="
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessDeliveryGetAllRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessDeliveryGetAllRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessDeliveryGetAllRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessDeliveryGetAllResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessDeliveryGetAllResponse.json
new file mode 100644
index 00000000..6a8c45c4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessDeliveryGetAllResponse.json
@@ -0,0 +1,14 @@
+{
+ "resultcode": 0,
+ "resultmsg": "ok",
+ "list": [
+ {
+ "delivery_id": "SFTC",
+ "delivery_name": "顺发同城"
+ },
+ {
+ "delivery_id": "MTPS",
+ "delivery_name": "美团配送"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOpenRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOpenRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOpenRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOpenResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOpenResponse.json
new file mode 100644
index 00000000..36b8efea
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOpenResponse.json
@@ -0,0 +1,4 @@
+{
+ "resultcode": 0,
+ "resultmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderAddRequest.json
new file mode 100644
index 00000000..fa2c71b5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderAddRequest.json
@@ -0,0 +1,74 @@
+{
+ "cargo": {
+ "cargo_first_class": "美食夜宵",
+ "cargo_second_class": "零食小吃",
+ "goods_detail": {
+ "goods": [
+ {
+ "good_count": 1,
+ "good_name": "水果",
+ "good_price": 10,
+ "good_unit": "元"
+ },
+ {
+ "good_count": 2,
+ "good_name": "蔬菜",
+ "good_price": 20,
+ "good_unit": "元"
+ }
+ ]
+ },
+ "goods_height": 1,
+ "goods_length": 3,
+ "goods_value": 5,
+ "goods_weight": 1,
+ "goods_width": 2
+ },
+ "delivery_id": "SFTC",
+ "delivery_sign": "01234567890123456789",
+ "openid": "oABC123456",
+ "order_info": {
+ "delivery_service_code": "",
+ "expected_delivery_time": 0,
+ "is_direct_delivery": 0,
+ "is_finish_code_needed": 1,
+ "is_insured": 0,
+ "is_pickup_code_needed": 1,
+ "note": "test_note",
+ "order_time": 1555220757,
+ "order_type": 0,
+ "poi_seq": "1111",
+ "tips": 0
+ },
+ "receiver": {
+ "address": "xxx地铁站",
+ "address_detail": "2号楼202",
+ "city": "北京市",
+ "coordinate_type": 0,
+ "lat": 40.1529600000,
+ "lng": 116.5060300000,
+ "name": "老王",
+ "phone": "18512345678"
+ },
+ "sender": {
+ "address": "xx大厦",
+ "address_detail": "1号楼101",
+ "city": "北京市",
+ "coordinate_type": 0,
+ "lat": 40.4486120000,
+ "lng": 116.3830750000,
+ "name": "刘一",
+ "phone": "13712345678"
+ },
+ "shop": {
+ "goods_count": 2,
+ "goods_name": "宝贝",
+ "img_url": "https://mmbiz.qpic.cn/mmbiz_png/xxxxxxxxx/0?wx_fmt=png",
+ "wxa_path": "/page/index/index"
+ },
+ "shop_no": "12345678",
+ "sub_biz_id": "sub_biz_id_1",
+ "shop_order_id": "SFTC_001",
+ "shopid": "122222222",
+ "delivery_token": "xxxxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderAddResponse.json
new file mode 100644
index 00000000..83c5578c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderAddResponse.json
@@ -0,0 +1,15 @@
+{
+ "resultcode": 0,
+ "resultmsg": "ok",
+ "fee": 10,
+ "deliverfee": 10,
+ "couponfee": 0,
+ "tips": 0,
+ "insurancefee": 0,
+ "distance": 1000,
+ "waybill_id": "123456789",
+ "order_status": 101,
+ "finish_code": 1024,
+ "pickup_code": 2048,
+ "dispatch_duration": 300
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderAddTipsRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderAddTipsRequest.json
new file mode 100644
index 00000000..dcfe734e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderAddTipsRequest.json
@@ -0,0 +1,9 @@
+{
+ "shopid": "123456",
+ "shop_order_id": "123456",
+ "waybill_id": "123456",
+ "tips": 5,
+ "remark": "gogogo",
+ "delivery_sign": "123456",
+ "shop_no": "shop_no_111"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderAddTipsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderAddTipsResponse.json
new file mode 100644
index 00000000..36b8efea
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderAddTipsResponse.json
@@ -0,0 +1,4 @@
+{
+ "resultcode": 0,
+ "resultmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderCancelRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderCancelRequest.json
new file mode 100644
index 00000000..c14274ca
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderCancelRequest.json
@@ -0,0 +1,10 @@
+{
+ "shopid": "123456",
+ "shop_order_id": "123456",
+ "waybill_id": "123456",
+ "delivery_id": "123456",
+ "cancel_reason_id": 1,
+ "cancel_reason": "",
+ "delivery_sign": "123456",
+ "shop_no": "shop_no_111"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderCancelResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderCancelResponse.json
new file mode 100644
index 00000000..640bd8ed
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderCancelResponse.json
@@ -0,0 +1,6 @@
+{
+ "resultcode": 0,
+ "resultmsg": "ok",
+ "deduct_fee": 5,
+ "desc": "blabla"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderConfirmReturnRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderConfirmReturnRequest.json
new file mode 100644
index 00000000..ae2c592b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderConfirmReturnRequest.json
@@ -0,0 +1,8 @@
+{
+ "shopid": "123456",
+ "shop_order_id": "123456",
+ "shop_no": "shop_no_111",
+ "waybill_id": "123456",
+ "remark": "remark",
+ "delivery_sign": "123456"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderConfirmReturnResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderConfirmReturnResponse.json
new file mode 100644
index 00000000..36b8efea
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderConfirmReturnResponse.json
@@ -0,0 +1,4 @@
+{
+ "resultcode": 0,
+ "resultmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderPreAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderPreAddRequest.json
new file mode 100644
index 00000000..37dab2cd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderPreAddRequest.json
@@ -0,0 +1,73 @@
+{
+ "cargo": {
+ "cargo_first_class": "美食夜宵",
+ "cargo_second_class": "零食小吃",
+ "goods_detail": {
+ "goods": [
+ {
+ "good_count": 1,
+ "good_name": "水果",
+ "good_price": 10,
+ "good_unit": "元"
+ },
+ {
+ "good_count": 2,
+ "good_name": "蔬菜",
+ "good_price": 20,
+ "good_unit": "元"
+ }
+ ]
+ },
+ "goods_height": 1,
+ "goods_length": 3,
+ "goods_value": 5,
+ "goods_weight": 1,
+ "goods_width": 2
+ },
+ "delivery_id": "SFTC",
+ "delivery_sign": "01234567890123456789",
+ "openid": "oABC123456",
+ "order_info": {
+ "delivery_service_code": "",
+ "expected_delivery_time": 0,
+ "is_direct_delivery": 0,
+ "is_finish_code_needed": 1,
+ "is_insured": 0,
+ "is_pickup_code_needed": 1,
+ "note": "test_note",
+ "order_time": 1555220757,
+ "order_type": 0,
+ "poi_seq": "1111",
+ "tips": 0
+ },
+ "receiver": {
+ "address": "xxx地铁站",
+ "address_detail": "2号楼202",
+ "city": "北京市",
+ "coordinate_type": 0,
+ "lat": 40.1529600000,
+ "lng": 116.5060300000,
+ "name": "老王",
+ "phone": "18512345678"
+ },
+ "sender": {
+ "address": "xx大厦",
+ "address_detail": "1号楼101",
+ "city": "北京市",
+ "coordinate_type": 0,
+ "lat": 40.4486120000,
+ "lng": 116.3830750000,
+ "name": "刘一",
+ "phone": "13712345678"
+ },
+ "shop": {
+ "goods_count": 2,
+ "goods_name": "宝贝",
+ "img_url": "https://mmbiz.qpic.cn/mmbiz_png/xxxxxxxxx/0?wx_fmt=png",
+ "wxa_path": "/page/index/index"
+ },
+ "shop_no": "12345678",
+ "sub_biz_id": "sub_biz_id_1",
+ "shop_order_id": "SFTC_001",
+ "shopid": "122222222"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderPreAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderPreAddResponse.json
new file mode 100644
index 00000000..5a52b0af
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderPreAddResponse.json
@@ -0,0 +1,12 @@
+{
+ "resultcode": 0,
+ "resultmsg": "ok",
+ "fee": 10,
+ "deliverfee": 10,
+ "couponfee": 0,
+ "tips": 0,
+ "insurancefee": 0,
+ "distance": 1000,
+ "dispatch_duration": 300,
+ "delivery_token": "1111111"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderPreCancelRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderPreCancelRequest.json
new file mode 100644
index 00000000..c14274ca
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderPreCancelRequest.json
@@ -0,0 +1,10 @@
+{
+ "shopid": "123456",
+ "shop_order_id": "123456",
+ "waybill_id": "123456",
+ "delivery_id": "123456",
+ "cancel_reason_id": 1,
+ "cancel_reason": "",
+ "delivery_sign": "123456",
+ "shop_no": "shop_no_111"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderPreCancelResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderPreCancelResponse.json
new file mode 100644
index 00000000..640bd8ed
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderPreCancelResponse.json
@@ -0,0 +1,6 @@
+{
+ "resultcode": 0,
+ "resultmsg": "ok",
+ "deduct_fee": 5,
+ "desc": "blabla"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderReAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderReAddRequest.json
new file mode 100644
index 00000000..cb61cbcc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderReAddRequest.json
@@ -0,0 +1,74 @@
+{
+ "cargo": {
+ "cargo_first_class": "美食夜宵",
+ "cargo_second_class": "零食小吃",
+ "goods_detail": {
+ "goods": [
+ {
+ "good_count": 1,
+ "good_name": "水果",
+ "good_price": 10,
+ "good_unit": "元"
+ },
+ {
+ "good_count": 2,
+ "good_name": "蔬菜",
+ "good_price": 20,
+ "good_unit": "元"
+ }
+ ]
+ },
+ "goods_height": 1,
+ "goods_length": 3,
+ "goods_value": 5,
+ "goods_weight": 1,
+ "goods_width": 2
+ },
+ "delivery_id": "SFTC",
+ "delivery_sign": "01234567890123456789",
+ "openid": "oABC123456",
+ "order_info": {
+ "delivery_service_code": "",
+ "expected_delivery_time": 0,
+ "is_direct_delivery": 0,
+ "is_finish_code_needed": 1,
+ "is_insured": 0,
+ "is_pickup_code_needed": 1,
+ "note": "test_note",
+ "order_time": 1555220757,
+ "order_type": 0,
+ "poi_seq": "1111",
+ "tips": 0
+ },
+ "receiver": {
+ "address": "xxx地铁站",
+ "address_detail": "2号楼202",
+ "city": "北京市",
+ "coordinate_type": 0,
+ "lat": 40.1529600000,
+ "lng": 116.5060300000,
+ "name": "老王",
+ "phone": "18512345678"
+ },
+ "sender": {
+ "address": "xx大厦",
+ "address_detail": "1号楼101",
+ "city": "北京市",
+ "coordinate_type": 0,
+ "lat": 40.4486120000,
+ "lng": 116.3830750000,
+ "name": "刘一",
+ "phone": "13712345678"
+ },
+ "shop": {
+ "goods_count": 2,
+ "goods_name": "宝贝",
+ "img_url": "https://mmbiz.qpic.cn/mmbiz_png/xxxxxxxxx/0?wx_fmt=png",
+ "wxa_path": "/page/index/index"
+ },
+ "shop_no": "12345678",
+ "sub_biz_id": "sub_biz_id_1",
+ "shop_order_id": "SFTC_001",
+ "shopid": "122222222",
+ "delivery_token": "xxxxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderReAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderReAddResponse.json
new file mode 100644
index 00000000..23929c4d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessOrderReAddResponse.json
@@ -0,0 +1,15 @@
+{
+ "resultcode": 0,
+ "resultmsg": "ok",
+ "fee": 10,
+ "deliverfee": 10,
+ "couponfee": 0,
+ "tips": 0,
+ "insurancefee": 0,
+ "distance": 1000,
+ "waybill_id": "123456789",
+ "order_status": 101,
+ "finish_code": 1024,
+ "pickup_code": 2048,
+ "dispatch_duration": 300
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessRealMockUpdateOrderRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessRealMockUpdateOrderRequest.json
new file mode 100644
index 00000000..2a14d757
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessRealMockUpdateOrderRequest.json
@@ -0,0 +1,8 @@
+{
+ "shopid": "xxxxxxx",
+ "shop_order_id": "xxxxxxxxxxx",
+ "action_time": 1584145981,
+ "order_status": 101,
+ "action_msg": "",
+ "delivery_sign": "xxxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessRealMockUpdateOrderResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessRealMockUpdateOrderResponse.json
new file mode 100644
index 00000000..36b8efea
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessRealMockUpdateOrderResponse.json
@@ -0,0 +1,4 @@
+{
+ "resultcode": 0,
+ "resultmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessShopAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessShopAddRequest.json
new file mode 100644
index 00000000..f3b5010b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessShopAddRequest.json
@@ -0,0 +1,3 @@
+{
+ "delivery_id": "SFTC"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessShopAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessShopAddResponse.json
new file mode 100644
index 00000000..36b8efea
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessShopAddResponse.json
@@ -0,0 +1,4 @@
+{
+ "resultcode": 0,
+ "resultmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessShopGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessShopGetRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessShopGetRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessShopGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessShopGetResponse.json
new file mode 100644
index 00000000..01456963
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessShopGetResponse.json
@@ -0,0 +1,16 @@
+{
+ "resultcode": 0,
+ "resultmsg": "ok",
+ "shop_list": [
+ {
+ "delivery_id": "SFTC",
+ "shopid": "123456",
+ "audit_result": 0
+ },
+ {
+ "delivery_id": "MTPS",
+ "shopid": "123456",
+ "audit_result": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessTestUpdateOrderRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessTestUpdateOrderRequest.json
new file mode 100644
index 00000000..7f3d07f9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessTestUpdateOrderRequest.json
@@ -0,0 +1,7 @@
+{
+ "shopid": "test_shop_id",
+ "shop_order_id": "xxxxxxxxxxx",
+ "action_time": 12345678,
+ "order_status": 101,
+ "action_msg": ""
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessTestUpdateOrderResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessTestUpdateOrderResponse.json
new file mode 100644
index 00000000..36b8efea
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinExpress/LocalBusiness/CgibinExpressLocalBusinessTestUpdateOrderResponse.json
@@ -0,0 +1,4 @@
+{
+ "resultcode": 0,
+ "resultmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideAddGuideAccountRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideAddGuideAccountRequest.json
new file mode 100644
index 00000000..e69ca186
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideAddGuideAccountRequest.json
@@ -0,0 +1,5 @@
+{
+ "guide_account": "wx_account",
+ "guide_headimgurl": "xxxxxxx",
+ "guide_nickname": "张三"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideAddGuideAccountResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideAddGuideAccountResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideAddGuideAccountResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideDeleteGuideAccountRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideDeleteGuideAccountRequest.json
new file mode 100644
index 00000000..54baa827
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideDeleteGuideAccountRequest.json
@@ -0,0 +1,3 @@
+{
+ "guide_account": "wx_account"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideDeleteGuideAccountResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideDeleteGuideAccountResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideDeleteGuideAccountResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideGetGuideAccountRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideGetGuideAccountRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideGetGuideAccountRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideGetGuideAccountResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideGetGuideAccountResponse.json
new file mode 100644
index 00000000..5076b6b3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideGetGuideAccountResponse.json
@@ -0,0 +1,8 @@
+{
+ "guide_account": "张三",
+ "guide_headimgurl": "xxxxxxx",
+ "guide_nickname": "xxxxxxx",
+ "guide_openid": "0",
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideUpdateGuideAccountRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideUpdateGuideAccountRequest.json
new file mode 100644
index 00000000..5cd717fb
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideUpdateGuideAccountRequest.json
@@ -0,0 +1,4 @@
+{
+ "guide_account": "wx_account",
+ "guide_nickname": "张三"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideUpdateGuideAccountResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideUpdateGuideAccountResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Account/CgibinGuideUpdateGuideAccountResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerChatRecord/CgibinGuideGetGuideBuyerChatRecordRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerChatRecord/CgibinGuideGetGuideBuyerChatRecordRequest.json
new file mode 100644
index 00000000..3cad5a59
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerChatRecord/CgibinGuideGetGuideBuyerChatRecordRequest.json
@@ -0,0 +1,8 @@
+{
+ "guide_account": "张三",
+ "openid": "xxxx",
+ "begin_time": 121212,
+ "end_time": 232323,
+ "page": 0,
+ "num": 10
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerChatRecord/CgibinGuideGetGuideBuyerChatRecordResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerChatRecord/CgibinGuideGetGuideBuyerChatRecordResponse.json
new file mode 100644
index 00000000..a95bcf7d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerChatRecord/CgibinGuideGetGuideBuyerChatRecordResponse.json
@@ -0,0 +1,15 @@
+{
+ "total_num": 1,
+ "msg_list": [
+ {
+ "guide_account": "张三",
+ "openid": "xxx",
+ "create_time": 121212,
+ "content": "test",
+ "content_type": 1,
+ "direction": 1
+ }
+ ],
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideAddGuideBuyerRelationRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideAddGuideBuyerRelationRequest.json
new file mode 100644
index 00000000..541f179a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideAddGuideBuyerRelationRequest.json
@@ -0,0 +1,15 @@
+{
+ "guide_account": "wx_account",
+ "openid": "xxxxxxx",
+ "buyer_nickname": "张三",
+ "buyer_list": [
+ {
+ "openid": "xxxxxxx",
+ "buyer_nickname": "张三"
+ },
+ {
+ "openid": "yyyyyyyy",
+ "buyer_nickname": "李四"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideAddGuideBuyerRelationResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideAddGuideBuyerRelationResponse.json
new file mode 100644
index 00000000..2080ee1e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideAddGuideBuyerRelationResponse.json
@@ -0,0 +1,16 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "buyer_resp": [
+ {
+ "errcode": 0,
+ "errmsg": "ok",
+ "openid": "xxxxxxx"
+ },
+ {
+ "errcode": 0,
+ "errmsg": "ok",
+ "openid": "yyyyyyyy"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideDeleteGuideBuyerRelationRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideDeleteGuideBuyerRelationRequest.json
new file mode 100644
index 00000000..139d0b50
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideDeleteGuideBuyerRelationRequest.json
@@ -0,0 +1,8 @@
+{
+ "guide_account": "wx_account",
+ "openid": "xxxxxxx",
+ "openid_list": [
+ "xxxxxxx",
+ "yyyyyyyy"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideDeleteGuideBuyerRelationResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideDeleteGuideBuyerRelationResponse.json
new file mode 100644
index 00000000..2080ee1e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideDeleteGuideBuyerRelationResponse.json
@@ -0,0 +1,16 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "buyer_resp": [
+ {
+ "errcode": 0,
+ "errmsg": "ok",
+ "openid": "xxxxxxx"
+ },
+ {
+ "errcode": 0,
+ "errmsg": "ok",
+ "openid": "yyyyyyyy"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationByBuyerRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationByBuyerRequest.json
new file mode 100644
index 00000000..65d91202
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationByBuyerRequest.json
@@ -0,0 +1,3 @@
+{
+ "openid": "xxxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationByBuyerResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationByBuyerResponse.json
new file mode 100644
index 00000000..5692dafc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationByBuyerResponse.json
@@ -0,0 +1,9 @@
+{
+ "openid": "xxxxx",
+ "guide_account": "xxxxx",
+ "guide_openid": "xxxxx",
+ "buyer_nickname": "张三",
+ "create_time": 11223344,
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationListRequest.json
new file mode 100644
index 00000000..46078ff6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationListRequest.json
@@ -0,0 +1,5 @@
+{
+ "guide_account": "wx_account",
+ "page": 0,
+ "num": 10
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationListResponse.json
new file mode 100644
index 00000000..120bf402
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationListResponse.json
@@ -0,0 +1,12 @@
+{
+ "total_num": 1,
+ "list": [
+ {
+ "openid": "xxxxxxx",
+ "buyer_nickname": "xxxxxxx",
+ "create_time": 11223344
+ }
+ ],
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationRequest.json
new file mode 100644
index 00000000..85296ddf
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationRequest.json
@@ -0,0 +1,4 @@
+{
+ "guide_account": "wx_account",
+ "openid": "xxxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationResponse.json
new file mode 100644
index 00000000..e3a0739e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideGetGuideBuyerRelationResponse.json
@@ -0,0 +1,7 @@
+{
+ "openid": "xxxxx",
+ "buyer_nickname": "张三",
+ "create_time": 11223344,
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideRebindGuideAccountForBuyerRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideRebindGuideAccountForBuyerRequest.json
new file mode 100644
index 00000000..8e54cebd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideRebindGuideAccountForBuyerRequest.json
@@ -0,0 +1,9 @@
+{
+ "old_guide_account": "wx_account",
+ "new_guide_account": "wx_account",
+ "openid": "xxxxxxx",
+ "openid_list": [
+ "xxxxxxx",
+ "yyyyyyyy"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideRebindGuideAccountForBuyerResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideRebindGuideAccountForBuyerResponse.json
new file mode 100644
index 00000000..2080ee1e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideRebindGuideAccountForBuyerResponse.json
@@ -0,0 +1,16 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "buyer_resp": [
+ {
+ "errcode": 0,
+ "errmsg": "ok",
+ "openid": "xxxxxxx"
+ },
+ {
+ "errcode": 0,
+ "errmsg": "ok",
+ "openid": "yyyyyyyy"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideUpdateGuideBuyerRelationRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideUpdateGuideBuyerRelationRequest.json
new file mode 100644
index 00000000..f55ad43d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideUpdateGuideBuyerRelationRequest.json
@@ -0,0 +1,5 @@
+{
+ "guide_account": "wx_account",
+ "openid": "xxxxxx",
+ "buyer_nickname": "张三"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideUpdateGuideBuyerRelationResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideUpdateGuideBuyerRelationResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/BuyerRelation/CgibinGuideUpdateGuideBuyerRelationResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideGetGuideAccountConfigRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideGetGuideAccountConfigRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideGetGuideAccountConfigRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideGetGuideAccountConfigResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideGetGuideAccountConfigResponse.json
new file mode 100644
index 00000000..4bb61fd2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideGetGuideAccountConfigResponse.json
@@ -0,0 +1,11 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "black_keyword": {
+ "values": [ "敏感词1", "敏感词2" ],
+ "updatetime": 11111
+ },
+ "guide_auto_reply": {
+ "content": "自动回复"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideGetGuideConfigRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideGetGuideConfigRequest.json
new file mode 100644
index 00000000..2ae6b408
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideGetGuideConfigRequest.json
@@ -0,0 +1,3 @@
+{
+ "guide_account": "张三"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideGetGuideConfigResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideGetGuideConfigResponse.json
new file mode 100644
index 00000000..d9383722
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideGetGuideConfigResponse.json
@@ -0,0 +1,20 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "guide_fast_reply_list": [
+ {
+ "content": "快捷回复",
+ "updatetime": 11111
+ }
+ ],
+ "guide_auto_reply": {
+ "msgtype": 3,
+ "content": "{\"title\":\"abc\",\"appid\":\"abc\",\"path\":\"abc\",\"pic_url\":\"abc\",\"master_id\":abc,\"str_master_id\":\"abc\",\"slave_id\":abc,\"str_slave_id\":\"abc\"}",
+ "updatetime": 111
+ },
+ "guide_auto_reply_plus": {
+ "msgtype": 2,
+ "content": "abc",
+ "updatetime": 1589270333
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideSetGuideAccountConfigRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideSetGuideAccountConfigRequest.json
new file mode 100644
index 00000000..63f22e3e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideSetGuideAccountConfigRequest.json
@@ -0,0 +1,9 @@
+{
+ "is_delete": false,
+ "black_keyword": {
+ "values": [ "敏感词1", "敏感词2" ]
+ },
+ "guide_auto_reply": {
+ "content": "自动回复"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideSetGuideAccountConfigResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideSetGuideAccountConfigResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideSetGuideAccountConfigResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideSetGuideConfigRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideSetGuideConfigRequest.json
new file mode 100644
index 00000000..fd4c547d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideSetGuideConfigRequest.json
@@ -0,0 +1,17 @@
+{
+ "guide_account": "xxxx",
+ "is_delete": false,
+ "guide_fast_reply_list": [
+ {
+ "content": "快捷回复"
+ }
+ ],
+ "guide_auto_reply": {
+ "content": "word",
+ "msgtype": "1"
+ },
+ "guide_auto_reply_plus": {
+ "content": "{\"media_id\":\"abc\", \"title\":\"abc\", \"path\":\"abc\", \"appid\":\"abc\"}",
+ "msgtype": "3"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideSetGuideConfigResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideSetGuideConfigResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Config/CgibinGuideSetGuideConfigResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideAddGuide2GuideGroupRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideAddGuide2GuideGroupRequest.json
new file mode 100644
index 00000000..0435b294
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideAddGuide2GuideGroupRequest.json
@@ -0,0 +1,4 @@
+{
+ "group_id": "121",
+ "guide_account": "xxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideAddGuide2GuideGroupResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideAddGuide2GuideGroupResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideAddGuide2GuideGroupResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideDeleteGuide2GuideGroupRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideDeleteGuide2GuideGroupRequest.json
new file mode 100644
index 00000000..0435b294
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideDeleteGuide2GuideGroupRequest.json
@@ -0,0 +1,4 @@
+{
+ "group_id": "121",
+ "guide_account": "xxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideDeleteGuide2GuideGroupResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideDeleteGuide2GuideGroupResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideDeleteGuide2GuideGroupResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideDeleteGuideGroupRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideDeleteGuideGroupRequest.json
new file mode 100644
index 00000000..e0c1a3b9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideDeleteGuideGroupRequest.json
@@ -0,0 +1,3 @@
+{
+ "group_id": "11212"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideDeleteGuideGroupResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideDeleteGuideGroupResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideDeleteGuideGroupResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGroupByGuideRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGroupByGuideRequest.json
new file mode 100644
index 00000000..bda97560
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGroupByGuideRequest.json
@@ -0,0 +1,3 @@
+{
+ "guide_account": "xxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGroupByGuideResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGroupByGuideResponse.json
new file mode 100644
index 00000000..50cc8c3f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGroupByGuideResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "group_id_list": [ 12736, 12238 ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGroupInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGroupInfoRequest.json
new file mode 100644
index 00000000..2e19b705
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGroupInfoRequest.json
@@ -0,0 +1,5 @@
+{
+ "group_id": "1212",
+ "page": 0,
+ "num": 100
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGroupInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGroupInfoResponse.json
new file mode 100644
index 00000000..8f473c3b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGroupInfoResponse.json
@@ -0,0 +1,14 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "guide_list": [
+ {
+ "guide_account": "xxxxx",
+ "guide_headimgurl": "xxxxxx",
+ "guide_nickname": "xxx",
+ "create_time": 1584090536,
+ "guide_openid": ""
+ }
+ ],
+ "total_num": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGuideGroupListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGuideGroupListRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGuideGroupListRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGuideGroupListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGuideGroupListResponse.json
new file mode 100644
index 00000000..26e77398
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideGetGuideGroupListResponse.json
@@ -0,0 +1,24 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "group_list": [
+ {
+ "id": 3223,
+ "name": "xxxxx",
+ "create_time": 232,
+ "update_time": 2323
+ },
+ {
+ "id": 1312,
+ "name": "ewrwe",
+ "create_time": 3243,
+ "update_time": 2323
+ },
+ {
+ "id": 343,
+ "name": "asdf",
+ "create_time": 4554,
+ "update_time": 3434
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideNewGuideGroupRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideNewGuideGroupRequest.json
new file mode 100644
index 00000000..6dcb4c69
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideNewGuideGroupRequest.json
@@ -0,0 +1,3 @@
+{
+ "group_name": "test"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideNewGuideGroupResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideNewGuideGroupResponse.json
new file mode 100644
index 00000000..fd2c8d02
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Group/CgibinGuideNewGuideGroupResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "group_id": "0000000001"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideAddGuideMassSendJobRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideAddGuideMassSendJobRequest.json
new file mode 100644
index 00000000..a79e57ca
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideAddGuideMassSendJobRequest.json
@@ -0,0 +1,26 @@
+{
+ "guide_account": "xxxxxxxx",
+ "task_name": "testtask_name111",
+ "task_remark": "testtask_remark111",
+ "push_time": 1589010582,
+ "openid": [
+ "yyyyyyyy"
+ ],
+ "material": [
+ {
+ "type": 1,
+ "word": "testword"
+ },
+ {
+ "type": 3,
+ "media_id": "xxxxxxxxxxxxxx"
+ },
+ {
+ "type": 49,
+ "media_id": "xxxxxxxxxxxxxx",
+ "title": "test_title",
+ "path": "page/index/index",
+ "appid": "wxzzzzzzzzzzzz"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideAddGuideMassSendJobResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideAddGuideMassSendJobResponse.json
new file mode 100644
index 00000000..f70b96c9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideAddGuideMassSendJobResponse.json
@@ -0,0 +1,11 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "task_result": [{
+ "task_id": 1332519773019865088,
+ "openid": [
+ "xxxxxx",
+ "yyyyyy"
+ ]
+ }]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideCancelGuideMassSendJobRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideCancelGuideMassSendJobRequest.json
new file mode 100644
index 00000000..9e46f666
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideCancelGuideMassSendJobRequest.json
@@ -0,0 +1,3 @@
+{
+ "task_id": 1332414111522783232
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideCancelGuideMassSendJobResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideCancelGuideMassSendJobResponse.json
new file mode 100644
index 00000000..16292a24
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideCancelGuideMassSendJobResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "OK"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideGetGuideMassSendJobListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideGetGuideMassSendJobListRequest.json
new file mode 100644
index 00000000..5e07a06f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideGetGuideMassSendJobListRequest.json
@@ -0,0 +1,5 @@
+{
+ "guide_account": "xxxxxxxx",
+ "offset": 0,
+ "limit": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideGetGuideMassSendJobListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideGetGuideMassSendJobListResponse.json
new file mode 100644
index 00000000..356ff2d4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideGetGuideMassSendJobListResponse.json
@@ -0,0 +1,40 @@
+{
+ "errcode": 0,
+ "errmsg": "OK",
+ "list": [
+ {
+ "task_id": 1332519773019865088,
+ "create_time": 1589016638,
+ "update_time": 1589016638,
+ "push_time": 1589010582,
+ "finish_time": 0,
+ "task_name": "testtask_name111",
+ "task_remark": "testtask_remark111",
+ "material": [
+ {
+ "type": 1,
+ "word": "testword"
+ },
+ {
+ "type": 3,
+ "pic_url": "http://mmbiz.qpic.cn/mmbiz_png/pHhTMtqk90rHY17p2cOXN9uhxMLpugicrGmYpljlNuoMbEjDib1S1nAcib3CC4qHOBqHtlOPYGP6OCuQpL5NDyUUA/0"
+ },
+ {
+ "type": 49,
+ "title": "test_title",
+ "path": "",
+ "appid": "xxxxxxxx",
+ "pic_url": "http://mmbiz.qpic.cn/mmbiz_png/pHhTMtqk90rHY17p2cOXN9uhxMLpugicrGmYpljlNuoMbEjDib1S1nAcib3CC4qHOBqHtlOPYGP6OCuQpL5NDyUUA/0"
+ }
+ ],
+ "buyer_info": [
+ {
+ "openid": "xxxxxxxxxx",
+ "send_status": 1
+ }
+ ],
+ "task_status": 1
+ }
+ ],
+ "total_count": 4
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideGetGuideMassSendJobRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideGetGuideMassSendJobRequest.json
new file mode 100644
index 00000000..9e46f666
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideGetGuideMassSendJobRequest.json
@@ -0,0 +1,3 @@
+{
+ "task_id": 1332414111522783232
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideGetGuideMassSendJobResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideGetGuideMassSendJobResponse.json
new file mode 100644
index 00000000..f39e0c83
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideGetGuideMassSendJobResponse.json
@@ -0,0 +1,37 @@
+{
+ "errcode": 0,
+ "errmsg": "OK",
+ "job": {
+ "task_id": 1332519773019865088,
+ "create_time": 1589016638,
+ "update_time": 1589016638,
+ "push_time": 1589010582,
+ "finish_time": 0,
+ "task_name": "testtask_name111",
+ "task_remark": "testtask_remark111",
+ "material": [
+ {
+ "type": 1,
+ "word": "testword"
+ },
+ {
+ "type": 3,
+ "pic_url": "http://mmbiz.qpic.cn/mmbiz_png/pHhTMtqk90rHY17p2cOXN9uhxMLpugicrGmYpljlNuoMbEjDib1S1nAcib3CC4qHOBqHtlOPYGP6OCuQpL5NDyUUA/0"
+ },
+ {
+ "type": 49,
+ "title": "test_title",
+ "path": "",
+ "appid": "xxxxxxxx",
+ "pic_url": "http://mmbiz.qpic.cn/mmbiz_png/pHhTMtqk90rHY17p2cOXN9uhxMLpugicrGmYpljlNuoMbEjDib1S1nAcib3CC4qHOBqHtlOPYGP6OCuQpL5NDyUUA/0"
+ }
+ ],
+ "buyer_info": [
+ {
+ "openid": "xxxxxxxxxx",
+ "send_status": 1
+ }
+ ],
+ "task_status": 1
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideUpdateGuideMassSendJobRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideUpdateGuideMassSendJobRequest.json
new file mode 100644
index 00000000..fc645b33
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideUpdateGuideMassSendJobRequest.json
@@ -0,0 +1,26 @@
+{
+ "task_id": 1332414111522783232,
+ "task_name": "testtask_name111",
+ "task_remark": "testtask_remark111",
+ "push_time": 1589010582,
+ "openid": [
+ "yyyyyyyy"
+ ],
+ "material": [
+ {
+ "type": 1,
+ "word": "testword"
+ },
+ {
+ "type": 3,
+ "media_id": "xxxxxxxxxxxxxx"
+ },
+ {
+ "type": 49,
+ "media_id": "xxxxxxxxxxxxxx",
+ "title": "test_title",
+ "path": "page/index/index",
+ "appid": "wxzzzzzzzzzzzz"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideUpdateGuideMassSendJobResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideUpdateGuideMassSendJobResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/MassSendJob/CgibinGuideUpdateGuideMassSendJobResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideCardMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideCardMaterialRequest.json
new file mode 100644
index 00000000..db9e4009
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideCardMaterialRequest.json
@@ -0,0 +1,6 @@
+{
+ "type": 0,
+ "title": "xxxxx",
+ "path": "xxxxxxxx",
+ "appid": "xxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideCardMaterialResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideCardMaterialResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideCardMaterialResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideImageMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideImageMaterialRequest.json
new file mode 100644
index 00000000..14bceda8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideImageMaterialRequest.json
@@ -0,0 +1,4 @@
+{
+ "type": 0,
+ "picurl": "xxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideImageMaterialResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideImageMaterialResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideImageMaterialResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideWordMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideWordMaterialRequest.json
new file mode 100644
index 00000000..a1447fdc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideWordMaterialRequest.json
@@ -0,0 +1,4 @@
+{
+ "type": 0,
+ "word": "hello world"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideWordMaterialResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideWordMaterialResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideDeleteGuideWordMaterialResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideCardMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideCardMaterialRequest.json
new file mode 100644
index 00000000..686a2427
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideCardMaterialRequest.json
@@ -0,0 +1,3 @@
+{
+ "type": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideCardMaterialResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideCardMaterialResponse.json
new file mode 100644
index 00000000..23aa71ba
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideCardMaterialResponse.json
@@ -0,0 +1,14 @@
+{
+ "errcode": 0,
+ "errmsg": "",
+ "card_list": [
+ {
+ "title": "title",
+ "appid": "xxxxxx",
+ "path": "path111111",
+ "picurl": "xxxxxxx",
+ "master_id": 0,
+ "slave_id": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideImageMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideImageMaterialRequest.json
new file mode 100644
index 00000000..d956788b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideImageMaterialRequest.json
@@ -0,0 +1,5 @@
+{
+ "type": 0,
+ "start": 0,
+ "num": 10
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideImageMaterialResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideImageMaterialResponse.json
new file mode 100644
index 00000000..7983464c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideImageMaterialResponse.json
@@ -0,0 +1,10 @@
+{
+ "errcode": 0,
+ "errmsg": "",
+ "model_list": [
+ {
+ "picurl": "xxxxxx"
+ }
+ ],
+ "total_num": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideWordMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideWordMaterialRequest.json
new file mode 100644
index 00000000..d956788b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideWordMaterialRequest.json
@@ -0,0 +1,5 @@
+{
+ "type": 0,
+ "start": 0,
+ "num": 10
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideWordMaterialResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideWordMaterialResponse.json
new file mode 100644
index 00000000..2e737f6b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideGetGuideWordMaterialResponse.json
@@ -0,0 +1,11 @@
+{
+ "errcode": 0,
+ "errmsg": "",
+ "word_list": [
+ {
+ "word": "hello world!",
+ "create_time": 1574653070
+ }
+ ],
+ "total_num": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideCardMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideCardMaterialRequest.json
new file mode 100644
index 00000000..6252f7dd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideCardMaterialRequest.json
@@ -0,0 +1,7 @@
+{
+ "type": 0,
+ "media_id": "xxxxxxxx",
+ "title": "xxxxx",
+ "path": "xxxxxxxx",
+ "appid": "xxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideCardMaterialResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideCardMaterialResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideCardMaterialResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideImageMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideImageMaterialRequest.json
new file mode 100644
index 00000000..192400a0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideImageMaterialRequest.json
@@ -0,0 +1,4 @@
+{
+ "type": 0,
+ "media_id": "xxxxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideImageMaterialResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideImageMaterialResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideImageMaterialResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideWordMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideWordMaterialRequest.json
new file mode 100644
index 00000000..a1447fdc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideWordMaterialRequest.json
@@ -0,0 +1,4 @@
+{
+ "type": 0,
+ "word": "hello world"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideWordMaterialResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideWordMaterialResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Material/CgibinGuideSetGuideWordMaterialResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Qrcode/CgibinGuideCreateQrcodeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Qrcode/CgibinGuideCreateQrcodeRequest.json
new file mode 100644
index 00000000..54baa827
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Qrcode/CgibinGuideCreateQrcodeRequest.json
@@ -0,0 +1,3 @@
+{
+ "guide_account": "wx_account"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Qrcode/CgibinGuideCreateQrcodeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Qrcode/CgibinGuideCreateQrcodeResponse.json
new file mode 100644
index 00000000..a648bdb3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Qrcode/CgibinGuideCreateQrcodeResponse.json
@@ -0,0 +1,5 @@
+{
+ "qrcode_url": "xxxxxxx",
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideBuyerDisplayTagRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideBuyerDisplayTagRequest.json
new file mode 100644
index 00000000..c8a6cfdc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideBuyerDisplayTagRequest.json
@@ -0,0 +1,5 @@
+{
+ "guide_account": "wx_account",
+ "openid": "xxxxxxx",
+ "display_tag_list": [ "test1", "test2" ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideBuyerDisplayTagResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideBuyerDisplayTagResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideBuyerDisplayTagResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideBuyerTagRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideBuyerTagRequest.json
new file mode 100644
index 00000000..c1b5a7c7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideBuyerTagRequest.json
@@ -0,0 +1,9 @@
+{
+ "guide_account": "wx_account",
+ "openid": "xxxxxxx",
+ "openid_list": [
+ "xxxxxxx",
+ "yyyyyyyy"
+ ],
+ "tag_value": "tag1"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideBuyerTagResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideBuyerTagResponse.json
new file mode 100644
index 00000000..2080ee1e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideBuyerTagResponse.json
@@ -0,0 +1,16 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "buyer_resp": [
+ {
+ "errcode": 0,
+ "errmsg": "ok",
+ "openid": "xxxxxxx"
+ },
+ {
+ "errcode": 0,
+ "errmsg": "ok",
+ "openid": "yyyyyyyy"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideTagOptionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideTagOptionRequest.json
new file mode 100644
index 00000000..c0c2f989
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideTagOptionRequest.json
@@ -0,0 +1,4 @@
+{
+ "tag_name": "xxxxxxx",
+ "tag_values": [ "标签1", "标签2" ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideTagOptionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideTagOptionResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideAddGuideTagOptionResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideDeleteGuideBuyerTagRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideDeleteGuideBuyerTagRequest.json
new file mode 100644
index 00000000..c1b5a7c7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideDeleteGuideBuyerTagRequest.json
@@ -0,0 +1,9 @@
+{
+ "guide_account": "wx_account",
+ "openid": "xxxxxxx",
+ "openid_list": [
+ "xxxxxxx",
+ "yyyyyyyy"
+ ],
+ "tag_value": "tag1"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideDeleteGuideBuyerTagResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideDeleteGuideBuyerTagResponse.json
new file mode 100644
index 00000000..2080ee1e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideDeleteGuideBuyerTagResponse.json
@@ -0,0 +1,16 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "buyer_resp": [
+ {
+ "errcode": 0,
+ "errmsg": "ok",
+ "openid": "xxxxxxx"
+ },
+ {
+ "errcode": 0,
+ "errmsg": "ok",
+ "openid": "yyyyyyyy"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideDeleteGuideTagOptionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideDeleteGuideTagOptionRequest.json
new file mode 100644
index 00000000..3a492909
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideDeleteGuideTagOptionRequest.json
@@ -0,0 +1,3 @@
+{
+ "tag_name": "xxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideDeleteGuideTagOptionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideDeleteGuideTagOptionResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideDeleteGuideTagOptionResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideBuyerDisplayTagRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideBuyerDisplayTagRequest.json
new file mode 100644
index 00000000..97bc8cb5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideBuyerDisplayTagRequest.json
@@ -0,0 +1,4 @@
+{
+ "guide_account": "张三",
+ "openid": "xxxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideBuyerDisplayTagResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideBuyerDisplayTagResponse.json
new file mode 100644
index 00000000..9140f4ca
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideBuyerDisplayTagResponse.json
@@ -0,0 +1,5 @@
+{
+ "display_tag_list": [ "test1", "test2" ],
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideBuyerTagRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideBuyerTagRequest.json
new file mode 100644
index 00000000..85296ddf
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideBuyerTagRequest.json
@@ -0,0 +1,4 @@
+{
+ "guide_account": "wx_account",
+ "openid": "xxxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideBuyerTagResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideBuyerTagResponse.json
new file mode 100644
index 00000000..a8a3a91d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideBuyerTagResponse.json
@@ -0,0 +1,5 @@
+{
+ "tag_values": [ "tag1_1", "tag2_1" ],
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideTagOptionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideTagOptionRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideTagOptionRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideTagOptionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideTagOptionResponse.json
new file mode 100644
index 00000000..5723b86e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideGetGuideTagOptionResponse.json
@@ -0,0 +1,22 @@
+{
+ "options": [
+ {
+ "tag_name": "tag4",
+ "tag_values": [ "标签4" ]
+ },
+ {
+ "tag_name": "tag3",
+ "tag_values": [ "标签33", "标签22" ]
+ },
+ {
+ "tag_name": "tag2",
+ "tag_values": [ "标签1", "标签2" ]
+ },
+ {
+ "tag_name": "tag1",
+ "tag_values": [ "标签66" ]
+ }
+ ],
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideNewGuideTagOptionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideNewGuideTagOptionRequest.json
new file mode 100644
index 00000000..c0c2f989
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideNewGuideTagOptionRequest.json
@@ -0,0 +1,4 @@
+{
+ "tag_name": "xxxxxxx",
+ "tag_values": [ "标签1", "标签2" ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideNewGuideTagOptionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideNewGuideTagOptionResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideNewGuideTagOptionResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideQueryGuideBuyerByTagRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideQueryGuideBuyerByTagRequest.json
new file mode 100644
index 00000000..424842cd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideQueryGuideBuyerByTagRequest.json
@@ -0,0 +1,5 @@
+{
+ "guide_account": "xxxxxxx",
+ "push_count": 0,
+ "tag_values": [ "tag1_1", "tag2_1" ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideQueryGuideBuyerByTagResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideQueryGuideBuyerByTagResponse.json
new file mode 100644
index 00000000..04e71b54
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinGuide/Tag/CgibinGuideQueryGuideBuyerByTagResponse.json
@@ -0,0 +1,5 @@
+{
+ "openid_list": [ "xxx1", "xxx2" ],
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialAddMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialAddMaterialRequest.json
new file mode 100644
index 00000000..374a30e5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialAddMaterialRequest.json
@@ -0,0 +1,4 @@
+{
+ "title": "VIDEO_TITLE",
+ "introduction": "INTRODUCTION"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialAddMaterialResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialAddMaterialResponse.json
new file mode 100644
index 00000000..fb96980e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialAddMaterialResponse.json
@@ -0,0 +1,4 @@
+{
+ "media_id": "MEDIA_ID",
+ "url": "URL"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialAddNewsRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialAddNewsRequest.json
new file mode 100644
index 00000000..16ad0537
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialAddNewsRequest.json
@@ -0,0 +1,15 @@
+{
+ "articles": [
+ {
+ "title": "TITLE",
+ "thumb_media_id": "THUMB_MEDIA_ID",
+ "author": "AUTHOR",
+ "digest": "DIGEST",
+ "show_cover_pic": 1,
+ "content": "CONTENT",
+ "content_source_url": "CONTENT_SOURCE_URL",
+ "need_open_comment": 1,
+ "only_fans_can_comment": 1
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialAddNewsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialAddNewsResponse.json
new file mode 100644
index 00000000..eac4910f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialAddNewsResponse.json
@@ -0,0 +1,3 @@
+{
+ "media_id": "MEDIA_ID"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialBatchGetMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialBatchGetMaterialRequest.json
new file mode 100644
index 00000000..787f3e1d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialBatchGetMaterialRequest.json
@@ -0,0 +1,5 @@
+{
+ "type": "TYPE",
+ "offset": 0,
+ "count": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialBatchGetMaterialResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialBatchGetMaterialResponse.json
new file mode 100644
index 00000000..c286943b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialBatchGetMaterialResponse.json
@@ -0,0 +1,32 @@
+{
+ "total_count": 1,
+ "item_count": 1,
+ "item": [
+ {
+ "media_id": "MEDIA_ID",
+ "content": {
+ "news_item": [
+ {
+ "title": "TITLE",
+ "thumb_media_id": "THUMB_MEDIA_ID",
+ "show_cover_pic": 1,
+ "author": "AUTHOR",
+ "digest": "DIGEST",
+ "content": "CONTENT",
+ "url": "URL",
+ "content_source_url": "CONTETN_SOURCE_URL"
+ }
+ ],
+ "update_time": 123456,
+ "create_time": 123456
+ },
+ "update_time": 123456
+ },
+ {
+ "media_id": "MEDIA_ID",
+ "name": "NAME",
+ "url": "URL",
+ "update_time": 123456
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialDeleteMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialDeleteMaterialRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialDeleteMaterialRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialDeleteMaterialResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialDeleteMaterialResponse.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialDeleteMaterialResponse.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialAsNewsRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialAsNewsRequest.json
new file mode 100644
index 00000000..eac4910f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialAsNewsRequest.json
@@ -0,0 +1,3 @@
+{
+ "media_id": "MEDIA_ID"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialAsNewsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialAsNewsResponse.json
new file mode 100644
index 00000000..c533244a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialAsNewsResponse.json
@@ -0,0 +1,13 @@
+{
+ "news_item": [
+ {
+ "title": "TITLE",
+ "thumb_media_id": "THUMB_MEDIA_ID",
+ "author": "AUTHOR",
+ "digest": "DIGEST",
+ "show_cover_pic": 1,
+ "url": "URL",
+ "content_source_url": "CONTENT_SOURCE_URL"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialAsVideoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialAsVideoRequest.json
new file mode 100644
index 00000000..eac4910f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialAsVideoRequest.json
@@ -0,0 +1,3 @@
+{
+ "media_id": "MEDIA_ID"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialAsVideoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialAsVideoResponse.json
new file mode 100644
index 00000000..bcb7fb0c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialAsVideoResponse.json
@@ -0,0 +1,5 @@
+{
+ "title": "TITLE",
+ "description": "DESCRIPTION",
+ "down_url": "DOWN_URL"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialCountRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialCountRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialCountRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialCountResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialCountResponse.json
new file mode 100644
index 00000000..a25f7380
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialCountResponse.json
@@ -0,0 +1,6 @@
+{
+ "voice_count": 0,
+ "video_count": 0,
+ "image_count": 0,
+ "news_count": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialRequest.json
new file mode 100644
index 00000000..eac4910f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialRequest.json
@@ -0,0 +1,3 @@
+{
+ "media_id": "MEDIA_ID"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialResponse.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialGetMaterialResponse.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialUpdateNewsRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialUpdateNewsRequest.json
new file mode 100644
index 00000000..28d71cfc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialUpdateNewsRequest.json
@@ -0,0 +1,13 @@
+{
+ "media_id": "MEDIA_ID",
+ "index": 0,
+ "articles": {
+ "title": "TITLE",
+ "thumb_media_id": "THUMB_MEDIA_ID",
+ "author": "AUTHOR",
+ "digest": "DIGEST",
+ "show_cover_pic": 1,
+ "content": "CONTENT",
+ "content_source_url": "CONTENT_SOURCE_URL"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialUpdateNewsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialUpdateNewsResponse.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMaterial/CgibinMaterialUpdateNewsResponse.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaGetRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaGetRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaGetResponse.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaGetResponse.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadImageRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadImageRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadImageRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadImageResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadImageResponse.json
new file mode 100644
index 00000000..d345dd57
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadImageResponse.json
@@ -0,0 +1,3 @@
+{
+ "url": "http://mmbiz.qpic.cn/mmbiz/gLO17UPS6FS2xsypf378iaNhWacZ1G1UplZYWEYfwvuU6Ont96b1roYs CNFwaRrSaKTPCUdBK9DgEHicsKwWCBRQ/0"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadNewsRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadNewsRequest.json
new file mode 100644
index 00000000..247f4f86
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadNewsRequest.json
@@ -0,0 +1,26 @@
+{
+ "articles": [
+ {
+ "thumb_media_id": "qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",
+ "author": "xxx",
+ "title": "Happy Day",
+ "content_source_url": "www.qq.com",
+ "content": "content",
+ "digest": "digest",
+ "show_cover_pic": 1,
+ "need_open_comment": 1,
+ "only_fans_can_comment": 1
+ },
+ {
+ "thumb_media_id": "qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",
+ "author": "xxx",
+ "title": "Happy Day",
+ "content_source_url": "www.qq.com",
+ "content": "content",
+ "digest": "digest",
+ "show_cover_pic": 0,
+ "need_open_comment": 1,
+ "only_fans_can_comment": 1
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadNewsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadNewsResponse.json
new file mode 100644
index 00000000..850449d4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadNewsResponse.json
@@ -0,0 +1,5 @@
+{
+ "type": "news",
+ "media_id": "CsEf3ldqkAYJAU6EJeIkStVDSvffUJ54vqbThMgplD-VJXXof6ctX5fI6-aYyUiQ",
+ "created_at": 1391857799
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadResponse.json
new file mode 100644
index 00000000..3a4ab9ea
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadResponse.json
@@ -0,0 +1,5 @@
+{
+ "type": "TYPE",
+ "media_id": "MEDIA_ID",
+ "created_at": 123456789
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadVideoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadVideoRequest.json
new file mode 100644
index 00000000..dda520c9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadVideoRequest.json
@@ -0,0 +1,5 @@
+{
+ "media_id": "rF4UdIMfYK3efUfyoddYRMU50zMiRmmt_l0kszupYh_SzrcW5Gaheq05p_lHuOTQ",
+ "title": "TITLE",
+ "description": "Description"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadVideoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadVideoResponse.json
new file mode 100644
index 00000000..720a64d0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/CgibinMediaUploadVideoResponse.json
@@ -0,0 +1,5 @@
+{
+ "type": "video",
+ "media_id": "IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",
+ "created_at": 1398848981
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceAddVoiceToRecognitionForTextRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceAddVoiceToRecognitionForTextRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceAddVoiceToRecognitionForTextRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceAddVoiceToRecognitionForTextResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceAddVoiceToRecognitionForTextResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceAddVoiceToRecognitionForTextResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceQueryRecognitionResultForTextRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceQueryRecognitionResultForTextRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceQueryRecognitionResultForTextRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceQueryRecognitionResultForTextResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceQueryRecognitionResultForTextResponse.json
new file mode 100644
index 00000000..752b3d5e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceQueryRecognitionResultForTextResponse.json
@@ -0,0 +1,3 @@
+{
+ "result": "xxxxxxxxxxxxxxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceTranslateContentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceTranslateContentRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceTranslateContentRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceTranslateContentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceTranslateContentResponse.json
new file mode 100644
index 00000000..47762a1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMedia/Voice/CgibinMediaVoiceTranslateContentResponse.json
@@ -0,0 +1,4 @@
+{
+ "from_content": "xxxxxxxx",
+ "to_content": "xxxxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinGetCurrentSelfMenuInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinGetCurrentSelfMenuInfoRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinGetCurrentSelfMenuInfoRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinGetCurrentSelfMenuInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinGetCurrentSelfMenuInfoResponse.json
new file mode 100644
index 00000000..4bb8001f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinGetCurrentSelfMenuInfoResponse.json
@@ -0,0 +1,93 @@
+{
+ "is_menu_open": 1,
+ "selfmenu_info": {
+ "button": [
+ {
+ "name": "button",
+ "sub_button": {
+ "list": [
+ {
+ "type": "view",
+ "name": "view_url",
+ "url": "http://www.qq.com"
+ },
+ {
+ "type": "news",
+ "name": "news",
+ "value": "KQb_w_Tiz-nSdVLoTV35Psmty8hGBulGhEdbb9SKs-o",
+ "news_info": {
+ "list": [
+ {
+ "title": "MULTI_NEWS",
+ "author": "JIMZHENG",
+ "digest": "text",
+ "show_cover": 0,
+ "cover_url": "http://mmbiz.qpic.cn/mmbiz/GE7et87vE9vicuCibqXsX9GPPLuEtBfXfK0HKuBIa1A1cypS0uY1wickv70iaY1gf3I1DTszuJoS3lAVLvhTcm9sDA/0",
+ "content_url": "http://mp.weixin.qq.com/s?__biz=MjM5ODUwNTM3Ng==&mid=204013432&idx=1&sn=80ce6d9abcb832237bf86c87e50fda15#rd",
+ "source_url": ""
+ },
+ {
+ "title": "MULTI_NEWS1",
+ "author": "JIMZHENG",
+ "digest": "MULTI_NEWS1",
+ "show_cover": 1,
+ "cover_url": "http://mmbiz.qpic.cn/mmbiz/GE7et87vE9vicuCibqXsX9GPPLuEtBfXfKnmnpXYgWmQD5gXUrEApIYBCgvh2yHsu3ic3anDUGtUCHwjiaEC5bicd7A/0",
+ "content_url": "http://mp.weixin.qq.com/s?__biz=MjM5ODUwNTM3Ng==&mid=204013432&idx=2&sn=8226843afb14ecdecb08d9ce46bc1d37#rd",
+ "source_url": ""
+ }
+ ]
+ }
+ },
+ {
+ "type": "video",
+ "name": "video",
+ "value": "http://61.182.130.30/vweixinp.tc.qq.com/1007_114bcede9a2244eeb5ab7f76d951df5f.f10.mp4?vkey=77A42D0C2015FBB0A3653D29C571B5F4BBF1D243FBEF17F09C24FF1F2F22E30881BD350E360BC53F&sha=0&save=1"
+ },
+ {
+ "type": "voice",
+ "name": "voice",
+ "value": "nTXe3aghlQ4XYHa0AQPWiQQbFW9RVtaYTLPC1PCQx11qc9UB6CiUPFjdkeEtJicn"
+ }
+ ]
+ }
+ },
+ {
+ "type": "text",
+ "name": "text",
+ "value": "This is text!"
+ },
+ {
+ "type": "img",
+ "name": "photo",
+ "value": "ax5Whs5dsoomJLEppAvftBUuH7CgXCZGFbFJifmbUjnQk_ierMHY99Y5d2Cv14RD"
+ },
+ {
+ "type": "click",
+ "name": "今日歌曲",
+ "key": "V1001_TODAY_MUSIC"
+ },
+ {
+ "name": "菜单",
+ "sub_button": {
+ "list": [
+ {
+ "type": "view",
+ "name": "搜索",
+ "url": "http://www.soso.com/"
+ },
+ {
+ "type": "view",
+ "name": "视频",
+ "url": "http://v.qq.com/"
+ },
+ {
+ "type": "click",
+ "name": "赞一下我们",
+ "key": "V1001_GOOD"
+ }
+ ]
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuCreateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuCreateRequest.json
new file mode 100644
index 00000000..6d7efc77
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuCreateRequest.json
@@ -0,0 +1,81 @@
+{
+ "button": [
+ {
+ "name": "扫码",
+ "sub_button": [
+ {
+ "type": "scancode_waitmsg",
+ "name": "扫码带提示",
+ "key": "rselfmenu_0_0",
+ "sub_button": []
+ },
+ {
+ "type": "scancode_push",
+ "name": "扫码推事件",
+ "key": "rselfmenu_0_1",
+ "sub_button": []
+ }
+ ]
+ },
+ {
+ "name": "菜单",
+ "sub_button": [
+ {
+ "type": "view",
+ "name": "搜索",
+ "url": "http://www.soso.com/"
+ },
+ {
+ "type": "miniprogram",
+ "name": "wxa",
+ "url": "http://mp.weixin.qq.com",
+ "appid": "wx286b93c14bbf93aa",
+ "pagepath": "pages/lunar/index"
+ },
+ {
+ "type": "click",
+ "name": "赞一下我们",
+ "key": "V1001_GOOD"
+ }
+ ]
+ },
+ {
+ "name": "发图",
+ "sub_button": [
+ {
+ "type": "pic_sysphoto",
+ "name": "系统拍照发图",
+ "key": "rselfmenu_1_0",
+ "sub_button": []
+ },
+ {
+ "type": "pic_photo_or_album",
+ "name": "拍照或者相册发图",
+ "key": "rselfmenu_1_1",
+ "sub_button": []
+ },
+ {
+ "type": "pic_weixin",
+ "name": "微信相册发图",
+ "key": "rselfmenu_1_2",
+ "sub_button": []
+ }
+ ]
+ },
+ {
+ "name": "发送位置",
+ "type": "location_select",
+ "key": "rselfmenu_2_0"
+ },
+ {
+ "type": "media_id",
+ "name": "图片",
+ "media_id": "MEDIA_ID1"
+ },
+ {
+ "type": "view_limited",
+ "name": "图文消息",
+ "media_id": "MEDIA_ID2"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuCreateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuCreateResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuCreateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuDeleteRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuDeleteRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuDeleteResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuDeleteResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuGetRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuGetRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuGetResponse.json
new file mode 100644
index 00000000..5b16bed4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/CgibinMenuGetResponse.json
@@ -0,0 +1,57 @@
+{
+ "menu": {
+ "button": [
+ {
+ "type": "click",
+ "name": "今日歌曲",
+ "key": "V1001_TODAY_MUSIC",
+ "sub_button": []
+ }
+ ],
+ "menuid": 208396938
+ },
+ "conditionalmenu": [
+ {
+ "button": [
+ {
+ "type": "click",
+ "name": "今日歌曲",
+ "key": "V1001_TODAY_MUSIC",
+ "sub_button": []
+ },
+ {
+ "name": "菜单",
+ "sub_button": [
+ {
+ "type": "view",
+ "name": "搜索",
+ "url": "http://www.soso.com/",
+ "sub_button": []
+ },
+ {
+ "type": "view",
+ "name": "视频",
+ "url": "http://v.qq.com/",
+ "sub_button": []
+ },
+ {
+ "type": "click",
+ "name": "赞一下我们",
+ "key": "V1001_GOOD",
+ "sub_button": []
+ }
+ ]
+ }
+ ],
+ "matchrule": {
+ "group_id": 2,
+ "sex": 1,
+ "country": "中国",
+ "province": "广东",
+ "city": "广州",
+ "client_platform_type": 2
+ },
+ "menuid": 208396993
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuAddConditionalRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuAddConditionalRequest.json
new file mode 100644
index 00000000..6a03ce74
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuAddConditionalRequest.json
@@ -0,0 +1,40 @@
+{
+ "button": [
+ {
+ "type": "click",
+ "name": "今日歌曲",
+ "key": "V1001_TODAY_MUSIC"
+ },
+ {
+ "name": "菜单",
+ "sub_button": [
+ {
+ "type": "view",
+ "name": "搜索",
+ "url": "http://www.soso.com/"
+ },
+ {
+ "type": "miniprogram",
+ "name": "wxa",
+ "url": "http://mp.weixin.qq.com",
+ "appid": "wx286b93c14bbf93aa",
+ "pagepath": "pages/lunar/index"
+ },
+ {
+ "type": "click",
+ "name": "赞一下我们",
+ "key": "V1001_GOOD"
+ }
+ ]
+ }
+ ],
+ "matchrule": {
+ "tag_id": "2",
+ "sex": "1",
+ "country": "中国",
+ "province": "广东",
+ "city": "广州",
+ "client_platform_type": "2",
+ "language": "zh_CN"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuAddConditionalResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuAddConditionalResponse.json
new file mode 100644
index 00000000..f59ece06
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuAddConditionalResponse.json
@@ -0,0 +1,3 @@
+{
+ "menuid": "208379533"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuDeleteConditionalRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuDeleteConditionalRequest.json
new file mode 100644
index 00000000..f59ece06
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuDeleteConditionalRequest.json
@@ -0,0 +1,3 @@
+{
+ "menuid": "208379533"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuDeleteConditionalResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuDeleteConditionalResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuDeleteConditionalResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuTryMatchRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuTryMatchRequest.json
new file mode 100644
index 00000000..54cb1671
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuTryMatchRequest.json
@@ -0,0 +1,3 @@
+{
+ "user_id": "weixin"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuTryMatchResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuTryMatchResponse.json
new file mode 100644
index 00000000..532d4554
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMenu/Conditional/CgibinMenuTryMatchResponse.json
@@ -0,0 +1,22 @@
+{
+ "button": [
+ {
+ "type": "view",
+ "name": "tx",
+ "url": "http://www.qq.com/",
+ "sub_button": []
+ },
+ {
+ "type": "view",
+ "name": "tx",
+ "url": "http://www.qq.com/",
+ "sub_button": []
+ },
+ {
+ "type": "view",
+ "name": "tx",
+ "url": "http://www.qq.com/",
+ "sub_button": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/CgibinMessageCustomSendRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/CgibinMessageCustomSendRequest.json
new file mode 100644
index 00000000..63e7b6ff
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/CgibinMessageCustomSendRequest.json
@@ -0,0 +1,65 @@
+{
+ "touser": "OPENID",
+ "msgtype": "type",
+ "text": {
+ "content": "Hello World"
+ },
+ "image": {
+ "media_id": "MEDIA_ID"
+ },
+ "voice": {
+ "media_id": "MEDIA_ID"
+ },
+ "video": {
+ "media_id": "MEDIA_ID",
+ "thumb_media_id": "MEDIA_ID",
+ "title": "TITLE",
+ "description": "DESCRIPTION"
+ },
+ "music": {
+ "title": "MUSIC_TITLE",
+ "description": "MUSIC_DESCRIPTION",
+ "musicurl": "MUSIC_URL",
+ "hqmusicurl": "HQ_MUSIC_URL",
+ "thumb_media_id": "THUMB_MEDIA_ID"
+ },
+ "news": {
+ "articles": [
+ {
+ "title": "Happy Day",
+ "description": "Is Really A Happy Day",
+ "url": "URL",
+ "picurl": "PIC_URL"
+ }
+ ]
+ },
+ "mpnews": {
+ "media_id": "MEDIA_ID"
+ },
+ "msgmenu": {
+ "head_content": "您对本次服务是否满意呢? ",
+ "list": [
+ {
+ "id": "101",
+ "content": "满意"
+ },
+ {
+ "id": "102",
+ "content": "不满意"
+ }
+ ],
+ "tail_content": "欢迎再次光临"
+ },
+ "wxcard": {
+ "card_id": "123dsdajkasd231jhksad"
+ },
+ "miniprogrampage": {
+ "title": "title",
+ "appid": "appid",
+ "pagepath": "pagepath",
+ "thumb_media_id": "thumb_media_id"
+ },
+ "customservice": {
+ "kf_account": "test1@kftest"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/CgibinMessageCustomSendResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/CgibinMessageCustomSendResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/CgibinMessageCustomSendResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/CgibinMessageCustomTypingRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/CgibinMessageCustomTypingRequest.json
new file mode 100644
index 00000000..1c923bb4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/CgibinMessageCustomTypingRequest.json
@@ -0,0 +1,4 @@
+{
+ "touser": "OPENID",
+ "command": "Typing"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/CgibinMessageCustomTypingResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/CgibinMessageCustomTypingResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageCustom/CgibinMessageCustomTypingResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassDeleteRequest.json
new file mode 100644
index 00000000..6d6d2b2c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassDeleteRequest.json
@@ -0,0 +1,4 @@
+{
+ "msg_id": "201053012",
+ "article_idx": 2
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassDeleteResponse.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassDeleteResponse.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassGetRequest.json
new file mode 100644
index 00000000..a63d8c6c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassGetRequest.json
@@ -0,0 +1,3 @@
+{
+ "msg_id": "201053012"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassGetResponse.json
new file mode 100644
index 00000000..e22863e7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassGetResponse.json
@@ -0,0 +1,4 @@
+{
+ "msg_id": 201053012,
+ "msg_status": "SEND_SUCCESS"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassPreviewRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassPreviewRequest.json
new file mode 100644
index 00000000..7c2bbb91
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassPreviewRequest.json
@@ -0,0 +1,24 @@
+{
+ "touser": "OPENID",
+ "towxname": "示例的微信号",
+ "msgtype": "mpnews",
+ "text": {
+ "content": "CONTENT"
+ },
+ "image": {
+ "media_id": "123dsdajkasd231jhksad"
+ },
+ "mpnews": {
+ "media_id": "123dsdajkasd231jhksad"
+ },
+ "voice": {
+ "media_id": "123dsdajkasd231jhksad"
+ },
+ "mpvideo": {
+ "media_id": "IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc"
+ },
+ "wxcard": {
+ "card_id": "123dsdajkasd231jhksad",
+ "card_ext": "{\"code\":\"\",\"openid\":\"\",\"timestamp\":\"1402057159\",\"signature\":\"017bb17407c8e0058a66d72dcc61632b70f511ad\"}"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassPreviewResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassPreviewResponse.json
new file mode 100644
index 00000000..c3fce898
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassPreviewResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "preview success"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassSendAllRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassSendAllRequest.json
new file mode 100644
index 00000000..eb455eb3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassSendAllRequest.json
@@ -0,0 +1,35 @@
+{
+ "filter": {
+ "is_to_all": false,
+ "tag_id": 2
+ },
+ "msgtype": "mpnews",
+ "text": {
+ "content": "CONTENT"
+ },
+ "images": {
+ "media_ids": [
+ "aaa",
+ "bbb",
+ "ccc"
+ ],
+ "recommend": "xxx",
+ "need_open_comment": 1,
+ "only_fans_can_comment": 0
+ },
+ "mpnews": {
+ "media_id": "123dsdajkasd231jhksad"
+ },
+ "voice": {
+ "media_id": "123dsdajkasd231jhksad"
+ },
+ "mpvideo": {
+ "media_id": "IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",
+ "title": "TITLE",
+ "description": "DESCRIPTION"
+ },
+ "wxcard": {
+ "card_id": "123dsdajkasd231jhksad",
+ "card_ext": "{\"code\":\"\",\"openid\":\"\",\"timestamp\":\"1402057159\",\"signature\":\"017bb17407c8e0058a66d72dcc61632b70f511ad\"}"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassSendAllResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassSendAllResponse.json
new file mode 100644
index 00000000..30879476
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassSendAllResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "preview success",
+ "msg_id": 34182,
+ "msg_data_id": 206227730
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassSendRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassSendRequest.json
new file mode 100644
index 00000000..5104da86
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassSendRequest.json
@@ -0,0 +1,35 @@
+{
+ "touser": [
+ "OPENID1",
+ "OPENID2"
+ ],
+ "msgtype": "mpnews",
+ "text": {
+ "content": "CONTENT"
+ },
+ "images": {
+ "media_ids": [
+ "aaa",
+ "bbb",
+ "ccc"
+ ],
+ "recommend": "xxx",
+ "need_open_comment": 1,
+ "only_fans_can_comment": 0
+ },
+ "mpnews": {
+ "media_id": "123dsdajkasd231jhksad"
+ },
+ "voice": {
+ "media_id": "123dsdajkasd231jhksad"
+ },
+ "mpvideo": {
+ "media_id": "IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",
+ "title": "TITLE",
+ "description": "DESCRIPTION"
+ },
+ "wxcard": {
+ "card_id": "123dsdajkasd231jhksad",
+ "card_ext": "{\"code\":\"\",\"openid\":\"\",\"timestamp\":\"1402057159\",\"signature\":\"017bb17407c8e0058a66d72dcc61632b70f511ad\"}"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassSendResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassSendResponse.json
new file mode 100644
index 00000000..30879476
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/CgibinMessageMassSendResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "preview success",
+ "msg_id": 34182,
+ "msg_data_id": 206227730
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/Speed/CgibinMessageMassSpeedGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/Speed/CgibinMessageMassSpeedGetRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/Speed/CgibinMessageMassSpeedGetRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/Speed/CgibinMessageMassSpeedGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/Speed/CgibinMessageMassSpeedGetResponse.json
new file mode 100644
index 00000000..b668569a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/Speed/CgibinMessageMassSpeedGetResponse.json
@@ -0,0 +1,4 @@
+{
+ "speed": 3,
+ "realspeed": 15
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/Speed/CgibinMessageMassSpeedSetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/Speed/CgibinMessageMassSpeedSetRequest.json
new file mode 100644
index 00000000..d49a1756
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/Speed/CgibinMessageMassSpeedSetRequest.json
@@ -0,0 +1,3 @@
+{
+ "speed": 3
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/Speed/CgibinMessageMassSpeedSetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/Speed/CgibinMessageMassSpeedSetResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageMass/Speed/CgibinMessageMassSpeedSetResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageSubscribe/CgibinMessageSubscribeBusinessSendRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageSubscribe/CgibinMessageSubscribeBusinessSendRequest.json
new file mode 100644
index 00000000..556edd08
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageSubscribe/CgibinMessageSubscribeBusinessSendRequest.json
@@ -0,0 +1,20 @@
+{
+ "touser": "OPENID",
+ "template_id": "TEMPLATEID",
+ "page": "mp.weixin.qq.com",
+ "miniprogram": {
+ "appid": "APPID",
+ "pagepath": "index?foo=bar"
+ },
+ "data": {
+ "name1": {
+ "value": "广州腾讯科技有限公司"
+ },
+ "thing8": {
+ "value": "广州腾讯科技有限公司"
+ },
+ "time7": {
+ "value": "2019年8月8日"
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageSubscribe/CgibinMessageSubscribeBusinessSendResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageSubscribe/CgibinMessageSubscribeBusinessSendResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageSubscribe/CgibinMessageSubscribeBusinessSendResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageTemplate/CgibinMessageTemplateSendRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageTemplate/CgibinMessageTemplateSendRequest.json
new file mode 100644
index 00000000..60bef19d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageTemplate/CgibinMessageTemplateSendRequest.json
@@ -0,0 +1,31 @@
+{
+ "touser": "OPENID",
+ "template_id": "ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
+ "url": "http://weixin.qq.com/download",
+ "miniprogram": {
+ "appid": "xiaochengxuappid12345",
+ "pagepath": "index?foo=bar"
+ },
+ "data": {
+ "first": {
+ "value": "恭喜你购买成功!",
+ "color": "#173177"
+ },
+ "keyword1": {
+ "value": "巧克力",
+ "color": "#173177"
+ },
+ "keyword2": {
+ "value": "39.8元",
+ "color": "#173177"
+ },
+ "keyword3": {
+ "value": "2014年9月22日",
+ "color": "#173177"
+ },
+ "remark": {
+ "value": "欢迎再次购买!",
+ "color": "#173177"
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageTemplate/CgibinMessageTemplateSendResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageTemplate/CgibinMessageTemplateSendResponse.json
new file mode 100644
index 00000000..e518afab
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageTemplate/CgibinMessageTemplateSendResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "msgid": 200228332
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageTemplateSubscribe/CgibinMessageTemplateSubscribeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageTemplateSubscribe/CgibinMessageTemplateSubscribeRequest.json
new file mode 100644
index 00000000..ca7a59b3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageTemplateSubscribe/CgibinMessageTemplateSubscribeRequest.json
@@ -0,0 +1,17 @@
+{
+ "touser": "OPENID",
+ "template_id": "TEMPLATE_ID",
+ "url": "URL",
+ "miniprogram": {
+ "appid": "xiaochengxuappid12345",
+ "pagepath": "index?foo=bar"
+ },
+ "scene": "SCENE",
+ "title": "TITLE",
+ "data": {
+ "content": {
+ "value": "VALUE",
+ "color": "COLOR"
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageTemplateSubscribe/CgibinMessageTemplateSubscribeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageTemplateSubscribe/CgibinMessageTemplateSubscribeResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageTemplateSubscribe/CgibinMessageTemplateSubscribeResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageWxopen/CgibinMessageWxopenActivityIdCreateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageWxopen/CgibinMessageWxopenActivityIdCreateRequest.json
new file mode 100644
index 00000000..26522ec5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageWxopen/CgibinMessageWxopenActivityIdCreateRequest.json
@@ -0,0 +1,4 @@
+{
+ "openid": "OPENID",
+ "unionid": "UNIONID"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageWxopen/CgibinMessageWxopenActivityIdCreateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageWxopen/CgibinMessageWxopenActivityIdCreateResponse.json
new file mode 100644
index 00000000..ff2bff3a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageWxopen/CgibinMessageWxopenActivityIdCreateResponse.json
@@ -0,0 +1,4 @@
+{
+ "activity_id": "ACTIVITYID",
+ "expiration_time": 12345
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageWxopen/CgibinMessageWxopenUpdatableMessageSendRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageWxopen/CgibinMessageWxopenUpdatableMessageSendRequest.json
new file mode 100644
index 00000000..7b120ed7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageWxopen/CgibinMessageWxopenUpdatableMessageSendRequest.json
@@ -0,0 +1,16 @@
+{
+ "activity_id": "966_NGiqxxxxxxxxx...xxxxxxxxE33BlwX",
+ "target_state": 0,
+ "template_info": {
+ "parameter_list": [
+ {
+ "name": "member_count",
+ "value": "2"
+ },
+ {
+ "name": "room_limit",
+ "value": "5"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageWxopen/CgibinMessageWxopenUpdatableMessageSendResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageWxopen/CgibinMessageWxopenUpdatableMessageSendResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMessageWxopen/CgibinMessageWxopenUpdatableMessageSendResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasCancelPayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasCancelPayRequest.json
new file mode 100644
index 00000000..b4facdfd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasCancelPayRequest.json
@@ -0,0 +1,10 @@
+{
+ "openid": "odkx20ENSNa2w5y3g_qOkOvBNM1g",
+ "appid": "wx1234567",
+ "offer_id": "12345678",
+ "ts": 1507530737,
+ "zone_id": "1",
+ "pf": "android",
+ "bill_no": "BillNo_123",
+ "sig": "8bd582a6b06e38a1346fc335ebcb11c8990241bbe23118eb3d22f0ef42870a6a"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasCancelPayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasCancelPayResponse.json
new file mode 100644
index 00000000..3f789f36
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasCancelPayResponse.json
@@ -0,0 +1,3 @@
+{
+ "bill_no": "BillNo_123"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasGetBalanceRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasGetBalanceRequest.json
new file mode 100644
index 00000000..8a6f1d95
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasGetBalanceRequest.json
@@ -0,0 +1,9 @@
+{
+ "openid": "odkx20ENSNa2w5y3g_qOkOvBNM1g",
+ "appid": "wx1234567",
+ "offer_id": "12345678",
+ "ts": 1507530737,
+ "zone_id": "1",
+ "pf": "android",
+ "sig": "d1f0a41272f9b85618361323e1b19cd8cb0213f21b935aeaa39c160892031e97"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasGetBalanceResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasGetBalanceResponse.json
new file mode 100644
index 00000000..cf1ab949
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasGetBalanceResponse.json
@@ -0,0 +1,9 @@
+{
+ "balance": 0,
+ "gen_balance": 0,
+ "first_save": 1,
+ "save_amt": 0,
+ "save_sum": 0,
+ "cost_sum": 0,
+ "present_sum": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasPayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasPayRequest.json
new file mode 100644
index 00000000..af75eb32
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasPayRequest.json
@@ -0,0 +1,11 @@
+{
+ "openid": "odkx20ENSNa2w5y3g_qOkOvBNM1g",
+ "appid": "wx1234567",
+ "offer_id": "12345678",
+ "ts": 1507530737,
+ "zone_id": "1",
+ "pf": "android",
+ "amt": 123,
+ "bill_no": "BillNo_123",
+ "sig": "f705c7351830125282ffc6d3c22c81db19b50a748f60f7c8f267e59152941d83"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasPayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasPayResponse.json
new file mode 100644
index 00000000..78a97b31
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasPayResponse.json
@@ -0,0 +1,5 @@
+{
+ "bill_no": "1578020538",
+ "balance": 0,
+ "used_gen_amt": 10
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasPresentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasPresentRequest.json
new file mode 100644
index 00000000..6214ba03
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasPresentRequest.json
@@ -0,0 +1,11 @@
+{
+ "openid": "odkx20ENSNa2w5y3g_qOkOvBNM1g",
+ "appid": "wx1234567",
+ "offer_id": "12345678",
+ "ts": 1507530737,
+ "zone_id": "1",
+ "pf": "android",
+ "present_counts": 233,
+ "bill_no": "BillNo_123",
+ "sig": "e53e5241bbb014b3a9fcc221d66fecab8734b53fe94d7a8c65180e175e29f443"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasPresentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasPresentResponse.json
new file mode 100644
index 00000000..2efc12fd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/CgibinMidasPresentResponse.json
@@ -0,0 +1,4 @@
+{
+ "bill_no": "BillNo_123",
+ "balance": 200
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxCancelPayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxCancelPayRequest.json
new file mode 100644
index 00000000..b4facdfd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxCancelPayRequest.json
@@ -0,0 +1,10 @@
+{
+ "openid": "odkx20ENSNa2w5y3g_qOkOvBNM1g",
+ "appid": "wx1234567",
+ "offer_id": "12345678",
+ "ts": 1507530737,
+ "zone_id": "1",
+ "pf": "android",
+ "bill_no": "BillNo_123",
+ "sig": "8bd582a6b06e38a1346fc335ebcb11c8990241bbe23118eb3d22f0ef42870a6a"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxCancelPayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxCancelPayResponse.json
new file mode 100644
index 00000000..3f789f36
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxCancelPayResponse.json
@@ -0,0 +1,3 @@
+{
+ "bill_no": "BillNo_123"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxGetBalanceRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxGetBalanceRequest.json
new file mode 100644
index 00000000..8a6f1d95
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxGetBalanceRequest.json
@@ -0,0 +1,9 @@
+{
+ "openid": "odkx20ENSNa2w5y3g_qOkOvBNM1g",
+ "appid": "wx1234567",
+ "offer_id": "12345678",
+ "ts": 1507530737,
+ "zone_id": "1",
+ "pf": "android",
+ "sig": "d1f0a41272f9b85618361323e1b19cd8cb0213f21b935aeaa39c160892031e97"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxGetBalanceResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxGetBalanceResponse.json
new file mode 100644
index 00000000..cf1ab949
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxGetBalanceResponse.json
@@ -0,0 +1,9 @@
+{
+ "balance": 0,
+ "gen_balance": 0,
+ "first_save": 1,
+ "save_amt": 0,
+ "save_sum": 0,
+ "cost_sum": 0,
+ "present_sum": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxPayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxPayRequest.json
new file mode 100644
index 00000000..af75eb32
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxPayRequest.json
@@ -0,0 +1,11 @@
+{
+ "openid": "odkx20ENSNa2w5y3g_qOkOvBNM1g",
+ "appid": "wx1234567",
+ "offer_id": "12345678",
+ "ts": 1507530737,
+ "zone_id": "1",
+ "pf": "android",
+ "amt": 123,
+ "bill_no": "BillNo_123",
+ "sig": "f705c7351830125282ffc6d3c22c81db19b50a748f60f7c8f267e59152941d83"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxPayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxPayResponse.json
new file mode 100644
index 00000000..78a97b31
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxPayResponse.json
@@ -0,0 +1,5 @@
+{
+ "bill_no": "1578020538",
+ "balance": 0,
+ "used_gen_amt": 10
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxPresentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxPresentRequest.json
new file mode 100644
index 00000000..6214ba03
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxPresentRequest.json
@@ -0,0 +1,11 @@
+{
+ "openid": "odkx20ENSNa2w5y3g_qOkOvBNM1g",
+ "appid": "wx1234567",
+ "offer_id": "12345678",
+ "ts": 1507530737,
+ "zone_id": "1",
+ "pf": "android",
+ "present_counts": 233,
+ "bill_no": "BillNo_123",
+ "sig": "e53e5241bbb014b3a9fcc221d66fecab8734b53fe94d7a8c65180e175e29f443"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxPresentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxPresentResponse.json
new file mode 100644
index 00000000..2efc12fd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinMidas/Sandbox/CgibinMidasSandboxPresentResponse.json
@@ -0,0 +1,4 @@
+{
+ "bill_no": "BillNo_123",
+ "balance": 200
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenBindRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenBindRequest.json
new file mode 100644
index 00000000..f6a6832f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenBindRequest.json
@@ -0,0 +1,4 @@
+{
+ "appid": "auth_appid_value",
+ "open_appid": "open_appid_value"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenBindResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenBindResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenBindResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenCreateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenCreateRequest.json
new file mode 100644
index 00000000..3c6e1dc7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenCreateRequest.json
@@ -0,0 +1,3 @@
+{
+ "appid": "auth_appid_value"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenCreateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenCreateResponse.json
new file mode 100644
index 00000000..83de9b92
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenCreateResponse.json
@@ -0,0 +1,5 @@
+{
+ "open_appid": "appid_value",
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenGetRequest.json
new file mode 100644
index 00000000..3c6e1dc7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenGetRequest.json
@@ -0,0 +1,3 @@
+{
+ "appid": "auth_appid_value"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenGetResponse.json
new file mode 100644
index 00000000..83de9b92
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenGetResponse.json
@@ -0,0 +1,5 @@
+{
+ "open_appid": "appid_value",
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenUnbindRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenUnbindRequest.json
new file mode 100644
index 00000000..f6a6832f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenUnbindRequest.json
@@ -0,0 +1,4 @@
+{
+ "appid": "auth_appid_value",
+ "open_appid": "open_appid_value"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenUnbindResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenUnbindResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinOpen/CgibinOpenUnbindResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIAddPOIRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIAddPOIRequest.json
new file mode 100644
index 00000000..5e50ffc8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIAddPOIRequest.json
@@ -0,0 +1,31 @@
+{
+ "business": {
+ "base_info": {
+ "sid": "33788392",
+ "business_name": "15个汉字或30个英文字符内",
+ "branch_name": "不超过10个字,不能含有括号和特殊字符",
+ "province": "不超过10个字",
+ "city": "不超过30个字",
+ "district": "不超过10个字",
+ "address": "门店所在的详细街道地址(不要填写省市信息):不超过80个字",
+ "telephone": "不超53个字符(不可以出现文字)",
+ "categories": [ "美食,小吃快餐" ],
+ "offset_type": 1,
+ "longitude": 115.32375,
+ "latitude": 25.097486,
+ "photo_list": [
+ {
+ "photo_url": "https:// 不超过20张.com"
+ },
+ {
+ "photo_url": "https://XXX.com"
+ }
+ ],
+ "recommend": "不超过200字。麦辣鸡腿堡套餐,麦乐鸡,全家桶",
+ "special": "不超过200字。免费wifi,外卖服务",
+ "introduction": "不超过300字。麦当劳是全球大型跨国连锁餐厅,1940 年创立于美国,在世界上大约拥有3 万间分店。主要售卖汉堡包,以及薯条、炸鸡、汽水、冰品、沙拉、 水果等快餐食品",
+ "open_time": "8:00-20:00",
+ "avg_price": 35
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIAddPOIResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIAddPOIResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIAddPOIResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIDeletePOIRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIDeletePOIRequest.json
new file mode 100644
index 00000000..837b3ac9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIDeletePOIRequest.json
@@ -0,0 +1,3 @@
+{
+ "poi_id": "271262077"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIDeletePOIResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIDeletePOIResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIDeletePOIResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIGetPOIListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIGetPOIListRequest.json
new file mode 100644
index 00000000..74cab01c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIGetPOIListRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin": 0,
+ "limit": 10
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIGetPOIListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIGetPOIListResponse.json
new file mode 100644
index 00000000..e5c6992c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIGetPOIListResponse.json
@@ -0,0 +1,36 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "business_list": [
+ {
+ "base_info": {
+ "sid": "101",
+ "business_name": "麦当劳",
+ "branch_name": "艺苑路店",
+ "address": "艺苑路11号",
+ "telephone": "020-12345678",
+ "categories": [ "美食,快餐小吃" ],
+ "city": "广州市",
+ "province": "广东省",
+ "offset_type": 1,
+ "longitude": 115.32375,
+ "latitude": 25.097486,
+ "photo_list": [
+ {
+ "photo_url": "http://..."
+ }
+ ],
+ "introduction": "麦当劳是全球大型跨国连锁餐厅,1940 年创立于美国,在世界上大约拥有3 万间分店。主要售卖汉堡包,以及薯条、炸鸡、汽水、冰品、沙拉、水果等快餐食品",
+ "recommend": "麦辣鸡腿堡套餐,麦乐鸡,全家桶",
+ "special": "免费wifi,外卖服务",
+ "open_time": "8:00-20:00",
+ "avg_price": 35,
+ "poi_id": "285633617",
+ "available_state": 3,
+ "district": "海珠区",
+ "update_status": 0
+ }
+ }
+ ],
+ "total_count": "3"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIGetPOIRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIGetPOIRequest.json
new file mode 100644
index 00000000..837b3ac9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIGetPOIRequest.json
@@ -0,0 +1,3 @@
+{
+ "poi_id": "271262077"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIGetPOIResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIGetPOIResponse.json
new file mode 100644
index 00000000..17bb0e0b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIGetPOIResponse.json
@@ -0,0 +1,34 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "business": {
+ "base_info": {
+ "sid": "001",
+ "business_name": "麦当劳",
+ "branch_name": "艺苑路店",
+ "province": "广东省",
+ "city": "广州市",
+ "address": "海珠区艺苑路11 号",
+ "telephone": "020-12345678",
+ "categories": [ "美食,小吃快餐" ],
+ "offset_type": 1,
+ "longitude": 115.32375,
+ "latitude": 25.097486,
+ "photo_list": [
+ {
+ "photo_url": "https:// XXX.com"
+ },
+ {
+ "photo_url": "https://XXX.com"
+ }
+ ],
+ "recommend": "麦辣鸡腿堡套餐,麦乐鸡,全家桶",
+ "special": "免费wifi,外卖服务",
+ "introduction": "麦当劳是全球大型跨国连锁餐厅,1940 年创立于美国,在世界上大约拥有3 万间分店。 主要售卖汉堡包, 以及薯条、 炸鸡、 汽水、 冰品、 沙拉、 水果等快餐食品 ",
+ "open_time": "8:00-20:00",
+ "avg_price": 35,
+ "available_state": 3,
+ "update_status": 0
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIUpdatePOIRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIUpdatePOIRequest.json
new file mode 100644
index 00000000..6605ee44
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIUpdatePOIRequest.json
@@ -0,0 +1,22 @@
+{
+ "business": {
+ "base_info": {
+ "poi_id": "271864249",
+ "sid": "A00001",
+ "telephone": "020-12345678",
+ "photo_list": [
+ {
+ "photo_url": "https:// XXX.com"
+ },
+ {
+ "photo_url": "https://XXX.com"
+ }
+ ],
+ "recommend": "麦辣鸡腿堡套餐,麦乐鸡,全家桶",
+ "special": "免费wifi,外卖服务",
+ "introduction": "麦当劳是全球大型跨国连锁餐厅,1940 年创立于美国,在世界上大约拥有3 万间分店。主要售卖汉堡包,以及薯条、炸鸡、汽水、冰品、沙拉、水果等快餐食品",
+ "open_time": "8:00-20:00",
+ "avg_price": 35
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIUpdatePOIResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIUpdatePOIResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinPOI/CgibinPOIUpdatePOIResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinQrcode/CgibinQrcodeCreateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinQrcode/CgibinQrcodeCreateRequest.json
new file mode 100644
index 00000000..e42b1901
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinQrcode/CgibinQrcodeCreateRequest.json
@@ -0,0 +1,10 @@
+{
+ "expire_seconds": 604800,
+ "action_name": "QR_SCENE",
+ "action_info": {
+ "scene": {
+ "scene_id": 123,
+ "scene_str": "test"
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinQrcode/CgibinQrcodeCreateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinQrcode/CgibinQrcodeCreateResponse.json
new file mode 100644
index 00000000..aa60a616
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinQrcode/CgibinQrcodeCreateResponse.json
@@ -0,0 +1,5 @@
+{
+ "ticket": "gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm3sUw==",
+ "expire_seconds": 60,
+ "url": "http: //weixin.qq.com/q/kZgfwMTm72WWPkovabbI"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortUrlRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortUrlRequest.json
new file mode 100644
index 00000000..7472d5e1
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortUrlRequest.json
@@ -0,0 +1,4 @@
+{
+ "action": "long2short",
+ "long_url": "http://wap.koudaitong.com/v2/showcase/goods?alias=128wi9shh&spm=h56083&redirect_count=1"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortUrlResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortUrlResponse.json
new file mode 100644
index 00000000..7093ed81
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortUrlResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "short_url": "http://w.url.cn/s/AvCo6Ih"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortenFetchRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortenFetchRequest.json
new file mode 100644
index 00000000..5f8a5ad8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortenFetchRequest.json
@@ -0,0 +1,3 @@
+{
+ "short_key": "iTqRJFSEqk9RvPk"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortenFetchResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortenFetchResponse.json
new file mode 100644
index 00000000..ec125d2c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortenFetchResponse.json
@@ -0,0 +1,7 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "long_data": "loooooong data",
+ "create_time": 1611047541,
+ "expire_seconds": 86300
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortenGenerateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortenGenerateRequest.json
new file mode 100644
index 00000000..bc3eee94
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortenGenerateRequest.json
@@ -0,0 +1,4 @@
+{
+ "long_data": "loooooong data",
+ "expire_seconds": 86400
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortenGenerateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortenGenerateResponse.json
new file mode 100644
index 00000000..ad2c1eb7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinShorten/CgibinShortenGenerateResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "short_key": "iTqRJFSEqk9RvPk"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinSoter/GgibinSoterVerifySignatureRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinSoter/GgibinSoterVerifySignatureRequest.json
new file mode 100644
index 00000000..23b2c898
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinSoter/GgibinSoterVerifySignatureRequest.json
@@ -0,0 +1,5 @@
+{
+ "openid": "$openid",
+ "json_string": "$resultJSON",
+ "json_signature": "$resultJSONSignature"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinSoter/GgibinSoterVerifySignatureResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinSoter/GgibinSoterVerifySignatureResponse.json
new file mode 100644
index 00000000..884cfe90
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinSoter/GgibinSoterVerifySignatureResponse.json
@@ -0,0 +1,3 @@
+{
+ "is_ok": true
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateAddTemplateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateAddTemplateRequest.json
new file mode 100644
index 00000000..cdc0af0f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateAddTemplateRequest.json
@@ -0,0 +1,3 @@
+{
+ "template_id_short": "TM00015"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateAddTemplateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateAddTemplateResponse.json
new file mode 100644
index 00000000..445cbd41
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateAddTemplateResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "template_id": "Doclyl5uP7Aciu-qZ7mJNPtWkbkYnWBWVja26EGbNyk"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateDeletePrivateTemplateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateDeletePrivateTemplateRequest.json
new file mode 100644
index 00000000..d9deb59d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateDeletePrivateTemplateRequest.json
@@ -0,0 +1,3 @@
+{
+ "template_id": "Dyvp3-Ff0cnail_CDSzk1fIc6-9lOkxsQE7exTJbwUE"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateDeletePrivateTemplateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateDeletePrivateTemplateResponse.json
new file mode 100644
index 00000000..46b14c1a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateDeletePrivateTemplateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateGetAllPrivateTemplateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateGetAllPrivateTemplateRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateGetAllPrivateTemplateRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateGetAllPrivateTemplateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateGetAllPrivateTemplateResponse.json
new file mode 100644
index 00000000..fdab4cd3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateGetAllPrivateTemplateResponse.json
@@ -0,0 +1,12 @@
+{
+ "template_list": [
+ {
+ "template_id": "iPk5sOIt5X_flOVKn5GrTFpncEYTojx6ddbt8WYoV5s",
+ "title": "领取奖金提醒",
+ "primary_industry": "IT科技",
+ "deputy_industry": "互联网|电子商务",
+ "content": "{ {result.DATA} }\n\n领奖金额:{ {withdrawMoney.DATA} }\n领奖 时间: { {withdrawTime.DATA} }\n银行信息:{ {cardInfo.DATA} }\n到账时间: { {arrivedTime.DATA} }\n{ {remark.DATA} }",
+ "example": "您已提交领奖申请\n\n领奖金额:xxxx元\n领奖时间:2013-10-10 12:22:22\n银行信息:xx银行(尾号xxxx)\n到账时间:预计xxxxxxx\n\n预计将于xxxx到达您的银行卡"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateGetIndustryRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateGetIndustryRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateGetIndustryRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateGetIndustryResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateGetIndustryResponse.json
new file mode 100644
index 00000000..600bbbe2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateGetIndustryResponse.json
@@ -0,0 +1,10 @@
+{
+ "primary_industry": {
+ "first_class": "运输与仓储",
+ "second_class": "快递"
+ },
+ "secondary_industry": {
+ "first_class": "IT科技",
+ "second_class": "互联网|电子商务"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateSetIndustryRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateSetIndustryRequest.json
new file mode 100644
index 00000000..3ca05ced
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateSetIndustryRequest.json
@@ -0,0 +1,4 @@
+{
+ "industry_id1": "1",
+ "industry_id2": "4"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateSetIndustryResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateSetIndustryResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinTemplate/CgibinTemplateSetIndustryResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxaapp/CgibinWxaappCreateWxaQrcodeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxaapp/CgibinWxaappCreateWxaQrcodeRequest.json
new file mode 100644
index 00000000..9da90428
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxaapp/CgibinWxaappCreateWxaQrcodeRequest.json
@@ -0,0 +1,4 @@
+{
+ "path": "page/index/index",
+ "width": 430
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxaapp/CgibinWxaappCreateWxaQrcodeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxaapp/CgibinWxaappCreateWxaQrcodeResponse.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxaapp/CgibinWxaappCreateWxaQrcodeResponse.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpAddRequest.json
new file mode 100644
index 00000000..cd454c9c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpAddRequest.json
@@ -0,0 +1,11 @@
+{
+ "prefix": "https://weixin.qq.com/qrcodejump",
+ "permit_sub_rule": 1,
+ "path": "pages/index/index",
+ "open_version": 1,
+ "debug_url": [
+ "https://weixin.qq.com/qrcodejump?a=1",
+ "https://weixin.qq.com/qrcodejump?a=2"
+ ],
+ "is_edit": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpAddResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpAddResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpDeleteRequest.json
new file mode 100644
index 00000000..e70b6ef4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpDeleteRequest.json
@@ -0,0 +1,3 @@
+{
+ "prefix": "https://weixin.qq.com/qrcodejump"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpDeleteResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpDeleteResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpDownloadRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpDownloadRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpDownloadRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpDownloadResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpDownloadResponse.json
new file mode 100644
index 00000000..b2b49344
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpDownloadResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "file_name": "xxx",
+ "file_content": "xxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpGetRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpGetRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpGetResponse.json
new file mode 100644
index 00000000..409bc323
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpGetResponse.json
@@ -0,0 +1,37 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+
+ "rule_list": [
+ {
+ "prefix": "https://weixin.qq.com/qrcodejump",
+ "open_version": 1,
+ "state": 1,
+ "permit_sub_rule": 1,
+ "path": "pages / index / index ",
+ "debug_url": [
+ "https://weixin.qq.com/qrcodejump?a=1",
+ "https://weixin.qq.com/qrcodejump?a=1",
+ "https://weixin.qq.com/qrcodejump?a=2",
+ "https: //weixin.qq.com/qrcodejump?a=2"
+ ]
+ },
+ {
+ "prefix": "https://weixin.qq.com/qrcodejumptest",
+ "open_version": 1,
+ "state": 1,
+ "permit_sub_rule": 1,
+ "path": "pages/index/index",
+ "debug_url": [
+ "https://weixin.qq.com/qrcodejumptest?a=1",
+ "https://weixin.qq.com/qrcodejumptest?a=1",
+ "https://weixin.qq.com/qrcodejumptest?a=2",
+ "https: //weixin.qq.com/qrcodejumptest?a=2"
+ ]
+ }
+ ],
+
+ "qrcodejump_open": 0,
+ "list_size": 2,
+ "qrcodejump_pub_quota": 20
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpPublishRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpPublishRequest.json
new file mode 100644
index 00000000..e70b6ef4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpPublishRequest.json
@@ -0,0 +1,3 @@
+{
+ "prefix": "https://weixin.qq.com/qrcodejump"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpPublishResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpPublishResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CgibinWxopen/QrcodeJump/CgibinWxopenQrcodeJumpPublishResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountAddRequest.json
new file mode 100644
index 00000000..1ada2b79
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountAddRequest.json
@@ -0,0 +1,5 @@
+{
+ "kf_account": "test1@test",
+ "nickname": "客服1",
+ "password": "pswmd5"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountAddResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountAddResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountDeleteRequest.json
new file mode 100644
index 00000000..aea0ae6d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountDeleteRequest.json
@@ -0,0 +1,3 @@
+{
+ "kf_account": "test1@test"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountDeleteResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountDeleteResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountInviteWorkerRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountInviteWorkerRequest.json
new file mode 100644
index 00000000..107211d1
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountInviteWorkerRequest.json
@@ -0,0 +1,4 @@
+{
+ "kf_account": "test1@test",
+ "invite_wx": "test_kfwx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountInviteWorkerResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountInviteWorkerResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountInviteWorkerResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountUpdateRequest.json
new file mode 100644
index 00000000..1ada2b79
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountUpdateRequest.json
@@ -0,0 +1,5 @@
+{
+ "kf_account": "test1@test",
+ "nickname": "客服1",
+ "password": "pswmd5"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountUpdateResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountUpdateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountUploadHeadImageRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountUploadHeadImageRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountUploadHeadImageRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountUploadHeadImageResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountUploadHeadImageResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfAccount/CustomServiceKfAccountUploadHeadImageResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionCloseRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionCloseRequest.json
new file mode 100644
index 00000000..bc80ca08
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionCloseRequest.json
@@ -0,0 +1,4 @@
+{
+ "kf_account": "test1@test",
+ "openid": "OPENID"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionCloseResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionCloseResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionCloseResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionCreateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionCreateRequest.json
new file mode 100644
index 00000000..bc80ca08
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionCreateRequest.json
@@ -0,0 +1,4 @@
+{
+ "kf_account": "test1@test",
+ "openid": "OPENID"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionCreateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionCreateResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionCreateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetSessionListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetSessionListRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetSessionListRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetSessionListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetSessionListResponse.json
new file mode 100644
index 00000000..b3c2ed5b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetSessionListResponse.json
@@ -0,0 +1,12 @@
+{
+ "sessionlist": [
+ {
+ "createtime": 123456789,
+ "openid": "OPENID"
+ },
+ {
+ "createtime": 123456789,
+ "openid": "OPENID"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetSessionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetSessionRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetSessionRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetSessionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetSessionResponse.json
new file mode 100644
index 00000000..44cb9333
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetSessionResponse.json
@@ -0,0 +1,4 @@
+{
+ "createtime": 123456789,
+ "kf_account": "test1@test"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetWaitCaseRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetWaitCaseRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetWaitCaseRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetWaitCaseResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetWaitCaseResponse.json
new file mode 100644
index 00000000..78a1f78e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/KfSession/CustomServiceKfSessionGetWaitCaseResponse.json
@@ -0,0 +1,13 @@
+{
+ "count": 150,
+ "waitcaselist": [
+ {
+ "latest_time": 123456789,
+ "openid": "OPENID"
+ },
+ {
+ "latest_time": 123456789,
+ "openid": "OPENID"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/MessageRecord/CustomServiceMessageRecordGetMessageListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/MessageRecord/CustomServiceMessageRecordGetMessageListRequest.json
new file mode 100644
index 00000000..ec12e926
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/MessageRecord/CustomServiceMessageRecordGetMessageListRequest.json
@@ -0,0 +1,6 @@
+{
+ "starttime": 987654321,
+ "endtime": 987654321,
+ "msgid": 1,
+ "number": 10000
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/MessageRecord/CustomServiceMessageRecordGetMessageListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/MessageRecord/CustomServiceMessageRecordGetMessageListResponse.json
new file mode 100644
index 00000000..b5037ec6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/CustomService/MessageRecord/CustomServiceMessageRecordGetMessageListResponse.json
@@ -0,0 +1,20 @@
+{
+ "recordlist": [
+ {
+ "openid": "oDF3iY9WMaswOPWjCIp_f3Bnpljk",
+ "opercode": 2002,
+ "text": " 您好,客服test1为您服务。",
+ "time": 1400563710,
+ "worker": "test1@test"
+ },
+ {
+ "openid": "oDF3iY9WMaswOPWjCIp_f3Bnpljk",
+ "opercode": 2003,
+ "text": "你好,有什么事情?",
+ "time": 1400563731,
+ "worker": "test1@test"
+ }
+ ],
+ "number": 2,
+ "msgid": 20165267
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetArticleSummaryRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetArticleSummaryRequest.json
new file mode 100644
index 00000000..391c7468
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetArticleSummaryRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-08",
+ "end_date": "2014-12-08"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetArticleSummaryResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetArticleSummaryResponse.json
new file mode 100644
index 00000000..0af5e110
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetArticleSummaryResponse.json
@@ -0,0 +1,17 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-08",
+ "msgid": "10000050_1",
+ "title": "12月27日 DiLi日报",
+ "int_page_read_user": 23676,
+ "int_page_read_count": 25615,
+ "ori_page_read_user": 29,
+ "ori_page_read_count": 34,
+ "share_user": 122,
+ "share_count": 994,
+ "add_to_fav_user": 1,
+ "add_to_fav_count": 3
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetArticleTotalRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetArticleTotalRequest.json
new file mode 100644
index 00000000..391c7468
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetArticleTotalRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-08",
+ "end_date": "2014-12-08"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetArticleTotalResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetArticleTotalResponse.json
new file mode 100644
index 00000000..da5fbd27
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetArticleTotalResponse.json
@@ -0,0 +1,39 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-14",
+ "msgid": "202457380_1",
+ "title": "马航丢画记",
+ "details": [
+ {
+ "stat_date": "2014-12-14",
+ "target_user": 261917,
+ "int_page_read_user": 23676,
+ "int_page_read_count": 25615,
+ "ori_page_read_user": 29,
+ "ori_page_read_count": 34,
+ "share_user": 122,
+ "share_count": 994,
+ "add_to_fav_user": 1,
+ "add_to_fav_count": 3,
+ "int_page_from_session_read_user": 657283,
+ "int_page_from_session_read_count": 753486,
+ "int_page_from_hist_msg_read_user": 1669,
+ "int_page_from_hist_msg_read_count": 1920,
+ "int_page_from_feed_read_user": 367308,
+ "int_page_from_feed_read_count": 433422,
+ "int_page_from_friends_read_user": 15428,
+ "int_page_from_friends_read_count": 19645,
+ "int_page_from_other_read_user": 477,
+ "int_page_from_other_read_count": 703,
+ "feed_share_from_session_user": 63925,
+ "feed_share_from_session_cnt": 66489,
+ "feed_share_from_feed_user": 18249,
+ "feed_share_from_feed_cnt": 19319,
+ "feed_share_from_other_user": 731,
+ "feed_share_from_other_cnt": 775
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserReadHourRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserReadHourRequest.json
new file mode 100644
index 00000000..391c7468
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserReadHourRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-08",
+ "end_date": "2014-12-08"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserReadHourResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserReadHourResponse.json
new file mode 100644
index 00000000..9e07cf51
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserReadHourResponse.json
@@ -0,0 +1,30 @@
+{
+ "list": [
+ {
+ "ref_date": "2020-02-18",
+ "ref_hour": 0,
+ "user_source": 99999999,
+ "int_page_read_user": 9028,
+ "int_page_read_count": 11815,
+ "ori_page_read_user": 0,
+ "ori_page_read_count": 0,
+ "share_user": 279,
+ "share_count": 340,
+ "add_to_fav_user": 0,
+ "add_to_fav_count": 0
+ },
+ {
+ "ref_date": "2020-02-18",
+ "ref_hour": 0,
+ "user_source": 0,
+ "int_page_read_user": 6812,
+ "int_page_read_count": 9172,
+ "ori_page_read_user": 0,
+ "ori_page_read_count": 0,
+ "share_user": 164,
+ "share_count": 196,
+ "add_to_fav_user": 0,
+ "add_to_fav_count": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserReadRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserReadRequest.json
new file mode 100644
index 00000000..391c7468
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserReadRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-08",
+ "end_date": "2014-12-08"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserReadResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserReadResponse.json
new file mode 100644
index 00000000..d466001d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserReadResponse.json
@@ -0,0 +1,28 @@
+{
+ "list": [
+ {
+ "ref_date": "2020-02-18",
+ "user_source": 99999999,
+ "int_page_read_user": 545497,
+ "int_page_read_count": 856093,
+ "ori_page_read_user": 191,
+ "ori_page_read_count": 240,
+ "share_user": 22603,
+ "share_count": 28487,
+ "add_to_fav_user": 3163,
+ "add_to_fav_count": 3841
+ },
+ {
+ "ref_date": "2020-02-18",
+ "user_source": 0,
+ "int_page_read_user": 381272,
+ "int_page_read_count": 646629,
+ "ori_page_read_user": 0,
+ "ori_page_read_count": 0,
+ "share_user": 13110,
+ "share_count": 16469,
+ "add_to_fav_user": 0,
+ "add_to_fav_count": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserShareHourRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserShareHourRequest.json
new file mode 100644
index 00000000..391c7468
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserShareHourRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-08",
+ "end_date": "2014-12-08"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserShareHourResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserShareHourResponse.json
new file mode 100644
index 00000000..d0cedfa8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserShareHourResponse.json
@@ -0,0 +1,11 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-07",
+ "ref_hour": 1200,
+ "share_scene": 1,
+ "share_count": 72,
+ "share_user": 4
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserShareRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserShareRequest.json
new file mode 100644
index 00000000..391c7468
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserShareRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-08",
+ "end_date": "2014-12-08"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserShareResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserShareResponse.json
new file mode 100644
index 00000000..1a649a87
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Article/DataCubeGetUserShareResponse.json
@@ -0,0 +1,16 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-07",
+ "share_scene": 1,
+ "share_count": 207,
+ "share_user": 11
+ },
+ {
+ "ref_date": "2014-12-07",
+ "share_scene": 5,
+ "share_count": 23,
+ "share_user": 11
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardBusinessInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardBusinessInfoRequest.json
new file mode 100644
index 00000000..6326ba4d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardBusinessInfoRequest.json
@@ -0,0 +1,5 @@
+{
+ "begin_date": "2015-06-15",
+ "end_date": "2015-06-30",
+ "cond_source": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardBusinessInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardBusinessInfoResponse.json
new file mode 100644
index 00000000..91249fa9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardBusinessInfoResponse.json
@@ -0,0 +1,17 @@
+{
+ "list": [
+ {
+ "ref_date": "2015-06-23",
+ "view_cnt": 1,
+ "view_user": 1,
+ "receive_cnt": 1,
+ "receive_user": 1,
+ "verify_cnt": 0,
+ "verify_user": 0,
+ "given_cnt": 0,
+ "given_user": 0,
+ "expire_cnt": 0,
+ "expire_user": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardCardInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardCardInfoRequest.json
new file mode 100644
index 00000000..d387eca9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardCardInfoRequest.json
@@ -0,0 +1,6 @@
+{
+ "begin_date": "2015-06-15",
+ "end_date": "2015-06-30",
+ "cond_source": 0,
+ "card_id": "po8pktyDLmakNY2fn2VyhkiEPqGE"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardCardInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardCardInfoResponse.json
new file mode 100644
index 00000000..4d4f69d2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardCardInfoResponse.json
@@ -0,0 +1,19 @@
+{
+ "list": [
+ {
+ "ref_date": "2015-06-23",
+ "card_id": "po8pktyDLmakNY2fn2VyhkiEPqGE",
+ "card_type": 3,
+ "view_cnt": 1,
+ "view_user": 1,
+ "receive_cnt": 1,
+ "receive_user": 1,
+ "verify_cnt": 0,
+ "verify_user": 0,
+ "given_cnt": 0,
+ "given_user": 0,
+ "expire_cnt": 0,
+ "expire_user": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardMemberCardDetailRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardMemberCardDetailRequest.json
new file mode 100644
index 00000000..fa0c55bf
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardMemberCardDetailRequest.json
@@ -0,0 +1,5 @@
+{
+ "begin_date": "2015-06-15",
+ "end_date": "2015-06-30",
+ "card_id": "xxxxxxxxxxxxxxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardMemberCardDetailResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardMemberCardDetailResponse.json
new file mode 100644
index 00000000..51f0dbe4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardMemberCardDetailResponse.json
@@ -0,0 +1,22 @@
+{
+ "list": [
+ {
+ "ref_date": "2016-07-06",
+ "merchanttype": 2,
+ "cardid": "p4WkzwieuDBzzn7Jed6SBO0-ZgaU",
+ "submerchantid": 0,
+ "view_cnt": 2,
+ "view_user": 1,
+ "receive_cnt": 1,
+ "receive_user": 1,
+ "verify_cnt": 0,
+ "verify_user": 0,
+ "active_cnt": 1,
+ "active_user": 1,
+ "total_user": 249,
+ "new_user": 0,
+ "payOriginalFee": 0,
+ "fee": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardMemberCardInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardMemberCardInfoRequest.json
new file mode 100644
index 00000000..6326ba4d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardMemberCardInfoRequest.json
@@ -0,0 +1,5 @@
+{
+ "begin_date": "2015-06-15",
+ "end_date": "2015-06-30",
+ "cond_source": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardMemberCardInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardMemberCardInfoResponse.json
new file mode 100644
index 00000000..7a10a054
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Card/DataCubeGetCardMemberCardInfoResponse.json
@@ -0,0 +1,16 @@
+{
+ "list": [
+ {
+ "ref_date": "2015-06-23",
+ "view_cnt": 0,
+ "view_user": 0,
+ "receive_cnt": 0,
+ "receive_user": 0,
+ "active_user": 0,
+ "verify_cnt": 0,
+ "verify_user": 0,
+ "total_user": 86,
+ "total_receive_user": 95
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/GameAnalysis/DataCubeGetGameAnalysisDataRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/GameAnalysis/DataCubeGetGameAnalysisDataRequest.json
new file mode 100644
index 00000000..84fa95bd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/GameAnalysis/DataCubeGetGameAnalysisDataRequest.json
@@ -0,0 +1,15 @@
+{
+ "metric": "1000006:4",
+ "granularity": 24,
+ "start_time": 1601568000,
+ "end_time": 1601654400,
+ "filter_list": [
+ {
+ "dimension": "5",
+ "value": "1"
+ }
+ ],
+ "group_list": [
+ "3"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/GameAnalysis/DataCubeGetGameAnalysisDataResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/GameAnalysis/DataCubeGetGameAnalysisDataResponse.json
new file mode 100644
index 00000000..6100da73
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/GameAnalysis/DataCubeGetGameAnalysisDataResponse.json
@@ -0,0 +1,37 @@
+{
+ "data_list": [
+ {
+ "timestamp": 1601568000,
+ "time_label": "2020-10-02",
+ "group_dimension_list": [
+ {
+ "value": "-9999",
+ "label": "全部"
+ }
+ ],
+ "metric_value": 52
+ },
+ {
+ "timestamp": 1601568000,
+ "time_label": "2020-10-02",
+ "group_dimension_list": [
+ {
+ "value": "1",
+ "label": "iPhone"
+ }
+ ],
+ "metric_value": 25
+ },
+ {
+ "timestamp": 1601568000,
+ "time_label": "2020-10-02",
+ "group_dimension_list": [
+ {
+ "value": "2",
+ "label": "Android"
+ }
+ ],
+ "metric_value": 27
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Interface/DataCubeGetInterfaceSummaryHourRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Interface/DataCubeGetInterfaceSummaryHourRequest.json
new file mode 100644
index 00000000..e7a0c173
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Interface/DataCubeGetInterfaceSummaryHourRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-07",
+ "end_date": "2014-12-07"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Interface/DataCubeGetInterfaceSummaryHourResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Interface/DataCubeGetInterfaceSummaryHourResponse.json
new file mode 100644
index 00000000..b5008460
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Interface/DataCubeGetInterfaceSummaryHourResponse.json
@@ -0,0 +1,12 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-07",
+ "ref_hour": 0,
+ "callback_count": 331,
+ "fail_count": 18,
+ "total_time_cost": 167870,
+ "max_time_cost": 5042
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Interface/DataCubeGetInterfaceSummaryRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Interface/DataCubeGetInterfaceSummaryRequest.json
new file mode 100644
index 00000000..e7a0c173
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Interface/DataCubeGetInterfaceSummaryRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-07",
+ "end_date": "2014-12-07"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Interface/DataCubeGetInterfaceSummaryResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Interface/DataCubeGetInterfaceSummaryResponse.json
new file mode 100644
index 00000000..60d86266
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/Interface/DataCubeGetInterfaceSummaryResponse.json
@@ -0,0 +1,11 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-01",
+ "callback_count": 36974,
+ "fail_count": 67,
+ "total_time_cost": 14994291,
+ "max_time_cost": 5044
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionMonthRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionMonthRequest.json
new file mode 100644
index 00000000..df856359
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionMonthRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-07",
+ "end_date": "2014-12-08"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionMonthResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionMonthResponse.json
new file mode 100644
index 00000000..d7b631a0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionMonthResponse.json
@@ -0,0 +1,9 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-07",
+ "count_interval": 1,
+ "msg_user": 246
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionRequest.json
new file mode 100644
index 00000000..df856359
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-07",
+ "end_date": "2014-12-08"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionResponse.json
new file mode 100644
index 00000000..d7b631a0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionResponse.json
@@ -0,0 +1,9 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-07",
+ "count_interval": 1,
+ "msg_user": 246
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionWeekRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionWeekRequest.json
new file mode 100644
index 00000000..df856359
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionWeekRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-07",
+ "end_date": "2014-12-08"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionWeekResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionWeekResponse.json
new file mode 100644
index 00000000..d7b631a0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageDistributionWeekResponse.json
@@ -0,0 +1,9 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-07",
+ "count_interval": 1,
+ "msg_user": 246
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageHourRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageHourRequest.json
new file mode 100644
index 00000000..df856359
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageHourRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-07",
+ "end_date": "2014-12-08"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageHourResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageHourResponse.json
new file mode 100644
index 00000000..3c929f8c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageHourResponse.json
@@ -0,0 +1,11 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-07",
+ "ref_hour": 0,
+ "msg_type": 1,
+ "msg_user": 9,
+ "msg_count": 10
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageMonthRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageMonthRequest.json
new file mode 100644
index 00000000..df856359
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageMonthRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-07",
+ "end_date": "2014-12-08"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageMonthResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageMonthResponse.json
new file mode 100644
index 00000000..2ea265ac
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageMonthResponse.json
@@ -0,0 +1,10 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-11-01",
+ "msg_type": 1,
+ "msg_user": 7989,
+ "msg_count": 42206
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageRequest.json
new file mode 100644
index 00000000..df856359
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-07",
+ "end_date": "2014-12-08"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageResponse.json
new file mode 100644
index 00000000..85339d11
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageResponse.json
@@ -0,0 +1,10 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-07",
+ "msg_type": 1,
+ "msg_user": 282,
+ "msg_count": 817
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageWeekRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageWeekRequest.json
new file mode 100644
index 00000000..df856359
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageWeekRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-07",
+ "end_date": "2014-12-08"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageWeekResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageWeekResponse.json
new file mode 100644
index 00000000..d84cd361
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/UpstreamMessage/DataCubeGetUpstreamMessageWeekResponse.json
@@ -0,0 +1,10 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-08",
+ "msg_type": 1,
+ "msg_user": 16,
+ "msg_count": 27
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/User/DataCubeGetUserCumulateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/User/DataCubeGetUserCumulateRequest.json
new file mode 100644
index 00000000..137d965f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/User/DataCubeGetUserCumulateRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-02",
+ "end_date": "2014-12-07"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/User/DataCubeGetUserCumulateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/User/DataCubeGetUserCumulateResponse.json
new file mode 100644
index 00000000..720210c2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/User/DataCubeGetUserCumulateResponse.json
@@ -0,0 +1,8 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-07",
+ "cumulate_user": 1217056
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/User/DataCubeGetUserSummaryRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/User/DataCubeGetUserSummaryRequest.json
new file mode 100644
index 00000000..137d965f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/User/DataCubeGetUserSummaryRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "2014-12-02",
+ "end_date": "2014-12-07"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/User/DataCubeGetUserSummaryResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/User/DataCubeGetUserSummaryResponse.json
new file mode 100644
index 00000000..2fe8e8ef
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/User/DataCubeGetUserSummaryResponse.json
@@ -0,0 +1,10 @@
+{
+ "list": [
+ {
+ "ref_date": "2014-12-07",
+ "user_source": 0,
+ "new_user": 0,
+ "cancel_user": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailyRetainInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailyRetainInfoRequest.json
new file mode 100644
index 00000000..f9e6641e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailyRetainInfoRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "20170313",
+ "end_date": "20170313"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailyRetainInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailyRetainInfoResponse.json
new file mode 100644
index 00000000..50bc1871
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailyRetainInfoResponse.json
@@ -0,0 +1,15 @@
+{
+ "ref_date": "20170313",
+ "visit_uv_new": [
+ {
+ "key": 0,
+ "value": 5464
+ }
+ ],
+ "visit_uv": [
+ {
+ "key": 0,
+ "value": 55500
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailySummaryTrendRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailySummaryTrendRequest.json
new file mode 100644
index 00000000..f9e6641e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailySummaryTrendRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "20170313",
+ "end_date": "20170313"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailySummaryTrendResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailySummaryTrendResponse.json
new file mode 100644
index 00000000..dd97c139
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailySummaryTrendResponse.json
@@ -0,0 +1,10 @@
+{
+ "list": [
+ {
+ "ref_date": "20170313",
+ "visit_total": 391,
+ "share_pv": 572,
+ "share_uv": 383
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailyVisitTrendRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailyVisitTrendRequest.json
new file mode 100644
index 00000000..f9e6641e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailyVisitTrendRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "20170313",
+ "end_date": "20170313"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailyVisitTrendResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailyVisitTrendResponse.json
new file mode 100644
index 00000000..4a080a84
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdDailyVisitTrendResponse.json
@@ -0,0 +1,13 @@
+{
+ "list": [
+ {
+ "ref_date": "20170313",
+ "session_cnt": 142549,
+ "visit_pv": 472351,
+ "visit_uv": 55500,
+ "visit_uv_new": 5464,
+ "stay_time_session": 0,
+ "visit_depth": 1.9838
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdMonthlyRetainInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdMonthlyRetainInfoRequest.json
new file mode 100644
index 00000000..4025cb5e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdMonthlyRetainInfoRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "20170201",
+ "end_date": "20170228"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdMonthlyRetainInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdMonthlyRetainInfoResponse.json
new file mode 100644
index 00000000..380d9989
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdMonthlyRetainInfoResponse.json
@@ -0,0 +1,15 @@
+{
+ "ref_date": "201702",
+ "visit_uv_new": [
+ {
+ "key": 0,
+ "value": 346249
+ }
+ ],
+ "visit_uv": [
+ {
+ "key": 0,
+ "value": 346249
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdMonthlyVisitTrendRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdMonthlyVisitTrendRequest.json
new file mode 100644
index 00000000..879652b2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdMonthlyVisitTrendRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "20170301",
+ "end_date": "20170331"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdMonthlyVisitTrendResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdMonthlyVisitTrendResponse.json
new file mode 100644
index 00000000..45cbe9b7
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdMonthlyVisitTrendResponse.json
@@ -0,0 +1,13 @@
+{
+ "list": [
+ {
+ "ref_date": "201703",
+ "session_cnt": 126513,
+ "visit_pv": 426113,
+ "visit_uv": 48659,
+ "visit_uv_new": 6726,
+ "stay_time_session": 56.4112,
+ "visit_depth": 2.0189
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdUserPortraitRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdUserPortraitRequest.json
new file mode 100644
index 00000000..045fb81c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdUserPortraitRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "20170611",
+ "end_date": "20170617"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdUserPortraitResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdUserPortraitResponse.json
new file mode 100644
index 00000000..8612f5cc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdUserPortraitResponse.json
@@ -0,0 +1,89 @@
+{
+ "ref_date": "20170611",
+ "visit_uv_new": {
+ "province": [
+ {
+ "id": 31,
+ "name": "广东省",
+ "value": 215
+ }
+ ],
+ "city": [
+ {
+ "id": 3102,
+ "name": "广州",
+ "value": 78
+ }
+ ],
+ "genders": [
+ {
+ "id": 1,
+ "name": "男",
+ "value": 2146
+ }
+ ],
+ "platforms": [
+ {
+ "id": 1,
+ "name": "iPhone",
+ "value": 27642
+ }
+ ],
+ "devices": [
+ {
+ "name": "OPPO R9",
+ "value": 61
+ }
+ ],
+ "ages": [
+ {
+ "id": 1,
+ "name": "17岁以下",
+ "value": 151
+ }
+ ]
+ },
+ "visit_uv": {
+ "province": [
+ {
+ "id": 31,
+ "name": "广东省",
+ "value": 1341
+ }
+ ],
+ "city": [
+ {
+ "id": 3102,
+ "name": "广州",
+ "value": 234
+ }
+ ],
+ "genders": [
+ {
+ "id": 1,
+ "name": "男",
+ "value": 14534
+ }
+ ],
+ "platforms": [
+ {
+ "id": 1,
+ "name": "iPhone",
+ "value": 21750
+ }
+ ],
+ "devices": [
+ {
+ "name": "OPPO R9",
+ "value": 617
+ }
+ ],
+ "ages": [
+ {
+ "id": 1,
+ "name": "17岁以下",
+ "value": 3156
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdVisitDistributionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdVisitDistributionRequest.json
new file mode 100644
index 00000000..f9e6641e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdVisitDistributionRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "20170313",
+ "end_date": "20170313"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdVisitDistributionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdVisitDistributionResponse.json
new file mode 100644
index 00000000..f561bbb9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdVisitDistributionResponse.json
@@ -0,0 +1,108 @@
+{
+ "ref_date": "20170313",
+ "list": [
+ {
+ "index": "access_source_session_cnt",
+ "item_list": [
+ {
+ "key": 10,
+ "value": 5
+ },
+ {
+ "key": 8,
+ "value": 687
+ },
+ {
+ "key": 7,
+ "value": 10740
+ },
+ {
+ "key": 6,
+ "value": 1961
+ },
+ {
+ "key": 5,
+ "value": 677
+ },
+ {
+ "key": 4,
+ "value": 653
+ },
+ {
+ "key": 3,
+ "value": 1120
+ },
+ {
+ "key": 2,
+ "value": 10243
+ },
+ {
+ "key": 1,
+ "value": 116578
+ }
+ ]
+ },
+ {
+ "index": "access_staytime_info",
+ "item_list": [
+ {
+ "key": 8,
+ "value": 16329
+ },
+ {
+ "key": 7,
+ "value": 19322
+ },
+ {
+ "key": 6,
+ "value": 21832
+ },
+ {
+ "key": 5,
+ "value": 19539
+ },
+ {
+ "key": 4,
+ "value": 29670
+ },
+ {
+ "key": 3,
+ "value": 19667
+ },
+ {
+ "key": 2,
+ "value": 11794
+ },
+ {
+ "key": 1,
+ "value": 4511
+ }
+ ]
+ },
+ {
+ "index": "access_depth_info",
+ "item_list": [
+ {
+ "key": 5,
+ "value": 217
+ },
+ {
+ "key": 4,
+ "value": 3259
+ },
+ {
+ "key": 3,
+ "value": 32445
+ },
+ {
+ "key": 2,
+ "value": 63542
+ },
+ {
+ "key": 1,
+ "value": 43201
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdVisitPageRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdVisitPageRequest.json
new file mode 100644
index 00000000..f9e6641e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdVisitPageRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "20170313",
+ "end_date": "20170313"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdVisitPageResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdVisitPageResponse.json
new file mode 100644
index 00000000..359e3525
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdVisitPageResponse.json
@@ -0,0 +1,55 @@
+{
+ "ref_date": "20170313",
+ "list": [
+ {
+ "page_path": "pages/main/main.html",
+ "page_visit_pv": 213429,
+ "page_visit_uv": 55423,
+ "page_staytime_pv": 8.139198,
+ "entrypage_pv": 117922,
+ "exitpage_pv": 61304,
+ "page_share_pv": 180,
+ "page_share_uv": 166
+ },
+ {
+ "page_path": "pages/linedetail/linedetail.html",
+ "page_visit_pv": 155030,
+ "page_visit_uv": 42195,
+ "page_staytime_pv": 35.462395,
+ "entrypage_pv": 21101,
+ "exitpage_pv": 47051,
+ "page_share_pv": 47,
+ "page_share_uv": 42
+ },
+ {
+ "page_path": "pages/search/search.html",
+ "page_visit_pv": 65011,
+ "page_visit_uv": 24716,
+ "page_staytime_pv": 6.889634,
+ "entrypage_pv": 1811,
+ "exitpage_pv": 3198,
+ "page_share_pv": 0,
+ "page_share_uv": 0
+ },
+ {
+ "page_path": "pages/stationdetail/stationdetail.html",
+ "page_visit_pv": 29953,
+ "page_visit_uv": 9695,
+ "page_staytime_pv": 7.558508,
+ "entrypage_pv": 1386,
+ "exitpage_pv": 2285,
+ "page_share_pv": 0,
+ "page_share_uv": 0
+ },
+ {
+ "page_path": "pages/switch-city/switch-city.html",
+ "page_visit_pv": 8928,
+ "page_visit_uv": 4017,
+ "page_staytime_pv": 9.22659,
+ "entrypage_pv": 748,
+ "exitpage_pv": 1613,
+ "page_share_pv": 0,
+ "page_share_uv": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdWeeklyRetainInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdWeeklyRetainInfoRequest.json
new file mode 100644
index 00000000..e99b76ff
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdWeeklyRetainInfoRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "20170306",
+ "end_date": "20170312"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdWeeklyRetainInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdWeeklyRetainInfoResponse.json
new file mode 100644
index 00000000..a066c58e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdWeeklyRetainInfoResponse.json
@@ -0,0 +1,23 @@
+{
+ "ref_date": "20170306-20170312",
+ "visit_uv_new": [
+ {
+ "key": 0,
+ "value": 0
+ },
+ {
+ "key": 1,
+ "value": 16853
+ }
+ ],
+ "visit_uv": [
+ {
+ "key": 0,
+ "value": 0
+ },
+ {
+ "key": 1,
+ "value": 99310
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdWeeklyVisitTrendRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdWeeklyVisitTrendRequest.json
new file mode 100644
index 00000000..e99b76ff
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdWeeklyVisitTrendRequest.json
@@ -0,0 +1,4 @@
+{
+ "begin_date": "20170306",
+ "end_date": "20170312"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdWeeklyVisitTrendResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdWeeklyVisitTrendResponse.json
new file mode 100644
index 00000000..5dfa5e10
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/DataCube/WeAnalysis/DataCubeGetWeAnalysisAppIdWeeklyVisitTrendResponse.json
@@ -0,0 +1,13 @@
+{
+ "list": [
+ {
+ "ref_date": "20170306-20170312",
+ "session_cnt": 986780,
+ "visit_pv": 3251840,
+ "visit_uv": 189405,
+ "visit_uv_new": 45592,
+ "stay_time_session": 54.5346,
+ "visit_depth": 1.9735
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeActiveCodeQueryRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeActiveCodeQueryRequest.json
new file mode 100644
index 00000000..09564e6a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeActiveCodeQueryRequest.json
@@ -0,0 +1,3 @@
+{
+ "code_url": "P.URL.CN/0U.JYJXP3HJI2C98A9O"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeActiveCodeQueryResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeActiveCodeQueryResponse.json
new file mode 100644
index 00000000..230a8c48
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeActiveCodeQueryResponse.json
@@ -0,0 +1,15 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "code": "8",
+ "code_start": 0,
+ "code_end": 200,
+ "activity_name": "test_name",
+ "product_brand": "test_brand",
+ "product_title": "test_title",
+ "product_code": "test_code",
+ "wxa_appid": "test_appid",
+ "wxa_path": "test_path",
+ "application_id": 581865877,
+ "isv_application_id": "test_id"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeActiveCodeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeActiveCodeRequest.json
new file mode 100644
index 00000000..10e221a9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeActiveCodeRequest.json
@@ -0,0 +1,11 @@
+{
+ "application_id": 581865877,
+ "code_start": 0,
+ "code_end": 200,
+ "activity_name": "test_name",
+ "product_brand": "test_brand",
+ "product_title": "test_title",
+ "product_code": "test_code",
+ "wxa_appid": "wx3sxjifjwojfsffef",
+ "wxa_path": "pages/index/index"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeActiveCodeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeActiveCodeResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeActiveCodeResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeDownloadRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeDownloadRequest.json
new file mode 100644
index 00000000..101003fa
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeDownloadRequest.json
@@ -0,0 +1,5 @@
+{
+ "application_id": 581865877,
+ "code_start": 0,
+ "code_end": 49999
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeDownloadResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeDownloadResponse.json
new file mode 100644
index 00000000..1f102f28
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeDownloadResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "buffer": "ajfiwejfoiawjfijweofi"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeQueryRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeQueryRequest.json
new file mode 100644
index 00000000..c881c37e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeQueryRequest.json
@@ -0,0 +1,3 @@
+{
+ "application_id": 581865877
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeQueryResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeQueryResponse.json
new file mode 100644
index 00000000..83b3a5c3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeQueryResponse.json
@@ -0,0 +1,15 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "status": "FINISH",
+ "code_generate_list": [
+ {
+ "code_start": 0,
+ "code_end": 49999
+ },
+ {
+ "code_start": 50000,
+ "code_end": 99999
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeRequest.json
new file mode 100644
index 00000000..a546f0a2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeRequest.json
@@ -0,0 +1,4 @@
+{
+ "code_count": 100000,
+ "isv_application_id": "testid124"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeResponse.json
new file mode 100644
index 00000000..ef1d8be0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeApplyCodeResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "application_id": 581865877
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeTicketToCodeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeTicketToCodeRequest.json
new file mode 100644
index 00000000..9fef8447
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeTicketToCodeRequest.json
@@ -0,0 +1,4 @@
+{
+ "code_ticket": "6cb4bc95e1f1abc97034cbe8fd484989",
+ "openid": "oiV2luCau8Cx0TMOy9lvZSLqRcKc"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeTicketToCodeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeTicketToCodeResponse.json
new file mode 100644
index 00000000..7e568fd3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpMarketCode/IntpMarketCodeTicketToCodeResponse.json
@@ -0,0 +1,15 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "code": "8",
+ "code_start": 0,
+ "code_end": 200,
+ "activity_name": "test_name",
+ "product_brand": "test_brand",
+ "product_title": "test_title",
+ "product_code": "test_code",
+ "wxa_appid": "wx3sxjifjwojfsffef",
+ "wxa_path": "pages/index/index",
+ "application_id": 581865877,
+ "isv_application_id": "test_id"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpRealName/IntpRealNameGetAuthUrlRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpRealName/IntpRealNameGetAuthUrlRequest.json
new file mode 100644
index 00000000..01aeb8cd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpRealName/IntpRealNameGetAuthUrlRequest.json
@@ -0,0 +1,3 @@
+{
+ "redirect_url": "https://mp.weixin.qq.com"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpRealName/IntpRealNameGetAuthUrlResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpRealName/IntpRealNameGetAuthUrlResponse.json
new file mode 100644
index 00000000..08e24bf1
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/IntpRealName/IntpRealNameGetAuthUrlResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "expires_in": 7200,
+ "auth_url": "https://mp.weixin.qq.com/insurance/card/getpwdconfig?auth_param=5c9f05#wechat_redirect"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetPropertyRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetPropertyRequest.json
new file mode 100644
index 00000000..5b4d4146
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetPropertyRequest.json
@@ -0,0 +1,3 @@
+{
+ "cate_id": "537074292"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetPropertyResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetPropertyResponse.json
new file mode 100644
index 00000000..e57338af
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetPropertyResponse.json
@@ -0,0 +1,33 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "properties": [
+ {
+ "id": "1075741879",
+ "name": "品牌",
+ "property_value": [
+ {
+ "id": "200050867",
+ "name": "VIC&"
+ },
+ {
+ "id": "200050868",
+ "name": "Kate&"
+ },
+ {
+ "id": "200050971",
+ "name": "M&"
+ },
+ {
+ "id": "200050972",
+ "name": "Black&"
+ }
+ ]
+ },
+ {
+ "id": "123456789",
+ "name": "颜色",
+ "property_value": []
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetSKURequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetSKURequest.json
new file mode 100644
index 00000000..5b4d4146
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetSKURequest.json
@@ -0,0 +1,3 @@
+{
+ "cate_id": "537074292"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetSKUResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetSKUResponse.json
new file mode 100644
index 00000000..3fd4fe7b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetSKUResponse.json
@@ -0,0 +1,20 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "sku_table": [
+ {
+ "id": "1075741873",
+ "name": "颜色",
+ "value_list": [
+ {
+ "id": "1079742375",
+ "name": "撞色"
+ },
+ {
+ "id": "1079742376",
+ "name": "桔色"
+ }
+ ]
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetSubRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetSubRequest.json
new file mode 100644
index 00000000..988cf65b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetSubRequest.json
@@ -0,0 +1,3 @@
+{
+ "cate_id": "537874913"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetSubResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetSubResponse.json
new file mode 100644
index 00000000..50c7dda6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Category/MerchantCategoryGetSubResponse.json
@@ -0,0 +1,26 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "cate_list": [
+ {
+ "id": "537074292",
+ "name": "数码相机"
+ },
+ {
+ "id": "537074293",
+ "name": "家用摄像机"
+ },
+ {
+ "id": "537074298",
+ "name": "单反相机"
+ },
+ {
+ "id": "537082412",
+ "name": "镜头"
+ },
+ {
+ "id": "537102001",
+ "name": "单电/微单"
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Common/MerchantCommonUploadImageRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Common/MerchantCommonUploadImageRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Common/MerchantCommonUploadImageRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Common/MerchantCommonUploadImageResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Common/MerchantCommonUploadImageResponse.json
new file mode 100644
index 00000000..8d9223f5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Common/MerchantCommonUploadImageResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "image_url": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2ibl4JWwwnW3icSJGqecVtRiaPxwWEIr99eYYL6AAAp1YBo12CpQTXFH6InyQWXITLvU4CU7kic4PcoXA/0"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupAddRequest.json
new file mode 100644
index 00000000..9730cc9a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupAddRequest.json
@@ -0,0 +1,9 @@
+{
+ "group_detail": {
+ "group_name": "测试分组",
+ "product_list": [
+ "pDF3iY9cEWyMimNlKbik_NYJTzYU",
+ "pDF3iY4kpZagQfwJ_LVQBaOC-LsM"
+ ]
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupAddResponse.json
new file mode 100644
index 00000000..03057a32
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupAddResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "group_id": 19
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupDeleteRequest.json
new file mode 100644
index 00000000..3ba440dc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupDeleteRequest.json
@@ -0,0 +1,3 @@
+{
+ "group_id": 19
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupDeleteResponse.json
new file mode 100644
index 00000000..2a4fca09
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupDeleteResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "success"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupGetAllRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupGetAllRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupGetAllRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupGetAllResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupGetAllResponse.json
new file mode 100644
index 00000000..0a56bc84
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupGetAllResponse.json
@@ -0,0 +1,14 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "groups_detail": [
+ {
+ "group_id": 200077549,
+ "group_name": "最新上架"
+ },
+ {
+ "group_id": 200079772,
+ "group_name": "全球热卖"
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupGetByIdRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupGetByIdRequest.json
new file mode 100644
index 00000000..3d321c6a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupGetByIdRequest.json
@@ -0,0 +1,3 @@
+{
+ "group_id": 29
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupGetByIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupGetByIdResponse.json
new file mode 100644
index 00000000..bb96e484
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupGetByIdResponse.json
@@ -0,0 +1,13 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "group_detail": {
+ "group_id": 200077549,
+ "group_name": "最新上架",
+ "product_list": [
+ "pDF3iYzZoY-Budrzt8O6IxrwIJAA",
+ "pDF3iY3pnWSGJcO2MpS2Nxy3HWx8",
+ "pDF3iY33jNt0Dj3M3UqiGlUxGrio"
+ ]
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupProductModifyRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupProductModifyRequest.json
new file mode 100644
index 00000000..1a88a7e4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupProductModifyRequest.json
@@ -0,0 +1,13 @@
+{
+ "group_id": 28,
+ "product": [
+ {
+ "product_id": "pDF3iY-CgqlAL3k8Ilz-6sj0UYpk",
+ "mod_action": 1
+ },
+ {
+ "product_id": "pDF3iY-RewlAL3k8Ilz-6sjsepp9",
+ "mod_action": 0
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupProductModifyResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupProductModifyResponse.json
new file mode 100644
index 00000000..2a4fca09
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupProductModifyResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "success"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupPropertyModifyRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupPropertyModifyRequest.json
new file mode 100644
index 00000000..5a6776ab
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupPropertyModifyRequest.json
@@ -0,0 +1,4 @@
+{
+ "group_id": 28,
+ "group_name": "特惠专场"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupPropertyModifyResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupPropertyModifyResponse.json
new file mode 100644
index 00000000..2a4fca09
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Group/MerchantGroupPropertyModifyResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "success"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderCloseRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderCloseRequest.json
new file mode 100644
index 00000000..30784970
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderCloseRequest.json
@@ -0,0 +1,3 @@
+{
+ "order_id": "7197417460812584720"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderCloseResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderCloseResponse.json
new file mode 100644
index 00000000..2a4fca09
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderCloseResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "success"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderGetByFilterRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderGetByFilterRequest.json
new file mode 100644
index 00000000..50431e5d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderGetByFilterRequest.json
@@ -0,0 +1,5 @@
+{
+ "status": 2,
+ "begintime": 1397130460,
+ "endtime": 1397130470
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderGetByFilterResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderGetByFilterResponse.json
new file mode 100644
index 00000000..de087e20
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderGetByFilterResponse.json
@@ -0,0 +1,75 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "order_list": [
+ {
+ "order_id": "7197417460812533543",
+ "order_status": 6,
+ "order_total_price": 6,
+ "order_create_time": 1394635817,
+ "order_express_price": 5,
+ "buyer_openid": "oDF3iY17NsDAW4UP2qzJXPsz1S9Q",
+ "buyer_nick": "likeacat",
+ "receiver_name": "张小猫",
+ "receiver_province": "广东省",
+ "receiver_city": "广州市",
+ "receiver_address": "华景路一号南方通信大厦5楼",
+ "receiver_mobile": "123456",
+ "receiver_phone": "123456",
+ "product_id": "pDF3iYx7KDQVGzB7kDg6Tge5OKFo",
+ "product_name": "安莉芳E-BRA专柜女士舒适内衣蕾丝3/4薄杯聚拢上托性感文胸KB0716",
+ "product_price": 1,
+ "product_sku": "10000983:10000995;10001007:10001010",
+ "product_count": 1,
+ "product_img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2icND8WwMThBEcehjhDv2icY4GrDSG5RLM3B2qd9kOicWGVJcsAhvXfibhWRNoGOvCfMC33G9z5yQr2Qw/0",
+ "delivery_id": "1900659372473",
+ "delivery_company": "059Yunda",
+ "trans_id": "1900000109201404103172199813",
+ "products": [
+ {
+ "product_id": "p8BCTv77lY4io_q00F9qsaniimFc",
+ "product_name": "product_name",
+ "product_price": 1,
+ "product_sku": "",
+ "product_count": 1,
+ "product_img": "http://mmbiz.qpic.cn/mmbiz_gif/KfrZwACMrmxj8XRiaTUzFNsTkWdTEJySicGKMHxuG0ibDfjTtb6ZIjNgakbnKq569TbBjvicSnWdnt46gEKjWe6Vcg/0?wx_fmt=gif"
+ }
+ ]
+ },
+ {
+ "order_id": "7197417460812533569",
+ "order_status": 8,
+ "order_total_price": 1,
+ "order_create_time": 1394636235,
+ "order_express_price": 0,
+ "buyer_openid": "oDF3iY17NsDAW4UP2qzJXPsz1S9Q",
+ "buyer_nick": "likeacat",
+ "receiver_name": "张小猫",
+ "receiver_province": "广东省",
+ "receiver_city": "广州市",
+ "receiver_address": "华景路一号南方通信大厦5楼",
+ "receiver_mobile": "123456",
+ "receiver_phone": "123456",
+ "product_id": "pDF3iYx7KDQVGzB7kDg6Tge5OKFo",
+ "product_name": "项坠333",
+ "product_price": 1,
+ "product_sku": "1075741873:1079742377",
+ "product_count": 1,
+ "product_img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2icND8WwMThBEcehjhDv2icY4GrDSG5RLM3B2qd9kOicWGVJcsAhvXfibhWRNoGOvCfMC33G9z5yQr2Qw/0",
+ "delivery_id": "1900659372473",
+ "delivery_company": "059Yunda",
+ "trans_id": "1900000109201404103172199813",
+ "products": [
+ {
+ "product_id": "p8BCTv77lY4io_q00F9qsaniimFc",
+ "product_name": "product_name",
+ "product_price": 1,
+ "product_sku": "",
+ "product_count": 1,
+ "product_img": "http://mmbiz.qpic.cn/mmbiz_gif/KfrZwACMrmxj8XRiaTUzFNsTkWdTEJySicGKMHxuG0ibDfjTtb6ZIjNgakbnKq569TbBjvicSnWdnt46gEKjWe6Vcg/0?wx_fmt=gif"
+ }
+ ]
+
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderGetByIdRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderGetByIdRequest.json
new file mode 100644
index 00000000..30784970
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderGetByIdRequest.json
@@ -0,0 +1,3 @@
+{
+ "order_id": "7197417460812584720"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderGetByIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderGetByIdResponse.json
new file mode 100644
index 00000000..461e577e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderGetByIdResponse.json
@@ -0,0 +1,39 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "order": {
+ "order_id": "7197417460812533543",
+ "order_status": 6,
+ "order_total_price": 6,
+ "order_create_time": 1394635817,
+ "order_express_price": 5,
+ "buyer_openid": "oDF3iY17NsDAW4UP2qzJXPsz1S9Q",
+ "buyer_nick": "likeacat",
+ "receiver_name": "张小猫",
+ "receiver_province": "广东省",
+ "receiver_city": "广州市",
+ "receiver_zone": "天河区",
+ "receiver_address": "华景路一号南方通信大厦5楼",
+ "receiver_mobile": "123456789",
+ "receiver_phone": "123456789",
+ "product_id": "pDF3iYx7KDQVGzB7kDg6Tge5OKFo",
+ "product_name": "安莉芳E-BRA专柜女士舒适内衣蕾丝3/4薄杯聚拢上托性感文胸KB0716",
+ "product_price": 1,
+ "product_sku": "10000983:10000995;10001007:10001010",
+ "product_count": 1,
+ "product_img": "http://img2.paipaiimg.com/00000000/item-52B87243-63CCF66C00000000040100003565C1EA.0.300x300.jpg",
+ "delivery_id": "1900659372473",
+ "delivery_company": "059Yunda",
+ "trans_id": "1900000109201404103172199813",
+ "products": [
+ {
+ "product_id": "p8BCTv77lY4io_q00F9qsaniimFc",
+ "product_name": "product_name",
+ "product_price": 1,
+ "product_sku": "",
+ "product_count": 1,
+ "product_img": "http://mmbiz.qpic.cn/mmbiz_gif/KfrZwACMrmxj8XRiaTUzFNsTkWdTEJySicGKMHxuG0ibDfjTtb6ZIjNgakbnKq569TbBjvicSnWdnt46gEKjWe6Vcg/0?wx_fmt=gif"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderSetDeliveryRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderSetDeliveryRequest.json
new file mode 100644
index 00000000..a5139c38
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderSetDeliveryRequest.json
@@ -0,0 +1,7 @@
+{
+ "order_id": "7197417460812533543",
+ "delivery_company": "059Yunda",
+ "delivery_track_no": "1900659372473",
+ "need_delivery": 1,
+ "is_others": 0
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderSetDeliveryResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderSetDeliveryResponse.json
new file mode 100644
index 00000000..2a4fca09
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Order/MerchantOrderSetDeliveryResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "success"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantCreateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantCreateRequest.json
new file mode 100644
index 00000000..70175677
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantCreateRequest.json
@@ -0,0 +1,95 @@
+{
+ "product_base": {
+ "category_id": [
+ "537074298"
+ ],
+ "property": [
+ {
+ "id": "1075741879",
+ "vid": "1079749967"
+ },
+ {
+ "id": "1075754127",
+ "vid": "1079795198"
+ },
+ {
+ "id": "1075777334",
+ "vid": "1079837440"
+ }
+ ],
+ "name": "testaddproduct",
+ "sku_info": [
+ {
+ "id": "1075741873",
+ "vid": [
+ "1079742386",
+ "1079742363"
+ ]
+ }
+ ],
+ "main_img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjD3ulEKogfsiaua49pvLfUS8Ym0GSYjViaLic0FD3vN0V8PILcibEGb2fPfEOmw/0",
+ "img": [
+ "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjD3ulEKogfsiaua49pvLfUS8Ym0GSYjViaLic0FD3vN0V8PILcibEGb2fPfEOmw/0"
+ ],
+ "detail": [
+ {
+ "text": "test first"
+ },
+ {
+ "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjD3ul1UcLcwxrFdwTKYhH9Q5YZoCfX4Ncx655ZK6ibnlibCCErbKQtReySaVA/0"
+ },
+ {
+ "text": "test again"
+ }
+ ],
+ "buy_limit": 10
+ },
+ "sku_list": [
+ {
+ "sku_id": "1075741873:1079742386",
+ "price": 30,
+ "icon_url": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl28bJj62XgfHPibY3ORKicN1oJ4CcoIr4BMbfA8LqyyjzOZzqrOGz3f5KWq1QGP3fo6TOTSYD3TBQjuw/0",
+ "product_code": "testing",
+ "ori_price": 9000000,
+ "quantity": 800
+ },
+ {
+ "sku_id": "1075741873:1079742363",
+ "price": 30,
+ "icon_url": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl28bJj62XgfHPibY3ORKicN1oJ4CcoIr4BMbfA8LqyyjzOZzqrOGz3f5KWq1QGP3fo6TOTSYD3TBQjuw/0",
+ "product_code": "testingtesting",
+ "ori_price": 9000000,
+ "quantity": 800
+ }
+ ],
+ "attrext": {
+ "location": {
+ "country": "中国",
+ "province": "广东省",
+ "city": "广州市",
+ "address": "T.I.T创意园"
+ },
+ "isPostFree": 0,
+ "isHasReceipt": 1,
+ "isUnderGuaranty": 0,
+ "isSupportReplace": 0
+ },
+ "delivery_info": {
+ "delivery_type": 0,
+ "template_id": 0,
+ "express": [
+ {
+ "id": 10000027,
+ "price": 100
+ },
+ {
+ "id": 10000028,
+ "price": 100
+ },
+ {
+ "id": 10000029,
+ "price": 100
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantCreateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantCreateResponse.json
new file mode 100644
index 00000000..377ccdd6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantCreateResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "product_id": "pDF3iYwktviE3BzU3BKiSWWi9Nkw"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantDeleteRequest.json
new file mode 100644
index 00000000..d0c77f6a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantDeleteRequest.json
@@ -0,0 +1,3 @@
+{
+ "product_id": "pDF3iYwktviE3BzU3BKiSWWi9Nkw"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantDeleteResponse.json
new file mode 100644
index 00000000..2a4fca09
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantDeleteResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "success"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantGetByStatusRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantGetByStatusRequest.json
new file mode 100644
index 00000000..ca91e707
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantGetByStatusRequest.json
@@ -0,0 +1,3 @@
+{
+ "status": 0
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantGetByStatusResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantGetByStatusResponse.json
new file mode 100644
index 00000000..628d28cf
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantGetByStatusResponse.json
@@ -0,0 +1,14 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "products_info": [
+ {
+ "product_base": {},
+ "sku_list": [],
+ "attrext": {},
+ "delivery_info": {},
+ "product_id": "pDF3iY-mql6CncpbVajaB_obC3Bk",
+ "status": 1
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantGetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantGetRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantGetRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantGetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantGetResponse.json
new file mode 100644
index 00000000..f8a13a15
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantGetResponse.json
@@ -0,0 +1,76 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "product_info": {
+ "product_id": "pDF3iY6Kr_BV_CXaiYysoGqJhppQ",
+ "product_base": {
+ "name": "testaddproduct",
+ "category_id": [
+ "537074298"
+ ],
+ "img": [
+ "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjD3ulEKogfsiaua49pvLfUS8Ym0GSYjViaLic0FD3vN0V8PILcibEGb2fPfEOmw/0"
+ ],
+ "property": [
+ {
+ "id": "品牌",
+ "vid": "Fujifilm/富士"
+ },
+ {
+ "id": "屏幕尺寸",
+ "vid": "1.8英寸"
+ },
+ {
+ "id": "防抖性能",
+ "vid": "CCD防抖"
+ }
+ ],
+ "sku_info": [
+ {
+ "id": "1075741873",
+ "vid": [
+ "1079742386",
+ "1079742363"
+ ]
+ }
+ ],
+ "buy_limit": 10,
+ "main_img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjD3ulEKogfsiaua49pvLfUS8Ym0GSYjViaLic0FD3vN0V8PILcibEGb2fPfEOmw/0",
+ "detail_html": "test
test again
"
+ },
+ "sku_list": [
+ {
+ "sku_id": "1075741873:1079742386",
+ "price": 30,
+ "icon_url": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjD3ulEKogfsiaua49pvLfUS8Ym0GSYjViaLic0FD3vN0V8PILcibEGb2fPfEOmw/0",
+ "quantity": 800,
+ "product_code": "testing",
+ "ori_price": 9000000
+ },
+ {
+ "sku_id": "1075741873:1079742363",
+ "price": 30,
+ "icon_url": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl28bJj62XgfHPibY3ORKicN1oJ4CcoIr4BMbfA8LqyyjzOZzqrOGz3f5KWq1QGP3fo6TOTSYD3TBQjuw/0",
+ "quantity": 800,
+ "product_code": "testingtesting",
+ "ori_price": 9000000
+ }
+ ],
+ "attrext": {
+ "isPostFree": 0,
+ "isHasReceipt": 1,
+ "isUnderGuaranty": 0,
+ "isSupportReplace": 0,
+ "location": {
+ "country": "中国",
+ "province": "广东省",
+ "city": "广州市",
+ "address": "T.I.T创意园"
+ }
+ },
+ "delivery_info": {
+ "delivery_type": 1,
+ "template_id": 103312920
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantModifyProductStatusRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantModifyProductStatusRequest.json
new file mode 100644
index 00000000..294ce436
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantModifyProductStatusRequest.json
@@ -0,0 +1,4 @@
+{
+ "product_id": "p0FfkjnSNm4NQj0_4a9l9MtRRxzA",
+ "status": 0
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantModifyProductStatusResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantModifyProductStatusResponse.json
new file mode 100644
index 00000000..2a4fca09
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantModifyProductStatusResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "success"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantUpdateRequest.json
new file mode 100644
index 00000000..0d46389b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantUpdateRequest.json
@@ -0,0 +1,90 @@
+{
+ "product_id": "pDF3iY6Kr_BV_CXaiYysoGqJhppQ",
+ "product_base": {
+ "category_id": [
+ "537074298"
+ ],
+ "property": [
+ {
+ "id": "1075741879",
+ "vid": "1079749967"
+ },
+ {
+ "id": "1075754127",
+ "vid": "1079795198"
+ },
+ {
+ "id": "1075777334",
+ "vid": "1079837440"
+ }
+ ],
+ "name": "testaddproduct",
+ "sku_info": [
+ {
+ "id": "1075741873",
+ "vid": [
+ "1079742386",
+ "1079742363"
+ ]
+ }
+ ],
+ "main_img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjD3ulEKogfsiaua49pvLfUS8Ym0GSYjViaLic0FD3vN0V8PILcibEGb2fPfEOmw/0",
+ "img": [
+ "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjD3ulEKogfsiaua49pvLfUS8Ym0GSYjViaLic0FD3vN0V8PILcibEGb2fPfEOmw/0"
+ ],
+ "detail": [
+ {
+ "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjD3ul1UcLcwxrFdwTKYhH9Q5YZoCfX4Ncx655ZK6ibnlibCCErbKQtReySaVA/0"
+ }
+ ],
+ "buy_limit": 3
+ },
+ "sku_list": [
+ {
+ "sku_id": "1075741873:1079742386",
+ "price": 30,
+ "icon_url": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjD3ulEKogfsiaua49pvLfUS8Ym0GSYjViaLic0FD3vN0V8PILcibEGb2fPfEOmw/0",
+ "product_code": "testing",
+ "ori_price": 9000000,
+ "quantity": 800
+ },
+ {
+ "sku_id": "1075741873:1079742363",
+ "price": 30,
+ "icon_url": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl28bJj62XgfHPibY3ORKicN1oJ4CcoIr4BMbfA8LqyyjzOZzqrOGz3f5KWq1QGP3fo6TOTSYD3TBQjuw/0",
+ "product_code": "testingtesting",
+ "ori_price": 9000000,
+ "quantity": 800
+ }
+ ],
+ "attrext": {
+ "location": {
+ "country": "中国",
+ "province": "广东省",
+ "city": "广州市",
+ "address": "T.I.T创意园"
+ },
+ "isPostFree": 0,
+ "isHasReceipt": 1,
+ "isUnderGuaranty": 0,
+ "isSupportReplace": 0
+ },
+ "delivery_info": {
+ "delivery_type": 0,
+ "template_id": 0,
+ "express": [
+ {
+ "id": 10000027,
+ "price": 100
+ },
+ {
+ "id": 10000028,
+ "price": 100
+ },
+ {
+ "id": 10000029,
+ "price": 100
+ }
+ ]
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantUpdateResponse.json
new file mode 100644
index 00000000..2a4fca09
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Product/MerchantUpdateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "success"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfAddRequest.json
new file mode 100644
index 00000000..b03c8636
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfAddRequest.json
@@ -0,0 +1,79 @@
+{
+ "shelf_data": {
+ "module_infos": [
+ {
+ "group_info": {
+ "filter": {
+ "count": 2
+ },
+ "group_id": 50
+ },
+ "eid": 1
+ },
+ {
+ "group_infos": {
+ "groups": [
+ {
+ "group_id": 49
+ },
+ {
+ "group_id": 50
+ },
+ {
+ "group_id": 51
+ }
+ ]
+ },
+ "eid": 2
+ },
+ {
+ "group_info": {
+ "group_id": 52,
+ "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5Jm64z4I0TTicv0TjN7Vl9bykUUibYKIOjicAwIt6Oy0Y6a1Rjp5Tos8tg/0"
+ },
+ "eid": 3
+ },
+ {
+ "group_infos": {
+ "groups": [
+ {
+ "group_id": 49,
+ "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5uUQx7TLx4tB9qZfbe3JmqR4NkkEmpb5LUWoXF1ek9nga0IkeSSFZ8g/0"
+ },
+ {
+ "group_id": 50,
+ "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5G1kdy3ViblHrR54gbCmbiaMnl5HpLGm5JFeENyO9FEZAy6mPypEpLibLA/0"
+ },
+ {
+ "group_id": 52,
+ "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5uUQx7TLx4tB9qZfbe3JmqR4NkkEmpb5LUWoXF1ek9nga0IkeSSFZ8g/0"
+ }
+ ]
+ },
+ "eid": 4
+ },
+ {
+ "group_infos": {
+ "groups": [
+ {
+ "group_id": 43
+ },
+ {
+ "group_id": 44
+ },
+ {
+ "group_id": 45
+ },
+ {
+ "group_id": 46
+ }
+ ],
+ "img_background": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5uUQx7TLx4tB9qZfbe3JmqR4NkkEmpb5LUWoXF1ek9nga0IkeSSFZ8g/0"
+ },
+ "eid": 5
+ }
+ ]
+ },
+ "shelf_banner": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2ibrWQn8zWFUh1YznsMV0XEiavFfLzDWYyvQOBBszXlMaiabGWzz5B2KhNn2IDemHa3iarmCyribYlZYyw/0",
+ "shelf_name": "测试货架"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfAddResponse.json
new file mode 100644
index 00000000..8ce6672b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfAddResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "shelf_id": 12
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfDeleteRequest.json
new file mode 100644
index 00000000..c092f00a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfDeleteRequest.json
@@ -0,0 +1,3 @@
+{
+ "shelf_id": 19
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfDeleteResponse.json
new file mode 100644
index 00000000..2a4fca09
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfDeleteResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "success"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfGetAllRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfGetAllRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfGetAllRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfGetAllResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfGetAllResponse.json
new file mode 100644
index 00000000..d0415238
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfGetAllResponse.json
@@ -0,0 +1,53 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "shelves": [
+ {
+ "shelf_info": {
+ "module_infos": [
+ {
+ "group_infos": {
+ "groups": [
+ {
+ "group_id": 200080093
+ },
+ {
+ "group_id": 200080118
+ },
+ {
+ "group_id": 200080119
+ },
+ {
+ "group_id": 200080135
+ }
+ ],
+ "img_background": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl294FzPwnf9dAcaN7ButStztAZyy2yHY8pW6sTQKicIhAy5F0a2CqmrvDBjMFLtc2aEhAQ7uHsPow9A/0"
+ },
+ "eid": 5
+ }
+ ]
+ },
+ "shelf_banner": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl294FzPwnf9dAcaN7ButStztAZyy2yHY8pW6sTQKicIhAy5F0a2CqmrvDBjMFLtc2aEhAQ7uHsPow9A/0",
+ "shelf_name": "新新人类",
+ "shelf_id": 22
+ },
+ {
+ "shelf_info": {
+ "module_infos": [
+ {
+ "group_info": {
+ "group_id": 200080119,
+ "filter": {
+ "count": 4
+ }
+ },
+ "eid": 1
+ }
+ ]
+ },
+ "shelf_banner": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl294FzPwnf9dAcaN7ButStztAZyy2yHY8pW6sTQKicIhAy5F0a2CqmrvDBjMFLtc2aEhAQ7uHsPow9A/0",
+ "shelf_name": "店铺",
+ "shelf_id": 23
+ }
+ ]
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfGetByIdRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfGetByIdRequest.json
new file mode 100644
index 00000000..c092f00a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfGetByIdRequest.json
@@ -0,0 +1,3 @@
+{
+ "shelf_id": 19
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfGetByIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfGetByIdResponse.json
new file mode 100644
index 00000000..529692bc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfGetByIdResponse.json
@@ -0,0 +1,10 @@
+{
+ "errcode": 0,
+ "errmsg": "success",
+ "shelf_info": {
+ "module_infos": []
+ },
+ "shelf_banner": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2ibp2DgDXiaic6WdflMpNdInS8qUia2BztlPu1gPlCDLZXEjia2qBdjoLiaCGUno9zbs1UyoqnaTJJGeEew/0",
+ "shelf_name": "新建货架",
+ "shelf_id": 97
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfModifyRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfModifyRequest.json
new file mode 100644
index 00000000..2f32fce4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfModifyRequest.json
@@ -0,0 +1,80 @@
+{
+ "shelf_id": 12,
+ "shelf_data": {
+ "module_infos": [
+ {
+ "group_info": {
+ "filter": {
+ "count": 2
+ },
+ "group_id": 50
+ },
+ "eid": 1
+ },
+ {
+ "group_infos": {
+ "groups": [
+ {
+ "group_id": 49
+ },
+ {
+ "group_id": 50
+ },
+ {
+ "group_id": 51
+ }
+ ]
+ },
+ "eid": 2
+ },
+ {
+ "group_info": {
+ "group_id": 52,
+ "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5Jm64z4I0TTicv0TjN7Vl9bykUUibYKIOjicAwIt6Oy0Y6a1Rjp5Tos8tg/0"
+ },
+ "eid": 3
+ },
+ {
+ "group_infos": {
+ "groups": [
+ {
+ "group_id": 49,
+ "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5uUQx7TLx4tB9qZfbe3JmqR4NkkEmpb5LUWoXF1ek9nga0IkeSSFZ8g/0"
+ },
+ {
+ "group_id": 50,
+ "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5G1kdy3ViblHrR54gbCmbiaMnl5HpLGm5JFeENyO9FEZAy6mPypEpLibLA/0"
+ },
+ {
+ "group_id": 52,
+ "img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5uUQx7TLx4tB9qZfbe3JmqR4NkkEmpb5LUWoXF1ek9nga0IkeSSFZ8g/0"
+ }
+ ]
+ },
+ "eid": 4
+ },
+ {
+ "group_infos": {
+ "groups": [
+ {
+ "group_id": 43
+ },
+ {
+ "group_id": 44
+ },
+ {
+ "group_id": 45
+ },
+ {
+ "group_id": 46
+ }
+ ],
+ "img_background": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl29nqqObBwFwnIX3licVPnFV5uUQx7TLx4tB9qZfbe3JmqR4NkkEmpb5LUWoXF1ek9nga0IkeSSFZ8g/0"
+ },
+ "eid": 5
+ }
+ ]
+ },
+ "shelf_banner": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2ibrWQn8zWFUh1YznsMV0XEiavFfLzDWYyvQOBBszXlMaiabGWzz5B2KhNn2IDemHa3iarmCyribYlZYyw/0",
+ "shelf_name": "测试货架"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfModifyResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfModifyResponse.json
new file mode 100644
index 00000000..2a4fca09
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Shelf/MerchantShelfModifyResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "success"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Stock/MerchantStockAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Stock/MerchantStockAddRequest.json
new file mode 100644
index 00000000..82094068
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Stock/MerchantStockAddRequest.json
@@ -0,0 +1,5 @@
+{
+ "product_id": "pDF3iY5EYkMxs4-tF8xedyES5GQI",
+ "sku_info": "10000983:10000995;10001007:10001010",
+ "quantity": 20
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Stock/MerchantStockAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Stock/MerchantStockAddResponse.json
new file mode 100644
index 00000000..2a4fca09
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Stock/MerchantStockAddResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "success"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Stock/MerchantStockReduceRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Stock/MerchantStockReduceRequest.json
new file mode 100644
index 00000000..82094068
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Stock/MerchantStockReduceRequest.json
@@ -0,0 +1,5 @@
+{
+ "product_id": "pDF3iY5EYkMxs4-tF8xedyES5GQI",
+ "sku_info": "10000983:10000995;10001007:10001010",
+ "quantity": 20
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Stock/MerchantStockReduceResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Stock/MerchantStockReduceResponse.json
new file mode 100644
index 00000000..2a4fca09
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Merchant/Stock/MerchantStockReduceResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "success"
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxCreateBillCardRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxCreateBillCardRequest.json
new file mode 100644
index 00000000..2f69dbef
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxCreateBillCardRequest.json
@@ -0,0 +1,8 @@
+{
+ "invoice_info": {
+ "payee": "测试非税票据",
+ "base_info": {
+ "logo_url": "http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFNjakmxibMLGWpXrEXB33367o7zHN0CwngnQY7zb7g/0"
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxCreateBillCardResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxCreateBillCardResponse.json
new file mode 100644
index 00000000..091e7d56
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxCreateBillCardResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "card_id": "pjZ8Yt9WoOePThU0NfUKz5-tBEWU"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxGetBillAuthUrlRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxGetBillAuthUrlRequest.json
new file mode 100644
index 00000000..8666b26b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxGetBillAuthUrlRequest.json
@@ -0,0 +1,9 @@
+{
+ "s_pappid": "wxabcd",
+ "order_id": "1234",
+ "money": 11,
+ "timestamp": 1474875876,
+ "source": "web",
+ "redirect_url": "https://mp.weixin.qq.com",
+ "ticket": "tttt"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxGetBillAuthUrlResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxGetBillAuthUrlResponse.json
new file mode 100644
index 00000000..b2320d06
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxGetBillAuthUrlResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "auth_url": "http://auth_url",
+ "expire_time": 7200
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxInsertBillRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxInsertBillRequest.json
new file mode 100644
index 00000000..4a4ed698
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxInsertBillRequest.json
@@ -0,0 +1,17 @@
+{
+ "order_id": "1511169724",
+ "card_ext": {
+ "user_card": {
+ "invoice_user_data": {
+ "billing_time": "1511169724",
+ "billing_code": "aabbccdd",
+ "billing_no": "1511169724",
+ "s_pdf_media_id": "s_pdf_media_id",
+ "fee": 123,
+ "title": "灌哥发票"
+ }
+ }
+ },
+ "card_id": "pjZ8Yt7xiy3b9UfffRIA4Tm2xTnw",
+ "appid": "wxc0b84a53ed8e8d29"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxInsertBillResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxInsertBillResponse.json
new file mode 100644
index 00000000..7d93b4c0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Bill/NontaxInsertBillResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "code": "682xxxx661927",
+ "openid": "ojZ8Ytz4lESxxxx_R1TvB2Kds"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxDownloadBillRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxDownloadBillRequest.json
new file mode 100644
index 00000000..5a0869a4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxDownloadBillRequest.json
@@ -0,0 +1,6 @@
+{
+ "appid": "wx6cc9648de104270d",
+ "mch_id": "1900016021",
+ "bill_date": "20170925",
+ "bill_type": "ALL"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxDownloadBillResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxDownloadBillResponse.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxDownloadBillResponse.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetOrderListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetOrderListRequest.json
new file mode 100644
index 00000000..5c9af144
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetOrderListRequest.json
@@ -0,0 +1,6 @@
+{
+ "appid": "wx5f6e43071809a9dd",
+ "payment_notice_no": "34000019081115065040",
+ "department_code": "065080906",
+ "region_code": "340000"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetOrderListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetOrderListResponse.json
new file mode 100644
index 00000000..99cd4bb9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetOrderListResponse.json
@@ -0,0 +1,13 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "order_id_list": [
+ "AQCAxFJwcrQqI2BkDAqRH-UhDq2D",
+ "AQAAgrVxcrRuhXBkDAqRH-UhDq2D",
+ "AQCAFxFzcrQqI2BkDAqRH-UhDq2D",
+ "AQCA5_3kcrSQCxMJDAGMadMAAAAA",
+ "AQCA6ADlcrQqI2BkDAGMadMAAAAA",
+ "AQCA62hwdbQqI2BkDAqRH-U4tE4p"
+ ],
+ "paid_order_id": "AQCA62hwdbQqI2BkDAqRH-U4tE4p"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetOrderRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetOrderRequest.json
new file mode 100644
index 00000000..d24ab7ad
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetOrderRequest.json
@@ -0,0 +1,4 @@
+{
+ "appid": "wx5f6e43071809a9dd",
+ "order_id": "AQCAGxwqp6-aBeIKDJ7fvb6x3dZt"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetOrderResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetOrderResponse.json
new file mode 100644
index 00000000..d18de195
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetOrderResponse.json
@@ -0,0 +1,92 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "appid": "wx5f6e43071809a9dd",
+ "openid": "ont-9vjAcIdSU-LgB7ubALAVJO9U",
+ "order_id": "AQCAGxwqp6-aBeIKDJ7fvb6x3dZt",
+ "create_time": 1508847678,
+ "pay_finish_time": 0,
+ "desc": "测试办证缴费",
+ "fee": 1,
+ "fee_type": 1,
+ "trans_id": "",
+ "status": 12,
+ "bank_id": "test_bank_id",
+ "bank_name": "测试_银行",
+ "bank_account": "6215385809487657",
+ "refund_finish_time": 0,
+ "items": [
+ {
+ "no": 1,
+ "item_id": "000001",
+ "item_name": "测试办证缴费1",
+ "overdue": 0,
+ "fee": 1
+ },
+ {
+ "no": 2,
+ "item_id": "000002",
+ "item_name": "测试办证缴费2",
+ "overdue": 0,
+ "fee": 0
+ }
+ ],
+ "bill_type_code": "",
+ "bill_no": "",
+ "payment_info_source": 2,
+ "payment_notice_no": "08111639088",
+ "department_code": "118610002",
+ "department_name": "测试执收单位",
+ "payment_notice_type": 1,
+ "region_code": "440000",
+ "notify_history": [
+ {
+ "appid": "wx5f6e43071809a9dd",
+ "name": "测试财政",
+ "notify_detail": [
+ {
+ "notify_time": 1524023367,
+ "ret": 0,
+ "cost_time": 39,
+ "wxnontaxstr": "2ba37f90d155d390",
+ "status": 3,
+ "errcode": 0,
+ "errmsg": ""
+ }
+ ],
+ "notify_cnt": 1
+ },
+ {
+ "appid": "wxefd0818f53b9b82f",
+ "name": "测试委办局",
+ "notify_detail": [
+ {
+ "notify_time": 1524023367,
+ "ret": 0,
+ "cost_time": 20,
+ "wxnontaxstr": "f7ad824e08ac4bc5",
+ "status": 3,
+ "errcode": 0,
+ "errmsg": ""
+ }
+ ],
+ "notify_cnt": 1
+ },
+ {
+ "appid": "wxf1bfa94c33668abf",
+ "name": "测试银行",
+ "notify_detail": [
+ {
+ "notify_time": 1524023367,
+ "ret": 0,
+ "cost_time": 18,
+ "wxnontaxstr": "2e628b6f1e3e9bf3",
+ "status": 3,
+ "errcode": 0,
+ "errmsg": ""
+ }
+ ],
+ "notify_cnt": 1
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetRealNameRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetRealNameRequest.json
new file mode 100644
index 00000000..7298400c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetRealNameRequest.json
@@ -0,0 +1,3 @@
+{
+ "wx_realname_token": "8e1e219ec15953101515058721"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetRealNameResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetRealNameResponse.json
new file mode 100644
index 00000000..8f43440d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxGetRealNameResponse.json
@@ -0,0 +1,8 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "key_encrypt_type": "RSA",
+ "data_encrypt_type": "AES_ECB",
+ "data": "f06i5EaQQiBV5uXoKcfjYFkT/UKGGuU77sVlMjpC0kKea/wz9Ow1WPlD19w3g1vXFgBqHykP1s+Iy3LjfiqYNQ==",
+ "key": "V60tpxnZPsBfFQhEnCWVeetm07OUk3PyH4PYozNlK1WxaYqbLAnKld/sMN+pjo8Td6mhAImcOq7Sue8h0SxGzTA4o3Wf32ff2IoUbTHPO0AgkpZJy36eECkY/TklgaVqPtqE9iJ66Qt+0/GM3pdQ3f8FYMVmkvK6m53aHn1u6cX6mL0nbYBfVOpyGOh3iIuHnBCW3IeXXa41D6DbHrzmeKbBi6T56wxHLYnmMB7P20+EzSdCQZzeY1MtdT0TT1KrlkZsL2fYKcjg/ytvGiEewH/jY4zf83AVJW3KjSDJaLZGXYsPvNHopAQTP9jz/hUtIa2fDgSAi3mGdxDsJcesmQ=="
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxMicroPayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxMicroPayRequest.json
new file mode 100644
index 00000000..75f07dc5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxMicroPayRequest.json
@@ -0,0 +1,31 @@
+{
+ "appid": "wx5f6e43071809a9dd",
+ "bank_id": "test_bank_id",
+ "bank_account": "",
+ "desc": "测试办证缴费",
+ "fee": 1,
+ "user_name": "*三强",
+ "items": [
+ {
+ "no": 1,
+ "item_id": "000001",
+ "item_name": "测试办证缴费1",
+ "overdue": 0,
+ "fee": 1
+ },
+ {
+ "no": 2,
+ "item_id": "000002",
+ "item_name": "测试办证缴费2",
+ "overdue": 0,
+ "fee": 0
+ }
+ ],
+ "payment_notice_create_time": 1500967298,
+ "payment_expire_date": "20190102",
+ "payment_notice_no": " 08111639088",
+ "department_code": "118610002",
+ "department_name": "测试执收单位",
+ "region_code": "440000",
+ "auth_code": " 134971951305811268"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxMicroPayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxMicroPayResponse.json
new file mode 100644
index 00000000..29e90206
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxMicroPayResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "order_id": "AQAA_UjjdbLiUjMKDJ7fvb4AAAAA"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxNotifyInconsistentOrderRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxNotifyInconsistentOrderRequest.json
new file mode 100644
index 00000000..53dbba84
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxNotifyInconsistentOrderRequest.json
@@ -0,0 +1,4 @@
+{
+ "appid": "wx6cc9648de104270d",
+ "order_id": "AQCAGxwqp6-aBeIKDJ7fvb6x3dZt"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxNotifyInconsistentOrderResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxNotifyInconsistentOrderResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxNotifyInconsistentOrderResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxQueryFeeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxQueryFeeRequest.json
new file mode 100644
index 00000000..4fb861d5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxQueryFeeRequest.json
@@ -0,0 +1,9 @@
+{
+ "appid": "wx5f6e43071809a9dd",
+ "service_id": 123,
+ "bank_id": "470690268",
+ "payment_notice_no": "440204190185356",
+ "department_code": "143605002004",
+ "payment_notice_type": 1,
+ "region_code": "440000"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxQueryFeeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxQueryFeeResponse.json
new file mode 100644
index 00000000..73c17674
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxQueryFeeResponse.json
@@ -0,0 +1,21 @@
+{
+ "department_code": "143605002004",
+ "department_name": "韶关市公安局交警支队市区一大队",
+ "errcode": 0,
+ "errmsg": "通知书未缴款",
+ "fee": 20000,
+ "items": [
+ {
+ "fee": 20000,
+ "item_id": "103050101200",
+ "item_name": "交通违法罚款",
+ "no": 1,
+ "overdue": 0
+ }
+ ],
+ "payment_notice_create_time": 1508806661,
+ "payment_notice_no": "440204190185356",
+ "payment_notice_type": 1,
+ "region_code": "440000",
+ "user_name": "叶*梅"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxRefundRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxRefundRequest.json
new file mode 100644
index 00000000..bbaab5b0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxRefundRequest.json
@@ -0,0 +1,5 @@
+{
+ "appid": "wx6cc9648de104270d",
+ "order_id": "AQCAGxwqp6-aBeIKDJ7fvb6x3dZt",
+ "reason": "线上线下重复缴费,解档票据号为DA01651861"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxRefundResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxRefundResponse.json
new file mode 100644
index 00000000..c1e23335
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxRefundResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "refund_order_id": "xxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxUnifiedOrderRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxUnifiedOrderRequest.json
new file mode 100644
index 00000000..a6187094
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxUnifiedOrderRequest.json
@@ -0,0 +1,27 @@
+{
+ "appid": "wx5f6e43071809a9dd",
+ "bank_account": "",
+ "bank_id": "test_bank_id",
+ "department_code": "1",
+ "department_name": "test",
+ "desc": "测试缴费",
+ "fee": 2,
+ "ip": "113.68.115.241",
+ "items": [
+ {
+ "fee": 2,
+ "item_id": "103050101200",
+ "item_name": "测试缴费2",
+ "no": 1,
+ "overdue": 0
+ }
+ ],
+ "openid": "ont-9vjAcIdSU-LgB7ubALAVJO9U",
+ "payment_expire_date": "",
+ "payment_notice_no": "08111639088",
+ "payment_notice_type": 1,
+ "region_code": "440000",
+ "return_url": "http://cockpouncher.55555.io/nontax-wxpay/pay_demand_result.html?type=showPayResult®ion_code=44000&unitNo=1&payNoticeNo=1",
+ "service_id": 0,
+ "user_name": "张*丰"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxUnifiedOrderResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxUnifiedOrderResponse.json
new file mode 100644
index 00000000..6a16bc57
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/NontaxUnifiedOrderResponse.json
@@ -0,0 +1,7 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "order_id": "AQCAzieFp6-dC8EKDJ7fvb6x3dZt",
+
+ "pay_url": "https://mp.weixin.qq.com/intp/nontax/pay?action=page&order_id=AQCAzieFp6-dC8EKDJ7fvb6x3dZt#wechat_redirect"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehicleEntranceNotifyRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehicleEntranceNotifyRequest.json
new file mode 100644
index 00000000..6cd3c9ea
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehicleEntranceNotifyRequest.json
@@ -0,0 +1,16 @@
+{
+ "appid": "wx5f6e43071809a9dd",
+ "bank_id": "test_bank_id",
+ "mch_id": "1900016021",
+ "region_code": "440000",
+ "trade_scene": "PARKING",
+ "scene_info": {
+ "start_time": 1542351485,
+ "notify_url": "https://weixin.qq.com",
+ "car_type": "小型车",
+ "parking_name": "test_parking_name",
+ "free_time": 1200,
+ "plate_number": "粤B888888",
+ "openid": "ont-9vjAcIdSU-LgB7ubALAVJO9U"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehicleEntranceNotifyResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehicleEntranceNotifyResponse.json
new file mode 100644
index 00000000..28d5ac80
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehicleEntranceNotifyResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "user_state": "NORMAL"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehiclePayApplyRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehiclePayApplyRequest.json
new file mode 100644
index 00000000..9dd744d6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehiclePayApplyRequest.json
@@ -0,0 +1,23 @@
+{
+ "appid": "wx5f6e43071809a9dd",
+ "bank_id": "test_bank_id",
+ "bank_account": "",
+ "mch_id": "1900016021",
+ "payment_notice_no": "1111111111",
+ "department_code": "222222",
+ "payment_notice_type": 1,
+ "region_code": "440000",
+ "department_name": "测试执收单位名称",
+ "desc": "测试desc",
+ "fee": 1,
+ "goods_tag": "",
+ "trade_scene": "PARKING SPACE",
+ "scene_info": {
+ "start_time": 1542351485,
+ "charging_time": 3600,
+ "car_type": "小型车",
+ "parking_name": "test_parking_name",
+ "openid": "ont-9vjAcIdSU-LgB7ubALAVJO9U",
+ "space_number": "D666666"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehiclePayApplyResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehiclePayApplyResponse.json
new file mode 100644
index 00000000..e5b8da98
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehiclePayApplyResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "order_id": "AQAAhNw2srPiUjMKDJ7fvb4AAAAA"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehicleQueryStateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehicleQueryStateRequest.json
new file mode 100644
index 00000000..a7912b53
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehicleQueryStateRequest.json
@@ -0,0 +1,13 @@
+{
+ "appid": "wx5f6e43071809a9dd",
+ "bank_id": "test_bank_id",
+ "bank_account": "",
+ "mch_id": "1900016021",
+ "region_code": "440000",
+ "trade_scene": "PARKING",
+ "jump_scene": "H5",
+ "openid": "ont-9vjAcIdSU-LgB7ubALAVJO9U",
+ "plate_number": "粤B888888",
+ "material_info": "test_material_info",
+ "channel_type": "ETC"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehicleQueryStateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehicleQueryStateResponse.json
new file mode 100644
index 00000000..066d012e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Nontax/Vehicle/NontaxVehicleQueryStateResponse.json
@@ -0,0 +1,23 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "user_state": "NORMAL",
+ "openid": "ont-9vjAcIdSU-LgB7ubALAVJO9U",
+ "path": "https:\/\/payapp.weixin.qq.com\/vehicle\/plat\/indextemplate",
+ "plate_number_info": [],
+ "authorize_package": {
+ "mch_id": "1800004561",
+ "sub_mch_id": "1900016021",
+ "appid": "wxc971985892358997",
+ "sub_appid": "wx6cc9648de104270d",
+ "nonce_str": "SwwVkZWoXlIWX7AG2c3ItkklTo138PEO",
+ "sign_type": "HMAC-SHA256",
+ "sign": "67D1B1232C9837E5885216DA349632AD9CE080BBD2D54DF13314260F4CD5D9C8",
+ "trade_scene": "PARKING",
+ "openid": "ooaLEwgrB9PRsx-IdsJxEQiKgjbQ",
+ "sub_openid": "oFkLxtyJswfbex9crZWHGDYG5NIw",
+ "plate_number": "粤B888888",
+ "material_info": "test_material_info",
+ "channel_type": "ETC"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Operation/WxaGetWxaDevInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Operation/WxaGetWxaDevInfoRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Operation/WxaGetWxaDevInfoRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Operation/WxaGetWxaDevInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Operation/WxaGetWxaDevInfoResponse.json
new file mode 100644
index 00000000..d0516df6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Operation/WxaGetWxaDevInfoResponse.json
@@ -0,0 +1,20 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "requestdomain": [
+ "https://www.example.com"
+ ],
+ "wsrequestdomain": [
+ "wss://www.qq.com"
+ ],
+ "uploaddomain": [],
+ "downloaddomain": [
+ "https://www.qq.com"
+ ],
+ "udpdomain": [
+ "udp://www.example.com"
+ ],
+ "bizdomain": [
+ "https://www.qq.com"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Product/ProductImageUploadRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Product/ProductImageUploadRequest.json
new file mode 100644
index 00000000..2f646da0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Product/ProductImageUploadRequest.json
@@ -0,0 +1,3 @@
+{
+ "img_url": "https://xxx.com/yyy"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Product/ProductImageUploadResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Product/ProductImageUploadResponse.json
new file mode 100644
index 00000000..55631736
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Product/ProductImageUploadResponse.json
@@ -0,0 +1,9 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "pic_file": {
+ "media_id": "xlvjalsdhgas",
+ "pay_media_id": "asdgasvdadfa",
+ "temp_img_url": "xxxxx"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatAdposGeneralRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatAdposGeneralRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatAdposGeneralRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatAdposGeneralResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatAdposGeneralResponse.json
new file mode 100644
index 00000000..f70dadcc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatAdposGeneralResponse.json
@@ -0,0 +1,30 @@
+{
+ "base_resp": {
+ "err_msg": "ok",
+ "ret": 0
+ },
+ "list": [
+ {
+ "slot_id": 3030046789020061,
+ "ad_slot": "SLOT_ID_WEAPP_INTERSTITIAL",
+ "date": "2020-04-13",
+ "req_succ_count": 443610,
+ "exposure_count": 181814,
+ "exposure_rate": 0.409850995,
+ "click_count": 10095,
+ "click_rate": 0.055523777,
+ "income": 52175,
+ "ecpm": 286.969100289
+ }
+ ],
+ "summary": {
+ "req_succ_count": 4406394,
+ "exposure_count": 1797225,
+ "exposure_rate": 0.407867522,
+ "click_count": 100167,
+ "click_rate": 0.055734257,
+ "income": 578003,
+ "ecpm": 321.608591022
+ },
+ "total_num": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatCpsGeneralRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatCpsGeneralRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatCpsGeneralRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatCpsGeneralResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatCpsGeneralResponse.json
new file mode 100644
index 00000000..c7365075
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatCpsGeneralResponse.json
@@ -0,0 +1,28 @@
+{
+ "base_resp": {
+ "err_msg": "ok",
+ "ret": 0
+ },
+ "list": [
+ {
+ "date": "20XX-XX-XX",
+ "exposure_count": 15153,
+ "click_count": 396,
+ "click_rate": 38.265151515,
+ "order_count": 3,
+ "order_rate": 0.007575758,
+ "total_fee": 162900,
+ "total_commission": 25021
+ }
+ ],
+ "summary": {
+ "exposure_count": 117143,
+ "click_count": 3442,
+ "click_rate": 34.033410808,
+ "order_count": 18,
+ "order_rate": 0.005229518,
+ "total_fee": 924082,
+ "total_commission": 133030
+ },
+ "total_num": 7
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatSettlementRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatSettlementRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatSettlementRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatSettlementResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatSettlementResponse.json
new file mode 100644
index 00000000..3efa8f21
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/PublisherStat/PublisherStatSettlementResponse.json
@@ -0,0 +1,33 @@
+{
+ "base_resp": {
+ "err_msg": "ok",
+ "ret": 0
+ },
+ "body": "深圳市腾讯计算机系统有限公司",
+ "penalty_all": 0,
+ "revenue_all": 5178368698,
+ "settled_revenue_all": 2613696765,
+ "settlement_list": [
+ {
+ "date": "2020-03-25",
+ "zone": "2020年3月1日至15日",
+ "month": "202003",
+ "order": 1,
+ "sett_status": 1,
+ "settled_revenue": 718926045,
+ "sett_no": "XXX",
+ "mail_send_cnt": "0",
+ "slot_revenue": [
+ {
+ "slot_id": "SLOT_ID_WEAPP_BANNER",
+ "slot_settled_revenue": 34139443
+ },
+ {
+ "slot_id": "SLOT_ID_WEAPP_REWARD_VIDEO",
+ "slot_settled_revenue": 684786602
+ }
+ ]
+ }
+ ],
+ "total_num": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Sns/Component/SnsComponentJsCode2SessionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Sns/Component/SnsComponentJsCode2SessionRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Sns/Component/SnsComponentJsCode2SessionRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Sns/Component/SnsComponentJsCode2SessionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Sns/Component/SnsComponentJsCode2SessionResponse.json
new file mode 100644
index 00000000..9d69c112
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Sns/Component/SnsComponentJsCode2SessionResponse.json
@@ -0,0 +1,5 @@
+{
+ "openid": "OPENID",
+ "session_key": "SESSIONKEY",
+ "unionid": "oHAUs6LSuwgHq-mlnFrffKXw3QYM"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbAddDelayedFunctionTaskRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbAddDelayedFunctionTaskRequest.json
new file mode 100644
index 00000000..3baa68f9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbAddDelayedFunctionTaskRequest.json
@@ -0,0 +1,6 @@
+{
+ "env": "test-env-6gni9ity244a6ea3",
+ "function_name": "echo",
+ "delay_time": 10,
+ "data": "{\"test\":true}"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbAddDelayedFunctionTaskResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbAddDelayedFunctionTaskResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbAddDelayedFunctionTaskResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCloudBaseReportRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCloudBaseReportRequest.json
new file mode 100644
index 00000000..5827f401
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCloudBaseReportRequest.json
@@ -0,0 +1,9 @@
+{
+ "report_action": "sendSmsTask",
+ "env_id": "xxx",
+ "activity_id": "xxx",
+ "task_id": "xxx",
+ "phone_count": "12345",
+ "channel_id": "xxx",
+ "session_id": "xxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCloudBaseReportResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCloudBaseReportResponse.json
new file mode 100644
index 00000000..45dd9be3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCloudBaseReportResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": ""
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCreatePressureTestTaskRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCreatePressureTestTaskRequest.json
new file mode 100644
index 00000000..6d85b38c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCreatePressureTestTaskRequest.json
@@ -0,0 +1,6 @@
+{
+ "task_url": "pages/index/index",
+ "run_count": 100,
+ "run_time": 100,
+ "source_type": 9
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCreatePressureTestTaskResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCreatePressureTestTaskResponse.json
new file mode 100644
index 00000000..0bf512ca
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCreatePressureTestTaskResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "pressure_id": 1038
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCreateSendSmsTaskRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCreateSendSmsTaskRequest.json
new file mode 100644
index 00000000..9a5a6cb6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCreateSendSmsTaskRequest.json
@@ -0,0 +1,4 @@
+{
+ "env": "xxx",
+ "file_url": "xxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCreateSendSmsTaskResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCreateSendSmsTaskResponse.json
new file mode 100644
index 00000000..b39168e1
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbCreateSendSmsTaskResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "query_id": "xxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbDescribeExtensionUploadInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbDescribeExtensionUploadInfoRequest.json
new file mode 100644
index 00000000..a9ceba55
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbDescribeExtensionUploadInfoRequest.json
@@ -0,0 +1,10 @@
+{
+ "PostData": {
+ "ExtensionFiles": [
+ {
+ "FileType": "SMS",
+ "FileName": "gongzi.csv"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbDescribeExtensionUploadInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbDescribeExtensionUploadInfoResponse.json
new file mode 100644
index 00000000..a3940ba8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbDescribeExtensionUploadInfoResponse.json
@@ -0,0 +1,13 @@
+{
+ "Response": {
+ "FilesData": [
+ {
+ "CodeUri": "extension://xxx.zip",
+ "UploadUrl": "https://xxx",
+ "CustomKey": "",
+ "MaxSize": 30
+ }
+ ],
+ "RequestId": "83793d78-b90b-4b1e-9454-d7b4f5317f01"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbDescribeSmsRecordsRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbDescribeSmsRecordsRequest.json
new file mode 100644
index 00000000..ba8ffebc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbDescribeSmsRecordsRequest.json
@@ -0,0 +1,10 @@
+{
+ "PostData": {
+ "StartDate": "2021-03-01",
+ "EndDate": "2021-03-23",
+ "EnvId": "xxx",
+ "QueryId": "xxx",
+ "PageNumber": 1,
+ "PageSize": 20
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbDescribeSmsRecordsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbDescribeSmsRecordsResponse.json
new file mode 100644
index 00000000..7b2599f2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbDescribeSmsRecordsResponse.json
@@ -0,0 +1,18 @@
+{
+ "Response": {
+ "SmsRecords": [
+ {
+ "Content": "【XXX】XXX,跳转小程序 https://xxx/xxx 回T退订",
+ "ContentSize": 51,
+ "CreateTime": "2021-03-22 17:18:37",
+ "Fee": 1,
+ "Mobile": "+86xxxxxxxxxxx",
+ "ReceivedTime": "2021-03-22 17:18:43",
+ "Remarks": "用户短信接收成功",
+ "Status": "sent"
+ }
+ ],
+ "TotalCount": 1,
+ "RequestId": "bf34127a-35bd-48a2-86bb-ae583d2ff9ff"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetOpenDataRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetOpenDataRequest.json
new file mode 100644
index 00000000..246a5707
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetOpenDataRequest.json
@@ -0,0 +1,3 @@
+{
+ "cloudid_list": [ "xxx" ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetOpenDataResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetOpenDataResponse.json
new file mode 100644
index 00000000..f9e180ac
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetOpenDataResponse.json
@@ -0,0 +1,20 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data_list": [
+ {
+ "cloud_id": "xxx",
+ "json": {
+ "cloudID": "xxx",
+ "data": {
+ "stepInfoList": [
+ {
+ "timestamp": 1603641600,
+ "step": 1234
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetPressureTestReportRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetPressureTestReportRequest.json
new file mode 100644
index 00000000..82eb7cd4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetPressureTestReportRequest.json
@@ -0,0 +1,3 @@
+{
+ "pressure_id": 1038
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetPressureTestReportResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetPressureTestReportResponse.json
new file mode 100644
index 00000000..43850d0c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetPressureTestReportResponse.json
@@ -0,0 +1,55 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "report": {
+ "blankpage_pencent": 0,
+ "aver_time_cost": 3450,
+ "max_time_cost": 5773,
+ "total_launch_cnt": 36,
+ "total_request_cnt": 72,
+ "network_list": [
+ {
+ "path": "http://wx.cloud.callContainer",
+ "aver_time_cost": 89,
+ "max_time_cost": 141,
+ "total_request_cnt": 36,
+ "succ_percent": 100,
+ "top_time_cost_list": [
+ {
+ "time_cost": 141
+ },
+ {
+ "time_cost": 133
+ },
+ {
+ "time_cost": 131
+ }
+ ],
+ "over_count": 0
+ },
+ {
+ "path": "http://wx.cloud.callFunction.echo",
+ "aver_time_cost": 67,
+ "max_time_cost": 102,
+ "total_request_cnt": 36,
+ "succ_percent": 100,
+ "top_time_cost_list": [
+ {
+ "time_cost": 102
+ },
+ {
+ "time_cost": 94
+ },
+ {
+ "time_cost": 91
+ }
+ ],
+ "over_count": 0
+ }
+ ],
+ "appid": "wx5a3f90aefe6d7eaf",
+ "task_url": "pages/index/index",
+ "run_time": 10,
+ "pressure_id": 1066
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetPressureTestStatusRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetPressureTestStatusRequest.json
new file mode 100644
index 00000000..82eb7cd4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetPressureTestStatusRequest.json
@@ -0,0 +1,3 @@
+{
+ "pressure_id": 1038
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetPressureTestStatusResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetPressureTestStatusResponse.json
new file mode 100644
index 00000000..bde27f2c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetPressureTestStatusResponse.json
@@ -0,0 +1,7 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "status": "Crawling",
+ "beg_time": 1618906859,
+ "end_time": 1618906869
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetStatisticsRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetStatisticsRequest.json
new file mode 100644
index 00000000..7a154165
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetStatisticsRequest.json
@@ -0,0 +1,14 @@
+{
+ "action": "smsMarketingOverviewData",
+ "begin_date": 1614182400,
+ "end_date": 1614268800,
+ "page_offset": 0,
+ "page_limit": 1000,
+ "condition": {
+ "env_id": "xxx",
+ "activity_id": "xxx",
+ "by_channel_id": 0,
+ "channel_id": "xxx",
+ "act_type": "h5"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetStatisticsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetStatisticsResponse.json
new file mode 100644
index 00000000..6d6eba88
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetStatisticsResponse.json
@@ -0,0 +1,83 @@
+{
+ "data_column": [
+ {
+ "col_id": "appid",
+ "col_name": "小程序id",
+ "col_data_type": "0"
+ },
+ {
+ "col_id": "env_id",
+ "col_name": "环境id",
+ "col_data_type": "0"
+ },
+ {
+ "col_id": "activity_id",
+ "col_name": "活动id",
+ "col_data_type": "0"
+ },
+ {
+ "col_id": "channel_id",
+ "col_name": "渠道",
+ "col_data_type": "0"
+ },
+ {
+ "col_id": "h5_open_uercnt",
+ "col_name": "h5打开人数",
+ "col_data_type": "1"
+ },
+ {
+ "col_id": "jump_wxapp_uercnt",
+ "col_name": "小程序跳转人数",
+ "col_data_type": "1"
+ },
+ {
+ "col_id": "sms_send_uercnt",
+ "col_name": "短信下发人数",
+ "col_data_type": "1"
+ },
+ {
+ "col_id": "sms_send_list",
+ "col_name": "下发记录数组",
+ "col_data_type": "0"
+ },
+ {
+ "col_id": "jump_wxapp_uercnt_percent",
+ "col_name": "跳转人数渠道占比",
+ "col_data_type": "2"
+ },
+ {
+ "col_id": "h5_open_uercnt_percent",
+ "col_name": "h5打开人数渠道占比",
+ "col_data_type": "2"
+ },
+ {
+ "col_id": "h5_sms_rate",
+ "col_name": "短信到h5转化率",
+ "col_data_type": "2"
+ },
+ {
+ "col_id": "jump_h5_rate",
+ "col_name": "h5到跳转转化率",
+ "col_data_type": "2"
+ }
+ ],
+ "data_value": [
+ {
+ "data_value": [
+ "xxxxxxxxxxxxxxxxxx",
+ "wedcvfr",
+ "21ded5cb6001691405171ba161c603d1",
+ "_cms_sms_",
+ "5000",
+ "3000",
+ "10000",
+ "[task1:5000,task2:5000]",
+ "0.535714",
+ "0.625",
+ "0.5",
+ "0.6"
+ ]
+ }
+ ],
+ "total_num": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetVoIPSignRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetVoIPSignRequest.json
new file mode 100644
index 00000000..822689b0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetVoIPSignRequest.json
@@ -0,0 +1,5 @@
+{
+ "group_id": "xxx",
+ "nonce": "yyy",
+ "timestamp": 12312312312
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetVoIPSignResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetVoIPSignResponse.json
new file mode 100644
index 00000000..ff9b6bfe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbGetVoIPSignResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "signature": "xxxx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbSendSmsRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbSendSmsRequest.json
new file mode 100644
index 00000000..7e0be225
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbSendSmsRequest.json
@@ -0,0 +1,11 @@
+{
+ "env": "online-12345678910",
+ "phone_number_list": [
+ "+8612345678910"
+ ],
+ "sms_type": "Marketing",
+ "content": "发布了新的能力",
+ "path": "/index.html",
+ "template_id": "923584",
+ "template_param_list": [ "商品", "/index.html" ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbSendSmsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbSendSmsResponse.json
new file mode 100644
index 00000000..1ffeb215
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbSendSmsResponse.json
@@ -0,0 +1,12 @@
+{
+ "errcode": 0,
+ "send_status_list": [
+ {
+ "serial_no": "8:gFIqWUHzllUyOFRHgeu20201231",
+ "phone_number": "+8612345678910",
+ "code": "Ok",
+ "message": "send success",
+ "iso_code": ""
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbSendSmsV2Request.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbSendSmsV2Request.json
new file mode 100644
index 00000000..e9bd2cc5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbSendSmsV2Request.json
@@ -0,0 +1,9 @@
+{
+ "env": "online-12345678910",
+ "url_link": "https://wxaurl.cn/xxxxxx",
+ "template_id": "844110",
+ "template_param_list": [ "能力上新" ],
+ "phone_number_list": [
+ "+8612345678910"
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbSendSmsV2Response.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbSendSmsV2Response.json
new file mode 100644
index 00000000..1ffeb215
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Tcb/TcbSendSmsV2Response.json
@@ -0,0 +1,12 @@
+{
+ "errcode": 0,
+ "send_status_list": [
+ {
+ "serial_no": "8:gFIqWUHzllUyOFRHgeu20201231",
+ "phone_number": "+8612345678910",
+ "code": "Ok",
+ "message": "send success",
+ "iso_code": ""
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Analysis/WxaBusinessPerformanceBootRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Analysis/WxaBusinessPerformanceBootRequest.json
new file mode 100644
index 00000000..9ac418d6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Analysis/WxaBusinessPerformanceBootRequest.json
@@ -0,0 +1,21 @@
+{
+ "time": {
+ "end_timestamp": 1609689600,
+ "begin_timestamp": 1609603200
+ },
+ "module": "10022",
+ "params": [
+ {
+ "field": "networktype",
+ "value": "wifi"
+ },
+ {
+ "field": "device_level",
+ "value": "1"
+ },
+ {
+ "field": "device",
+ "value": "1"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Analysis/WxaBusinessPerformanceBootResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Analysis/WxaBusinessPerformanceBootResponse.json
new file mode 100644
index 00000000..40a32a4c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Analysis/WxaBusinessPerformanceBootResponse.json
@@ -0,0 +1,47 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": {
+ "body": {
+ "tables": [
+ {
+ "id": "memorydiff",
+ "lines": [
+ {
+ "fields": [
+ {
+ "refdate": "20210103",
+ "value": "70.7778"
+ },
+ {
+ "refdate": "20210104",
+ "value": "72.0446"
+ }
+ ]
+ }
+ ],
+ "zh": "内存增长均值"
+ },
+ {
+ "id": "memory",
+ "lines": [
+ {
+ "fields": [
+ {
+ "refdate": "20210103",
+ "value": "314"
+ },
+ {
+ "refdate": "20210104",
+ "value": "302.3218"
+ }
+ ]
+ }
+ ],
+ "zh": "内存均值"
+ }
+ ],
+ "count": 2
+ }
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaCreateWxaGameRoomRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaCreateWxaGameRoomRequest.json
new file mode 100644
index 00000000..bcdd40bf
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaCreateWxaGameRoomRequest.json
@@ -0,0 +1,10 @@
+{
+ "game_tick": 30,
+ "open_id_list": [ "OPENID" ],
+ "udp_reliability_strategy": 3,
+ "start_percent": 100,
+ "need_user_info": true,
+ "game_last_time": 1800,
+ "room_ext_info": "",
+ "need_game_seed": true
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaCreateWxaGameRoomResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaCreateWxaGameRoomResponse.json
new file mode 100644
index 00000000..0da0d2fd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaCreateWxaGameRoomResponse.json
@@ -0,0 +1,7 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": {
+ "access_info": "xxx"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaGetWxaGameFrameRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaGetWxaGameFrameRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaGetWxaGameFrameRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaGetWxaGameFrameResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaGetWxaGameFrameResponse.json
new file mode 100644
index 00000000..e209a47b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaGetWxaGameFrameResponse.json
@@ -0,0 +1,19 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": {
+ "has_more": false,
+ "frame_list": [
+ {
+ "frame_id": 1,
+ "pkg_list": [
+ {
+ "open_id": "OPENID",
+ "action_list": [ "xxx", "xxx" ],
+ "b": false
+ }
+ ]
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaGetWxaGameIdentityInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaGetWxaGameIdentityInfoRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaGetWxaGameIdentityInfoRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaGetWxaGameIdentityInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaGetWxaGameIdentityInfoResponse.json
new file mode 100644
index 00000000..5ab9d99a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/LockStep/WxaGetWxaGameIdentityInfoResponse.json
@@ -0,0 +1,12 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": {
+ "info_list": [
+ {
+ "client_id": 1,
+ "open_id": "OPENID"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaAddNearbyPOIRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaAddNearbyPOIRequest.json
new file mode 100644
index 00000000..4e1524d9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaAddNearbyPOIRequest.json
@@ -0,0 +1,14 @@
+{
+ "is_comm_nearby": "1",
+ "kf_info": "{\"open_kf\":true,\"kf_headimg\":\"http://mmbiz.qpic.cn/mmbiz_jpg/kKMgNtnEfQzDKpLXYhgo3W3Gndl34gITqmP914zSwhajIEJzUPpx40P7R8fRe1QmicneQMhFzpZNhSLjrvU1pIA/0?wx_fmt=jpeg\",\"kf_name\":\"Harden\"}",
+ "pic_list": "{\"list\":[\"http://mmbiz.qpic.cn/mmbiz_jpg/kKMgNtnEfQzDKpLXYhgo3W3Gndl34gITqmP914zSwhajIEJzUPpx40P7R8fRe1QmicneQMhFzpZNhSLjrvU1pIA/0?wx_fmt=jpeg\",\"http://mmbiz.qpic.cn/mmbiz_jpg/kKMgNtnEfQzDKpLXYhgo3W3Gndl34gITRneE5FS9uYruXGMmrtmhsBySwddEWUGOibG8Ze2NT5E3Dyt79I0htNg/0?wx_fmt=jpeg\"]}",
+ "service_infos": "{\"service_infos\":[{\"id\":2,\"type\":1,\"name\":\"快递\",\"appid\":\"wx1373169e494e0c39\",\"path\":\"index\"},{\"id\":0,\"type\":2,\"name\":\"自定义\",\"appid\":\"wx1373169e494e0c39\",\"path\":\"index\"}]}",
+ "store_name": "羊村小马烧烤",
+ "contract_phone": "111111111",
+ "hour": "00:00-11:11",
+ "company_name": "深圳市腾讯计算机系统有限公司",
+ "credential": "156718193518281",
+ "address": "新疆维吾尔自治区克拉玛依市克拉玛依区碧水路15-1-8号(碧水云天广场)",
+ "qualification_list": "3LaLzqiTrQcD20DlX_o-OV1-nlYMu7sdVAL7SV2PrxVyjZFZZmB3O6LPGaYXlZWq",
+ "poi_id": ""
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaAddNearbyPOIResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaAddNearbyPOIResponse.json
new file mode 100644
index 00000000..7a767d35
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaAddNearbyPOIResponse.json
@@ -0,0 +1,8 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": {
+ "audit_id": 416620525,
+ "poi_id": 112333
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaDeleteNearbyPOIRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaDeleteNearbyPOIRequest.json
new file mode 100644
index 00000000..906f5322
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaDeleteNearbyPOIRequest.json
@@ -0,0 +1,3 @@
+{
+ "poi_id": "469382092"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaDeleteNearbyPOIResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaDeleteNearbyPOIResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaDeleteNearbyPOIResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaGetNearbyPOIListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaGetNearbyPOIListRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaGetNearbyPOIListRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaGetNearbyPOIListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaGetNearbyPOIListResponse.json
new file mode 100644
index 00000000..786a70bc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaGetNearbyPOIListResponse.json
@@ -0,0 +1,9 @@
+{
+ "errcode": 0,
+ "errmsg": "",
+ "data": {
+ "left_apply_num": 9,
+ "max_apply_num": 10,
+ "data": "{\"poi_list\": [{\"poi_id\": \"123456\",\"qualification_address\": \"广东省广州市海珠区新港中路123号\",\"qualification_num\": \"123456789-1\",\"audit_status\": 3,\"display_status\": 0,\"refuse_reason\": \"\"}]}"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaSetNearbyPOIShowStatusRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaSetNearbyPOIShowStatusRequest.json
new file mode 100644
index 00000000..bb97d787
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaSetNearbyPOIShowStatusRequest.json
@@ -0,0 +1,4 @@
+{
+ "poi_id": "469382092",
+ "status": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaSetNearbyPOIShowStatusResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaSetNearbyPOIShowStatusResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/NearybyPOI/WxaSetNearbyPOIShowStatusResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevAgreeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevAgreeRequest.json
new file mode 100644
index 00000000..640feaab
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevAgreeRequest.json
@@ -0,0 +1,4 @@
+{
+ "action": "dev_agree",
+ "appid": "aaaa"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevAgreeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevAgreeResponse.json
new file mode 100644
index 00000000..aa6c5457
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevAgreeResponse.json
@@ -0,0 +1,4 @@
+{
+ "errmsg": "ok",
+ "errcode": 0
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevApplyListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevApplyListRequest.json
new file mode 100644
index 00000000..26516025
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevApplyListRequest.json
@@ -0,0 +1,5 @@
+{
+ "action": "dev_apply_list",
+ "page": 1,
+ "num": 10
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevApplyListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevApplyListResponse.json
new file mode 100644
index 00000000..338fd091
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevApplyListResponse.json
@@ -0,0 +1,21 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "apply_list": [
+ {
+ "appid": "xxxxxxxxxxxxx",
+ "status": 1,
+ "nickname": "名称",
+ "headimgurl": "**********",
+ "reason": "polo has gone",
+ "apply_url": "*******",
+ "create_time": "1536305096",
+ "categories": [
+ {
+ "first": "IT科技",
+ "second": "硬件与设备"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevDeleteRequest.json
new file mode 100644
index 00000000..ce59235c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevDeleteRequest.json
@@ -0,0 +1,3 @@
+{
+ "action": "dev_delete"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevDeleteResponse.json
new file mode 100644
index 00000000..aa6c5457
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevDeleteResponse.json
@@ -0,0 +1,4 @@
+{
+ "errmsg": "ok",
+ "errcode": 0
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevRefuseRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevRefuseRequest.json
new file mode 100644
index 00000000..dab5c8d9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevRefuseRequest.json
@@ -0,0 +1,4 @@
+{
+ "action": "dev_refuse",
+ "reason": "refuse reason"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevRefuseResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevRefuseResponse.json
new file mode 100644
index 00000000..aa6c5457
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaDevPluginDevRefuseResponse.json
@@ -0,0 +1,4 @@
+{
+ "errmsg": "ok",
+ "errcode": 0
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginApplyRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginApplyRequest.json
new file mode 100644
index 00000000..660ec1d8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginApplyRequest.json
@@ -0,0 +1,5 @@
+{
+ "action": "apply",
+ "plugin_appid": "aaaa",
+ "reason": "hello"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginApplyResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginApplyResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginApplyResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginListRequest.json
new file mode 100644
index 00000000..b23cde29
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginListRequest.json
@@ -0,0 +1,3 @@
+{
+ "action": "list"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginListResponse.json
new file mode 100644
index 00000000..2e02be1d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginListResponse.json
@@ -0,0 +1,12 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "plugin_list": [
+ {
+ "appid": "aaaa",
+ "status": 1,
+ "nickname": "插件昵称",
+ "headimgurl": "http://plugin.qq.com"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginUnbindRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginUnbindRequest.json
new file mode 100644
index 00000000..86afd5cb
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginUnbindRequest.json
@@ -0,0 +1,4 @@
+{
+ "action": "unbind",
+ "plugin_appid": "aaaa"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginUnbindResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginUnbindResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Plugin/WxaPluginUnbindResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/RiskControl/WxaGetUserRiskRankRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/RiskControl/WxaGetUserRiskRankRequest.json
new file mode 100644
index 00000000..be0081e2
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/RiskControl/WxaGetUserRiskRankRequest.json
@@ -0,0 +1,11 @@
+{
+ "appid": "wx*******",
+ "openid": "*****",
+ "scene": 1,
+ "mobile_no": "12345678",
+ "bank_card_no": "******",
+ "cert_no": "*******",
+ "client_ip": "******",
+ "email_address": "***@qq.com",
+ "extended_info": ""
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/RiskControl/WxaGetUserRiskRankResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/RiskControl/WxaGetUserRiskRankResponse.json
new file mode 100644
index 00000000..2c54b24c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/RiskControl/WxaGetUserRiskRankResponse.json
@@ -0,0 +1,6 @@
+{
+ "errcode": 0,
+ "errmsg": "getuserriskrank succ",
+ "risk_rank": 0,
+ "unoin_id": 123456
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Search/WxaSearchWxaApiSubmitPagesRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Search/WxaSearchWxaApiSubmitPagesRequest.json
new file mode 100644
index 00000000..4f159640
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Search/WxaSearchWxaApiSubmitPagesRequest.json
@@ -0,0 +1,12 @@
+{
+ "pages": [
+ {
+ "path": "pages/index/index",
+ "query": "userName=wechat_user"
+ },
+ {
+ "path": "pages/video/index",
+ "query": "vid=123"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Search/WxaSearchWxaApiSubmitPagesResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Search/WxaSearchWxaApiSubmitPagesResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Search/WxaSearchWxaApiSubmitPagesResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Search/WxaSiteSearchRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Search/WxaSiteSearchRequest.json
new file mode 100644
index 00000000..8bb37766
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Search/WxaSiteSearchRequest.json
@@ -0,0 +1,4 @@
+{
+ "keyword": "微信",
+ "next_page_info": ""
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Search/WxaSiteSearchResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Search/WxaSiteSearchResponse.json
new file mode 100644
index 00000000..0e9a8fc6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Search/WxaSiteSearchResponse.json
@@ -0,0 +1,21 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "items": [
+ {
+ "title": "微信版本更新!",
+ "description": "...今日,微信官方发布微信X.Y.Z版本...",
+ "image": "http://image.weixin.qq.com/1.jpeg",
+ "path": "pages/normal/index?id=20191210A0C29X00"
+ },
+ {
+ "title": "微信小程序发布新功能!",
+ "description": "微信小程序发布了XXX功能...",
+ "image": "http://image.weixin.qq.com/2.jpeg",
+ "path": "pages/normal/index?id=20191210A0C29X11"
+ }
+ ],
+ "has_next_page": 1,
+ "hit_count": 100,
+ "next_page_info": "eyJwYWdlX3BhcmFtIjpbeyJzdWJzeXNfdHlwZSI6MTAsInNlcnZlcl9vZmZzZXQiOjAsInNlcnZlcl9saW1pdCI6MTIwLCJpbmRleF9zdGVwIjoyMCwiaW5kZXhfb2Zmc2V0IjoyMH1dLCJjbGllbnRfb2Zmc2V0IjowLCJjbGllbnRfbGltaXQiOjEwfQ=="
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaImageSecurityCheckRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaImageSecurityCheckRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaImageSecurityCheckRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaImageSecurityCheckResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaImageSecurityCheckResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaImageSecurityCheckResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaMediaCheckRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaMediaCheckRequest.json
new file mode 100644
index 00000000..dbd0aec0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaMediaCheckRequest.json
@@ -0,0 +1,4 @@
+{
+ "media_url": "https://developers.weixin.qq.com/miniprogram/assets/images/head_global_z_@all.png",
+ "media_type": 2
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaMediaCheckResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaMediaCheckResponse.json
new file mode 100644
index 00000000..7265d44e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaMediaCheckResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "trace_id": "967e945cd8a3e458f3c74dcb886068e9"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaMessageSecurityCheckRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaMessageSecurityCheckRequest.json
new file mode 100644
index 00000000..1b794c36
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaMessageSecurityCheckRequest.json
@@ -0,0 +1,3 @@
+{
+ "content": "hello world!"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaMessageSecurityCheckResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaMessageSecurityCheckResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Security/WxaMessageSecurityCheckResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/ServiceMarket/WxaServiceMarketRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/ServiceMarket/WxaServiceMarketRequest.json
new file mode 100644
index 00000000..34398169
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/ServiceMarket/WxaServiceMarketRequest.json
@@ -0,0 +1,10 @@
+{
+ "service": "wx79ac3de8be320b71",
+ "api": "OcrAllInOne",
+ "data": {
+ "img_url": "http://mmbiz.qpic.cn/mmbiz_jpg/7UFjuNbYxibu66xSqsQqKcuoGBZM77HIyibdiczeWibdMeA2XMt5oibWVQMgDibriazJSOibLqZxcO6DVVcZMxDKgeAtbQ/0",
+ "data_type": 3,
+ "ocr_type": 1
+ },
+ "client_msg_id": "id123"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/ServiceMarket/WxaServiceMarketResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/ServiceMarket/WxaServiceMarketResponse.json
new file mode 100644
index 00000000..1c698beb
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/ServiceMarket/WxaServiceMarketResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": "{\"idcard_res\":{\"type\":0,\"name\":{\"text\":\"abc\",\"pos\"…0312500}}},\"image_width\":480,\"image_height\":304}}"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaRemoveUserStorageRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaRemoveUserStorageRequest.json
new file mode 100644
index 00000000..9901884b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaRemoveUserStorageRequest.json
@@ -0,0 +1,3 @@
+{
+ "key": [ "gold", "score" ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaRemoveUserStorageResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaRemoveUserStorageResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaRemoveUserStorageResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaSetUserInteractiveDataRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaSetUserInteractiveDataRequest.json
new file mode 100644
index 00000000..e67b2622
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaSetUserInteractiveDataRequest.json
@@ -0,0 +1,8 @@
+{
+ "kv_list": [
+ {
+ "key": "1",
+ "value": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaSetUserInteractiveDataResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaSetUserInteractiveDataResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaSetUserInteractiveDataResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaSetUserStorageRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaSetUserStorageRequest.json
new file mode 100644
index 00000000..9327c2b5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaSetUserStorageRequest.json
@@ -0,0 +1,12 @@
+{
+ "kv_list": [
+ {
+ "key": "score",
+ "value": "100"
+ },
+ {
+ "key": "gold",
+ "value": "3000"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaSetUserStorageResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaSetUserStorageResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/Storage/WxaSetUserStorageResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlLink/WxaGenerateUrlLinkRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlLink/WxaGenerateUrlLinkRequest.json
new file mode 100644
index 00000000..50c991e1
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlLink/WxaGenerateUrlLinkRequest.json
@@ -0,0 +1,13 @@
+{
+ "path": "/pages/publishHomework/publishHomework",
+ "query": "",
+ "is_expire": true,
+ "expire_type": 1,
+ "expire_interval": 1,
+ "cloud_base": {
+ "env": "xxx",
+ "domain": "xxx.xx",
+ "path": "/jump-wxa.html",
+ "query": "a=1&b=2"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlLink/WxaGenerateUrlLinkResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlLink/WxaGenerateUrlLinkResponse.json
new file mode 100644
index 00000000..33dc35dc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlLink/WxaGenerateUrlLinkResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "url_link": "URL Link"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlScheme/WxaGenerateSchemeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlScheme/WxaGenerateSchemeRequest.json
new file mode 100644
index 00000000..647b040f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlScheme/WxaGenerateSchemeRequest.json
@@ -0,0 +1,8 @@
+{
+ "jump_wxa": {
+ "path": "/pages/publishHomework/publishHomework",
+ "query": ""
+ },
+ "is_expire": true,
+ "expire_time": 1606737600
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlScheme/WxaGenerateSchemeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlScheme/WxaGenerateSchemeResponse.json
new file mode 100644
index 00000000..b1caa8dd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/UrlScheme/WxaGenerateSchemeResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "openlink": "Scheme"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCheckSessionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCheckSessionRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCheckSessionRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCheckSessionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCheckSessionResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCheckSessionResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCode/WxaGetWxaCodeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCode/WxaGetWxaCodeRequest.json
new file mode 100644
index 00000000..9da90428
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCode/WxaGetWxaCodeRequest.json
@@ -0,0 +1,4 @@
+{
+ "path": "page/index/index",
+ "width": 430
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCode/WxaGetWxaCodeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCode/WxaGetWxaCodeResponse.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCode/WxaGetWxaCodeResponse.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCode/WxaGetWxaCodeUnlimitRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCode/WxaGetWxaCodeUnlimitRequest.json
new file mode 100644
index 00000000..11c835a4
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCode/WxaGetWxaCodeUnlimitRequest.json
@@ -0,0 +1,3 @@
+{
+ "scene": "a=1"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCode/WxaGetWxaCodeUnlimitResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCode/WxaGetWxaCodeUnlimitResponse.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaCode/WxaGetWxaCodeUnlimitResponse.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaGetPaidUnionIdRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaGetPaidUnionIdRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaGetPaidUnionIdRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaGetPaidUnionIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaGetPaidUnionIdResponse.json
new file mode 100644
index 00000000..2e33355c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/Wxa/WxaGetPaidUnionIdResponse.json
@@ -0,0 +1,5 @@
+{
+ "unionid": "oTmHYjg-tElZ68xxxxxxxxhy1Rgk",
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGetGoodsWarehouseRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGetGoodsWarehouseRequest.json
new file mode 100644
index 00000000..644ed1bd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGetGoodsWarehouseRequest.json
@@ -0,0 +1,3 @@
+{
+ "goods_ids": [ 1 ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGetGoodsWarehouseResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGetGoodsWarehouseResponse.json
new file mode 100644
index 00000000..2ce8668a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGetGoodsWarehouseResponse.json
@@ -0,0 +1,18 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "goods": [
+ {
+ "goods_id": 9,
+ "cover_img_url": "xxxx",
+ "name": "xxxxx",
+ "price": 12300,
+ "url": "xxxxxxx",
+ "price_type": 1,
+ "price2": 0,
+ "audit_status": 1,
+ "third_party_tag": 0
+ }
+ ],
+ "total": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsAddRequest.json
new file mode 100644
index 00000000..de0f0d4d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsAddRequest.json
@@ -0,0 +1,10 @@
+{
+ "goodsInfo": {
+ "coverImgUrl": "ZuYVNKk9sMP1X4m7FXdcDCKra251KDZTjS502UTV7gwalgLZXcrOhG6oNYX6c7AR",
+ "name": "TIT茶杯",
+ "priceType": 1,
+ "price": 99.5,
+ "price2": 150.5,
+ "url": "pages/index/index"
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsAddResponse.json
new file mode 100644
index 00000000..2cab5090
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsAddResponse.json
@@ -0,0 +1,5 @@
+{
+ "goodsId": 51,
+ "auditId": 525022786,
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsAuditRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsAuditRequest.json
new file mode 100644
index 00000000..1a609a4b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsAuditRequest.json
@@ -0,0 +1,3 @@
+{
+ "goodsId": 9
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsAuditResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsAuditResponse.json
new file mode 100644
index 00000000..d8c32ed6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsAuditResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "auditId": 525022184
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsDeleteRequest.json
new file mode 100644
index 00000000..1a609a4b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsDeleteRequest.json
@@ -0,0 +1,3 @@
+{
+ "goodsId": 9
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsDeleteResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsDeleteResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsGetApprovedRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsGetApprovedRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsGetApprovedRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsGetApprovedResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsGetApprovedResponse.json
new file mode 100644
index 00000000..3d189794
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsGetApprovedResponse.json
@@ -0,0 +1,16 @@
+{
+ "errcode": 0,
+ "total": 68,
+ "goods": [
+ {
+ "goodsId": 9,
+ "coverImgUrl": "xxxx",
+ "name": "xxxxx",
+ "price": 12300,
+ "url": "xxxxxxx",
+ "priceType": 1,
+ "price2": 0,
+ "thirdPartyTag": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsResetAuditRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsResetAuditRequest.json
new file mode 100644
index 00000000..b14bf599
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsResetAuditRequest.json
@@ -0,0 +1,4 @@
+{
+ "auditId": 525022184,
+ "goodsId": 9
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsResetAuditResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsResetAuditResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsResetAuditResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsUpdateRequest.json
new file mode 100644
index 00000000..e065b176
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsUpdateRequest.json
@@ -0,0 +1,11 @@
+{
+ "goodsInfo": {
+ "coverImgUrl": "ZuYVNKk9sMP1X4m7FXdcDCKra251KDZTjS502UTV7gwalgLZXcrOhG6oNYX6c7AR",
+ "name": "TIT茶杯",
+ "priceType": 1,
+ "price": 99.5,
+ "price2": 150.5,
+ "url": "pages/index/index",
+ "goodsId": 9
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsUpdateResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Goods/WxaApiBroadcastGoodsUpdateResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleAddRoleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleAddRoleRequest.json
new file mode 100644
index 00000000..7e9e1661
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleAddRoleRequest.json
@@ -0,0 +1,4 @@
+{
+ "username": "test_1",
+ "role": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleAddRoleResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleAddRoleResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleAddRoleResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleDeleteRoleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleDeleteRoleRequest.json
new file mode 100644
index 00000000..7e9e1661
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleDeleteRoleRequest.json
@@ -0,0 +1,4 @@
+{
+ "username": "test_1",
+ "role": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleDeleteRoleResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleDeleteRoleResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleDeleteRoleResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleGetRoleListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleGetRoleListRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleGetRoleListRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleGetRoleListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleGetRoleListResponse.json
new file mode 100644
index 00000000..41cc0e24
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/Role/WxaApiBroadcastRoleGetRoleListResponse.json
@@ -0,0 +1,14 @@
+{
+ "errcode": 0,
+ "total": 1,
+ "list": [
+ {
+ "headingimg": "http://wx.qlogo.cn/mmhead/Q3auHgzwzM5jBhFwrHoeoaxTlhP9YzlVica7wu6lZLnGreKAj7CVicA/0",
+ "nickname": "test1",
+ "openid": "o7esq5MvImF2SEm7OHYohausj2o",
+ "roleList": [ 2, 3 ],
+ "updateTimestamp": "1600340080",
+ "username": "o0****0o"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomAddSubAnchorRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomAddSubAnchorRequest.json
new file mode 100644
index 00000000..0aed2c7a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomAddSubAnchorRequest.json
@@ -0,0 +1,4 @@
+{
+ "roomId": 6827,
+ "username": "lintest2"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomAddSubAnchorResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomAddSubAnchorResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomAddSubAnchorResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomDeleteSubAnchorRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomDeleteSubAnchorRequest.json
new file mode 100644
index 00000000..e46056d6
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomDeleteSubAnchorRequest.json
@@ -0,0 +1,3 @@
+{
+ "roomId": 6491
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomDeleteSubAnchorResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomDeleteSubAnchorResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomDeleteSubAnchorResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomGetSubAnchorRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomGetSubAnchorRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomGetSubAnchorRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomGetSubAnchorResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomGetSubAnchorResponse.json
new file mode 100644
index 00000000..7af53de1
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomGetSubAnchorResponse.json
@@ -0,0 +1,4 @@
+{
+ "username": "testwechat",
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomModifySubAnchorRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomModifySubAnchorRequest.json
new file mode 100644
index 00000000..483c1b05
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomModifySubAnchorRequest.json
@@ -0,0 +1,4 @@
+{
+ "roomId": 6827,
+ "username": "wechattest"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomModifySubAnchorResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomModifySubAnchorResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAnchor/WxaApiBroadcastRoomModifySubAnchorResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomAddAssistantRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomAddAssistantRequest.json
new file mode 100644
index 00000000..bf73cd1e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomAddAssistantRequest.json
@@ -0,0 +1,9 @@
+{
+ "roomId": 6474,
+ "users": [
+ {
+ "username": "testwechat",
+ "nickname": "testnick"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomAddAssistantResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomAddAssistantResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomAddAssistantResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomGetAssistantListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomGetAssistantListRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomGetAssistantListRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomGetAssistantListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomGetAssistantListResponse.json
new file mode 100644
index 00000000..98d4bd96
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomGetAssistantListResponse.json
@@ -0,0 +1,14 @@
+{
+ "list": [
+ {
+ "timestamp": 1601199369,
+ "headimg": "http://wx.qlogo.cn/mmhead/USXYj7XUar4OmtmhpYR3IS1X54ibLgjcNjEXp3ne5C6I/0",
+ "nickname": "nickname",
+ "alias": "wechat",
+ "openid": "o7esq5K76p47O-ien1kuaVAuSsvw"
+ }
+ ],
+ "count": 1,
+ "maxCount": 10,
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomModifyAssistantRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomModifyAssistantRequest.json
new file mode 100644
index 00000000..3a22331a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomModifyAssistantRequest.json
@@ -0,0 +1,5 @@
+{
+ "roomId": 6474,
+ "username": "testwechat",
+ "nickname": "testnick"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomModifyAssistantResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomModifyAssistantResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomModifyAssistantResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomRemoveAssistantRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomRemoveAssistantRequest.json
new file mode 100644
index 00000000..0b271d30
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomRemoveAssistantRequest.json
@@ -0,0 +1,4 @@
+{
+ "roomId": 6623,
+ "username": "testwechat"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomRemoveAssistantResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomRemoveAssistantResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomAssistant/WxaApiBroadcastRoomRemoveAssistantResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsDeleteInRoomRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsDeleteInRoomRequest.json
new file mode 100644
index 00000000..319c80bd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsDeleteInRoomRequest.json
@@ -0,0 +1,4 @@
+{
+ "roomId": 6474,
+ "goodsId": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsDeleteInRoomResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsDeleteInRoomResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsDeleteInRoomResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsGetVideoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsGetVideoRequest.json
new file mode 100644
index 00000000..319c80bd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsGetVideoRequest.json
@@ -0,0 +1,4 @@
+{
+ "roomId": 6474,
+ "goodsId": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsGetVideoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsGetVideoResponse.json
new file mode 100644
index 00000000..f9478e37
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsGetVideoResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "url": "https://xx"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsOnSaleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsOnSaleRequest.json
new file mode 100644
index 00000000..338125cd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsOnSaleRequest.json
@@ -0,0 +1,5 @@
+{
+ "roomId": 6474,
+ "goodsId": 1,
+ "onSale": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsOnSaleResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsOnSaleResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsOnSaleResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsPushRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsPushRequest.json
new file mode 100644
index 00000000..319c80bd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsPushRequest.json
@@ -0,0 +1,4 @@
+{
+ "roomId": 6474,
+ "goodsId": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsPushResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsPushResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsPushResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsSortRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsSortRequest.json
new file mode 100644
index 00000000..0af8eade
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsSortRequest.json
@@ -0,0 +1,7 @@
+{
+ "roomId": 6474,
+ "goods": [
+ { "goodsId": "123" },
+ { "goodsId": "234" }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsSortResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsSortResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastGoodsSortResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastRoomAddGoodsRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastRoomAddGoodsRequest.json
new file mode 100644
index 00000000..7ceabb0f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastRoomAddGoodsRequest.json
@@ -0,0 +1,4 @@
+{
+ "ids": [ 1150, 1111 ],
+ "roomId": 2554
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastRoomAddGoodsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastRoomAddGoodsResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/RoomGoods/WxaApiBroadcastRoomAddGoodsResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomCreateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomCreateRequest.json
new file mode 100644
index 00000000..6f61be57
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomCreateRequest.json
@@ -0,0 +1,20 @@
+{
+ "name": "测试直播房间1",
+ "coverImg": "",
+ "startTime": 1588237130,
+ "endTime": 1588237130,
+ "anchorName": "zefzhang1",
+ "anchorWechat": "WxgQiao_04",
+ "subAnchorWechat": "WxgQiao_03",
+ "createrWechat": "test_creater",
+ "shareImg": "hw7zsntcr0rE-RBfBAaF553DqBk-J02UtWsP8VqrUh3tKu3jO_JwEO8n1cWTJ5TN",
+ "feedsImg": "hw7zsntcr0rE-RBfBAaF553DqBk-J02UtWsP8VqrUh3tKu3jO_JwEO8n1cWTJ5TN",
+ "isFeedsPublic": 1,
+ "type": 1,
+ "closeLike": 0,
+ "closeGoods": 0,
+ "closeComment": 0,
+ "closeReplay": 1,
+ "closeShare": 0,
+ "closeKf": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomCreateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomCreateResponse.json
new file mode 100644
index 00000000..1ea50e16
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomCreateResponse.json
@@ -0,0 +1,5 @@
+{
+ "roomId": 33,
+ "errcode": 0,
+ "qrcode_url": "https://res.wx.qq.com/op_res/9rSix1dhHfK4rR049JL0PHJ7TpOvkuZ3mE0z7Ou_Etvjf-w1J_jVX0rZqeStLfwh"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomDeleteRoomRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomDeleteRoomRequest.json
new file mode 100644
index 00000000..07fa9369
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomDeleteRoomRequest.json
@@ -0,0 +1,3 @@
+{
+ "id": 6491
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomDeleteRoomResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomDeleteRoomResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomDeleteRoomResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomEditRoomRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomEditRoomRequest.json
new file mode 100644
index 00000000..761191bd
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomEditRoomRequest.json
@@ -0,0 +1,18 @@
+{
+ "id": 811,
+ "name": "测试更新副号1",
+ "coverImg": "hw7zsntcr0rE-RBfBAaF553DqBk-J02UtWsP8VqrUh3tKu3jO_JwEO8n1cWTJ5TN",
+ "startTime": 1607443200,
+ "endTime": 1607450400,
+ "anchorName": "主播昵称11",
+ "anchorWechat": "lintest1",
+ "shareImg": "hw7zsntcr0rE-RBfBAaF553DqBk-J02UtWsP8VqrUh3tKu3jO_JwEO8n1cWTJ5TN",
+ "closeLike": 0,
+ "closeGoods": 0,
+ "closeComment": 0,
+ "isFeedsPublic": 0,
+ "closeReplay": 0,
+ "closeShare": 0,
+ "closeKf": 0,
+ "feedsImg": "hw7zsntcr0rE-RBfBAaF553DqBk-J02UtWsP8VqrUh3tKu3jO_JwEO8n1cWTJ5TN"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomEditRoomResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomEditRoomResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomEditRoomResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomGetPushUrlRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomGetPushUrlRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomGetPushUrlRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomGetPushUrlResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomGetPushUrlResponse.json
new file mode 100644
index 00000000..b0ba2daf
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomGetPushUrlResponse.json
@@ -0,0 +1,4 @@
+{
+ "pushAddr": "rtmp://wxalivepush.weixin.qq.com/live/wx40f8626ddf43d362-6209?txSecret=5da4f0b7b7a6c25b238311de8c81a65a&txTime=5fc4f631",
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomGetSharedCodeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomGetSharedCodeRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomGetSharedCodeRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomGetSharedCodeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomGetSharedCodeResponse.json
new file mode 100644
index 00000000..c2f53394
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomGetSharedCodeResponse.json
@@ -0,0 +1,6 @@
+{
+ "cdnUrl": "http://mmbiz.qpic.cn/mmbiz_jpg/FVribAGdErI2jhO1hbzVDH1E5LW7VQ9D1SIvTLFmyYwkIUucJqE72icgAj6NYw92kbJRNV0zwnGZWaO0Y8T0vqlg/0",
+ "pagePath": "plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=6209",
+ "posterUrl": "http://mmbiz.qpic.cn/mmbiz_jpg/dlFudV139LtQn96YNHSGtVfcUkUwQaYeR5OiaJ6bPr7OZxy3yhIK3icjxop0QeRBiaDPiaxuzENtCj15zFIM8sh7ag/0",
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateCommentRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateCommentRequest.json
new file mode 100644
index 00000000..1a6581b3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateCommentRequest.json
@@ -0,0 +1,4 @@
+{
+ "roomId": 6474,
+ "banComment": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateCommentResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateCommentResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateCommentResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateFeedPublicRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateFeedPublicRequest.json
new file mode 100644
index 00000000..9b1f0860
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateFeedPublicRequest.json
@@ -0,0 +1,4 @@
+{
+ "roomId": 6474,
+ "isFeedsPublic": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateFeedPublicResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateFeedPublicResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateFeedPublicResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateKfRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateKfRequest.json
new file mode 100644
index 00000000..123b3062
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateKfRequest.json
@@ -0,0 +1,4 @@
+{
+ "roomId": 6491,
+ "closeKf": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateKfResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateKfResponse.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateKfResponse.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateReplayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateReplayRequest.json
new file mode 100644
index 00000000..028f6195
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateReplayRequest.json
@@ -0,0 +1,4 @@
+{
+ "roomId": 6474,
+ "closeReplay": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateReplayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateReplayResponse.json
new file mode 100644
index 00000000..27dc7b40
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/LiveBroadcast/WxaApiBroadcastRoomUpdateReplayResponse.json
@@ -0,0 +1,3 @@
+{
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateAddTemplateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateAddTemplateRequest.json
new file mode 100644
index 00000000..3d47181c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateAddTemplateRequest.json
@@ -0,0 +1,5 @@
+{
+ "tid": "401",
+ "kidList": [ 1, 2 ],
+ "sceneDesc": "测试数据"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateAddTemplateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateAddTemplateResponse.json
new file mode 100644
index 00000000..ca218343
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateAddTemplateResponse.json
@@ -0,0 +1,5 @@
+{
+ "errmsg": "ok",
+ "errcode": 0,
+ "priTmplId": "9Aw5ZV1j9xdWTFEkqCpZ7jWySL7aGN6rQom4gXINfJs"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateDeleteTemplateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateDeleteTemplateRequest.json
new file mode 100644
index 00000000..d70f1490
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateDeleteTemplateRequest.json
@@ -0,0 +1,3 @@
+{
+ "priTmplId": "9Aw5ZV1j9xdWTFEkqCpZ7jWySL7aGN6rQom4gXINfJs"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateDeleteTemplateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateDeleteTemplateResponse.json
new file mode 100644
index 00000000..37140398
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateDeleteTemplateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errmsg": "ok",
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetCategoryRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetCategoryRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetCategoryRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetCategoryResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetCategoryResponse.json
new file mode 100644
index 00000000..123dedcc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetCategoryResponse.json
@@ -0,0 +1,10 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": [
+ {
+ "id": 616,
+ "name": "公交"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetPublicTemplateKeywordsRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetPublicTemplateKeywordsRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetPublicTemplateKeywordsRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetPublicTemplateKeywordsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetPublicTemplateKeywordsResponse.json
new file mode 100644
index 00000000..cdc2cd1e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetPublicTemplateKeywordsResponse.json
@@ -0,0 +1,12 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": [
+ {
+ "kid": 1,
+ "name": "物品名称",
+ "example": "名称",
+ "rule": "thing"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetPublicTemplateTitlesRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetPublicTemplateTitlesRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetPublicTemplateTitlesRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetPublicTemplateTitlesResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetPublicTemplateTitlesResponse.json
new file mode 100644
index 00000000..c21a3674
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetPublicTemplateTitlesResponse.json
@@ -0,0 +1,13 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "count": 55,
+ "data": [
+ {
+ "tid": 99,
+ "title": "付款成功通知",
+ "type": 2,
+ "categoryId": "616"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetTemplateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetTemplateRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetTemplateRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetTemplateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetTemplateResponse.json
new file mode 100644
index 00000000..4cc97e80
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/NewTemplate/WxaApiNewTemplateGetTemplateResponse.json
@@ -0,0 +1,13 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "data": [
+ {
+ "priTmplId": "9Aw5ZV1j9xdWTFEkqCpZ7mIBbSC34khK55OtzUPl0rU",
+ "title": "报名结果通知",
+ "content": "会议时间:{{date2.DATA}}\n会议地点:{{thing1.DATA}}\n",
+ "example": "会议时间:2016年8月8日\n会议地点:TIT会议室\n",
+ "type": 2
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiFeedbackListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiFeedbackListRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiFeedbackListRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiFeedbackListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiFeedbackListResponse.json
new file mode 100644
index 00000000..07e449c5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiFeedbackListResponse.json
@@ -0,0 +1,18 @@
+{
+ "list": [
+ {
+ "record_id": 1,
+ "create_time": 1587571200,
+ "content": "白屏了",
+ "phone": 18800000000,
+ "openid": "openidxxxxxx",
+ "nickname": "反馈用户昵称",
+ "head_url": "反馈用户头像",
+ "type": 1,
+ "mediaIds": [],
+ "systemInfo": "{}"
+ }
+ ],
+ "total_num": 100,
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetClientVersionRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetClientVersionRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetClientVersionRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetClientVersionResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetClientVersionResponse.json
new file mode 100644
index 00000000..83ebd108
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetClientVersionResponse.json
@@ -0,0 +1,14 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "cvlist": [
+ {
+ "type": 1,
+ "client_version_list": []
+ },
+ {
+ "type": 2,
+ "client_version_list": []
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetPerformanceRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetPerformanceRequest.json
new file mode 100644
index 00000000..301b4f63
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetPerformanceRequest.json
@@ -0,0 +1,9 @@
+{
+ "cost_time_type": 2,
+ "default_start_time": 1572339403,
+ "default_end_time": 1574931403,
+ "device": "@_all",
+ "networktype": "@_all",
+ "scene": "@_all",
+ "is_download_code": "@_all"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetPerformanceResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetPerformanceResponse.json
new file mode 100644
index 00000000..94e4a76b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetPerformanceResponse.json
@@ -0,0 +1,5 @@
+{
+ "default_time_data": "{\"list\":[{\"ref_date\":\"20191029\",\"cost_time_type\":2,\"cost_time\":1533},{\"ref_date\":\"20191030\",\"cost_time_type\":2,\"cost_time\":1682}]}",
+ "compare_time_data": "",
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetSceneRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetSceneRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetSceneRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetSceneResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetSceneResponse.json
new file mode 100644
index 00000000..46a404ca
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogGetSceneResponse.json
@@ -0,0 +1,14 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "scene": [
+ {
+ "name": "全部",
+ "value": "@_all"
+ },
+ {
+ "name": "小程序历史列表",
+ "value": 1
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogJsErrorDetailRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogJsErrorDetailRequest.json
new file mode 100644
index 00000000..671cbdf8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogJsErrorDetailRequest.json
@@ -0,0 +1,14 @@
+{
+ "startTime": "2021-01-25",
+ "endTime": "2021-01-26",
+ "errorMsgMd5": "f2fb4f8cd638466ad0e7607b01b7d0ca",
+ "errorStackMd5": "795a63b70ce5755c7103611d93077603",
+ "appVersion": "0",
+ "sdkVersion": "0",
+ "osName": "2",
+ "clientVersion": "0",
+ "openid": "",
+ "offset": 0,
+ "limit": 10,
+ "desc": "0"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogJsErrorDetailResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogJsErrorDetailResponse.json
new file mode 100644
index 00000000..db9c3851
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogJsErrorDetailResponse.json
@@ -0,0 +1,27 @@
+{
+ "data": [
+ {
+ "Count": "1",
+ "sdkVersion": "2.14.1",
+ "ClientVersion": "7.0.21",
+ "errorStackMd5": "e371cd9cae821969c855f9f461327dac",
+ "TimeStamp": "2021-01-25 16:36:39",
+ "appVersion": "2.6.16",
+ "errorMsgMd5": "53b4825ec4a41d966f88c298c718de80",
+ "errorMsg": "errCode: -404012 polling exceed max timeout retry | errMsg: cloud.callFunction:fail polling exceed max timeout retry (callId: 1611553677669-0.2531087324274228) (trace: 13:47:57 start->13:48:12 timeout, retry->13:48:18 app hide->13:48:27 timeout, retry->13:48:42 timeout, abort); at cloud.callFunction api; ",
+ "errorStack": "Error: errCode: -404012 polling exceed max timeout retry | errMsg: cloud.callFunction:fail polling exceed max timeout retry (callId: 1611553677669-0.2531087324274228) (trace: 13:47:57 start->13:48:12 timeout, retry->13:48:18 app hide->13:48:27 timeout, retry->13:48:42 timeout, abort); at cloud.callFunction api; \n at new t (https://usr/app-service.js:2:320930)\n at c (https://usr/app-service.js:2:321660)\n at l (https://usr/app-service.js:2:321755)\n at https://usr/app-service.js:2:297192\n at https://usr/app-service.js:2:76398\n at Object.next (https://usr/app-service.js:2:76503)\n at s (https://usr/app-service.js:2:75234)",
+ "Ds": "2021-01-25",
+ "OsName": "1",
+ "openId": "o-0YS0ZNM_bzkm13NKNUSwbrEkYU",
+ "pluginversion": "0",
+ "appId": "wxcff7381e631cf54e",
+ "DeviceModel": "Redmi Note 5Aarm64-v8a",
+ "source": "",
+ "route": "",
+ "Uin": "",
+ "nickname": ""
+ }
+ ],
+ "totalCount": 1,
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogJsErrorListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogJsErrorListRequest.json
new file mode 100644
index 00000000..4de434e8
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogJsErrorListRequest.json
@@ -0,0 +1,12 @@
+{
+ "startTime": "2021-01-25",
+ "endTime": "2021-01-26",
+ "errType": "0",
+ "appVersion": "0",
+ "openid": "",
+ "keyword": "",
+ "orderby": "uv",
+ "desc": "2",
+ "offset": 0,
+ "limit": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogJsErrorListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogJsErrorListResponse.json
new file mode 100644
index 00000000..fcc0957a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiLogJsErrorListResponse.json
@@ -0,0 +1,16 @@
+{
+ "data": [
+ {
+ "errorMsgMd5": "53b4825ec4a41d966f88c298c718de80",
+ "errorMsg": "errCode: -404012 polling exceed max timeout retry | errMsg: cloud.callFunction:fail polling exceed max timeout retry (callId: 1611553677669-0.2531087324274228) (trace: 13:47:57 start->13:48:12 timeout, retry->13:48:18 app hide->13:48:27 timeout, retry->13:48:42 timeout, abort); at cloud.callFunction api; \nError: errCode: -404012 polling exceed max timeout retry | errMsg: cloud.callFunction:fail polling exceed max timeout retry (callId: 1611553677669-0.2531087324274228) (trace: 13:47:57 start->13:48:12 timeout, retry->13:48:18 app hide->13:48:27 timeout, retry->13:48:42 timeout, abort); at cloud.callFunction api; \n at new t (https://usr/app-service.js:2:320930)\n at c (https://usr/app-service.js:2:321660)\n at l (https://usr/app-service.js:2:321755)\n at https://usr/app-service.js:2:297192\n at https://usr/app-service.js:2:76398\n at Object.next (https://usr/app-service.js:2:76503)\n at s (https://usr/app-service.js:2:75234)\n",
+ "uv": 1,
+ "pv": 1,
+ "errorStackMd5": "e371cd9cae821969c855f9f461327dac",
+ "errorStack": "errCode: -404012 polling exceed max timeout retry | errMsg: cloud.callFunction:fail polling exceed max timeout retry (callId: 1611553677669-0.2531087324274228) (trace: 13:47:57 start->13:48:12 timeout, retry->13:48:18 app hide->13:48:27 timeout, retry->13:48:42 timeout, abort); at cloud.callFunction api; \nError: errCode: -404012 polling exceed max timeout retry | errMsg: cloud.callFunction:fail polling exceed max timeout retry (callId: 1611553677669-0.2531087324274228) (trace: 13:47:57 start->13:48:12 timeout, retry->13:48:18 app hide->13:48:27 timeout, retry->13:48:42 timeout, abort); at cloud.callFunction api; \n at new t (https://usr/app-service.js:2:320930)\n at c (https://usr/app-service.js:2:321660)\n at l (https://usr/app-service.js:2:321755)\n at https://usr/app-service.js:2:297192\n at https://usr/app-service.js:2:76398\n at Object.next (https://usr/app-service.js:2:76503)\n at s (https://usr/app-service.js:2:75234)\n",
+ "pvPercent": "0.1%",
+ "uvPercent": "1.1%"
+ }
+ ],
+ "totalCount": 739,
+ "errcode": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiUserLogSearchRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiUserLogSearchRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiUserLogSearchRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiUserLogSearchResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiUserLogSearchResponse.json
new file mode 100644
index 00000000..f9e2d97a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaApi/Operation/WxaApiUserLogSearchResponse.json
@@ -0,0 +1,32 @@
+{
+ "errcode": 0,
+ "errmsg": "",
+ "data": {
+ "list": [
+ {
+ "level": 6,
+ "platform": 1,
+ "libraryVersion": "2.8.3",
+ "clientVersion": "7.0.7",
+ "id": "oXu034-Kl5Et2U0vsexKDsFaon0Q",
+ "timestamp": 1570852796,
+ "msg": [
+ {
+ "time": 1570852795,
+ "msg": [ "hello world" ],
+ "level": 2
+ },
+ {
+ "time": 1570852795,
+ "msg": [ "get msg list mig 10006" ],
+ "level": 4
+ }
+ ],
+ "url": "pages/chat/chat",
+ "traceid": "oXu03410akoNqfsrMMswk6Zwwl1U_1570852656",
+ "filterMsg": "NetworkExceed08 ReportTimeTotal"
+ }
+ ],
+ "total": 1000
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchCreateMatchRuleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchCreateMatchRuleRequest.json
new file mode 100644
index 00000000..2924fc3a
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchCreateMatchRuleRequest.json
@@ -0,0 +1,13 @@
+{
+ "team_count": 2,
+ "team_member_count": 1,
+ "need_room_service_info": 1,
+ "game_room_info": {
+ "game_tick": 30,
+ "udp_reliability_strategy": 3,
+ "start_percent": 100,
+ "need_user_info": true,
+ "game_last_time": 1800,
+ "need_game_seed": true
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchCreateMatchRuleResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchCreateMatchRuleResponse.json
new file mode 100644
index 00000000..c5b61011
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchCreateMatchRuleResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "match_id": "FD0PT4rKguEdK-L83RaJgdbchUCW8wjhSwgCku4CLQk"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchDeleteMatchRuleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchDeleteMatchRuleRequest.json
new file mode 100644
index 00000000..cd5f4f0b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchDeleteMatchRuleRequest.json
@@ -0,0 +1,3 @@
+{
+ "match_id": "FD0PT4rKguEdK-L83RaJgdbchUCW8wjhSwgCku4CLQk"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchDeleteMatchRuleResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchDeleteMatchRuleResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchDeleteMatchRuleResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchGetAllMatchRuleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchGetAllMatchRuleRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchGetAllMatchRuleRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchGetAllMatchRuleResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchGetAllMatchRuleResponse.json
new file mode 100644
index 00000000..afe60f35
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchGetAllMatchRuleResponse.json
@@ -0,0 +1,21 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "match_rule_list": [
+ {
+ "match_id": "FD0PT4rKguEdK-L83RaJgdbchUCW8wjhSwgCku4CLQk",
+ "open_state": 0,
+ "team_count": 2,
+ "team_member_count": 1,
+ "need_room_service_info": 1,
+ "game_room_info": {
+ "game_tick": 30,
+ "udp_reliability_strategy": 3,
+ "start_percent": 100,
+ "need_user_info": true,
+ "game_last_time": 1800,
+ "need_game_seed": true
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchSetMatchOpenStateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchSetMatchOpenStateRequest.json
new file mode 100644
index 00000000..a136178d
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchSetMatchOpenStateRequest.json
@@ -0,0 +1,4 @@
+{
+ "match_id": "FD0PT4rKguEdK-L83RaJgdbchUCW8wjhSwgCku4CLQk",
+ "open_state": 1
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchSetMatchOpenStateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchSetMatchOpenStateResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchSetMatchOpenStateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchUpdateMatchRuleRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchUpdateMatchRuleRequest.json
new file mode 100644
index 00000000..cefdee9c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchUpdateMatchRuleRequest.json
@@ -0,0 +1,14 @@
+{
+ "team_count": 3,
+ "team_member_count": 3,
+ "need_room_service_info": 1,
+ "match_id": "FD0PT4rKguEdK-L83RaJgdbchUCW8wjhSwgCku4CLQk",
+ "game_room_info": {
+ "game_tick": 30,
+ "udp_reliability_strategy": 3,
+ "start_percent": 100,
+ "need_user_info": true,
+ "game_last_time": 3600,
+ "need_game_seed": true
+ }
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchUpdateMatchRuleResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchUpdateMatchRuleResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/GameMatch/WxaBusinessGameMatchUpdateMatchRuleResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetLiveInfoRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetLiveInfoRequest.json
new file mode 100644
index 00000000..46e2dc2f
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetLiveInfoRequest.json
@@ -0,0 +1,4 @@
+{
+ "start": 0,
+ "limit": 10
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetLiveInfoResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetLiveInfoResponse.json
new file mode 100644
index 00000000..d9d6afab
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetLiveInfoResponse.json
@@ -0,0 +1,38 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "total": 1,
+ "room_info": [
+ {
+ "name": "直播房间名",
+ "roomid": 1,
+ "cover_img": "http://http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/Rl1RuuhdstSfZa8EEljedAYcbtX3Ejpdl2et1tPAQ37bdicnxoVialDLCKKDcPBy8Iic0kCiaiaalXg3EbpNKoicrweQ\/0?wx_fmt=jpeg",
+ "share_img": "http://http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/Rl1RuuhdstSfZa8EEljedAYcbtX3Ejpdl2et1tPAQ37bdicnxoVialDLCKKDcPBy8Iic0kCiaiaalXg3EbpNKoicrweQ\/0?wx_fmt=jpeg",
+ "live_status": 101,
+ "start_time": 1568128900,
+ "end_time": 1568131200,
+ "anchor_name": "里斯",
+ "goods": [
+ {
+ "cover_img": "http://http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/Rl1RuuhdstSfZa8EEljedAYcbtX3Ejpdl2et1tPAQ37bdicnxoVialDLCKKDcPBy8Iic0kCiaiaalXg3EbpNKoicrweQ\/0?wx_fmt=jpeg",
+ "url": "pages/index/index.html",
+ "name": "茶杯",
+ "price": 1889,
+ "price2": 0,
+ "price_type": 1,
+ "goods_id": 256,
+ "third_party_appid": "wx3d0fae56402d8a81"
+ }
+ ],
+ "live_type": 0,
+ "close_like": 0,
+ "close_goods": 0,
+ "close_comment": 0,
+ "close_kf": 1,
+ "close_replay": 1,
+ "is_feeds_public": 0,
+ "creater_openid": "oawjt4t9NWZV2BYaEPA89sh1XblE",
+ "feeds_img": "XXX"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetLiveReplayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetLiveReplayRequest.json
new file mode 100644
index 00000000..1bc8b02e
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetLiveReplayRequest.json
@@ -0,0 +1,6 @@
+{
+ "action": "get_replay",
+ "room_id": 354,
+ "start": 0,
+ "limit": 10
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetLiveReplayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetLiveReplayResponse.json
new file mode 100644
index 00000000..3fc05b39
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetLiveReplayResponse.json
@@ -0,0 +1,12 @@
+{
+ "live_replay": [
+ {
+ "expire_time": 0,
+ "create_time": 0,
+ "media_url": ""
+ }
+ ],
+ "errcode": 0,
+ "total": 1,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetWxaFollowersRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetWxaFollowersRequest.json
new file mode 100644
index 00000000..b0d16852
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetWxaFollowersRequest.json
@@ -0,0 +1,4 @@
+{
+ "limit": 200,
+ "page_break": 0
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetWxaFollowersResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetWxaFollowersResponse.json
new file mode 100644
index 00000000..5a3136ef
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessGetWxaFollowersResponse.json
@@ -0,0 +1,20 @@
+{
+ "followers": [
+ {
+ "openid": "openid1",
+ "subscribe_time": 1606270612,
+ "room_status": 101,
+ "room_id": 1
+ },
+
+ {
+ "openid": "openid2",
+ "subscribe_time": 1606270612,
+ "room_status": 101,
+ "room_id": 1
+ }
+ ],
+ "page_break": 1606270612,
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessPushMessageRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessPushMessageRequest.json
new file mode 100644
index 00000000..fc6ab843
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessPushMessageRequest.json
@@ -0,0 +1,4 @@
+{
+ "room_id": 1,
+ "user_openid": [ "openid1", "openid2" ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessPushMessageResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessPushMessageResponse.json
new file mode 100644
index 00000000..c07127a3
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/LiveBroadcast/WxaBusinessPushMessageResponse.json
@@ -0,0 +1,5 @@
+{
+ "message_id": "message_id",
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/Runtime/WxaBusinessRuntimeAddDeviceRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/Runtime/WxaBusinessRuntimeAddDeviceRequest.json
new file mode 100644
index 00000000..cfe318d5
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/Runtime/WxaBusinessRuntimeAddDeviceRequest.json
@@ -0,0 +1,5 @@
+{
+ "product_id": 100000,
+ "device_id_list": [ "deviceid_1", "deviceid_2", "deviceid_3" ],
+ "model_name": "YOUR_MODEL_NAME"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/Runtime/WxaBusinessRuntimeAddDeviceResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/Runtime/WxaBusinessRuntimeAddDeviceResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/ModelSamples/WxaBusiness/Runtime/WxaBusinessRuntimeAddDeviceResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/SKIT.FlurlHttpClient.Wechat.Api.UnitTests.csproj b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/SKIT.FlurlHttpClient.Wechat.Api.UnitTests.csproj
index 28b84863..d07beb62 100644
--- a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/SKIT.FlurlHttpClient.Wechat.Api.UnitTests.csproj
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/SKIT.FlurlHttpClient.Wechat.Api.UnitTests.csproj
@@ -14,6 +14,12 @@
PreserveNewest
+
+ PreserveNewest
+
+
+ PreserveNewest
+
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiDefinitionTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiDefinitionTests.cs
index 86658e2c..a993a8db 100644
--- a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiDefinitionTests.cs
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiDefinitionTests.cs
@@ -16,7 +16,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
[Fact(DisplayName = "验证模型定义")]
public void ModelDefinitionsTest()
{
- static void SetPropertiesValueRecursively(object obj)
+ static void TrySetPropertiesValueRecursively(object obj)
{
var lstProperty = obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var tProperty in lstProperty)
@@ -24,6 +24,11 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
if (tProperty.SetMethod == null || !tProperty.SetMethod.IsPublic)
continue;
+ var newtonsoftJsonAttribute = tProperty.GetCustomAttribute();
+ var systemTextJsonAttribute = tProperty.GetCustomAttribute();
+ if (newtonsoftJsonAttribute?.PropertyName != systemTextJsonAttribute?.Name)
+ throw new Exception($"`{obj.GetType().Name}` fields mismatching: `{newtonsoftJsonAttribute.PropertyName}` & `{systemTextJsonAttribute.Name}`");
+
if (tProperty.PropertyType.IsPrimitive)
{
// noop
@@ -33,7 +38,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
Type tEl = tProperty.PropertyType.Assembly.GetType(tProperty.PropertyType.FullName.Replace("[]", string.Empty));
object propEl = (tEl == typeof(string)) ? string.Empty : Activator.CreateInstance(tEl);
propEl = Convert.ChangeType(propEl, tEl);
- SetPropertiesValueRecursively(propEl);
+ TrySetPropertiesValueRecursively(propEl);
Array prop = Array.CreateInstance(tEl, 1);
prop.SetValue(propEl, 0);
@@ -60,7 +65,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
Type tGeneric = tProperty.PropertyType.GetGenericArguments().Single();
object propEl = (tGeneric == typeof(string)) ? string.Empty : Activator.CreateInstance(tGeneric);
propEl = Convert.ChangeType(propEl, tGeneric);
- SetPropertiesValueRecursively(propEl);
+ TrySetPropertiesValueRecursively(propEl);
Type tList = typeof(List<>).MakeGenericType(new Type[] { tGeneric });
object prop = Activator.CreateInstance(tList);
@@ -72,7 +77,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
else
{
object prop = Activator.CreateInstance(tProperty.PropertyType);
- SetPropertiesValueRecursively(prop);
+ TrySetPropertiesValueRecursively(prop);
tProperty.SetValue(obj, prop);
}
@@ -82,7 +87,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
var lstModel = _assembly.GetTypes()
.Where(e =>
e.Namespace != null &&
- e.Namespace.Equals(_assembly.GetName().Name + "Models") &&
+ e.Namespace.Equals(_assembly.GetName().Name + ".Models") &&
e.IsClass &&
!e.IsAbstract &&
!e.IsInterface &&
@@ -137,7 +142,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
try
{
object instance = _assembly.CreateInstance(tModel.Namespace + "." + tModel.Name);
- SetPropertiesValueRecursively(instance);
+ TrySetPropertiesValueRecursively(instance);
new FlurlNewtonsoftJsonSerializer().Serialize(instance);
new FlurlSystemTextJsonSerializer().Serialize(instance);
@@ -203,7 +208,10 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
}
else if (retv == null || !retv.EndsWith("Response"))
{
- exceptions.Add(tMethod);
+ if (!tMethod.ReturnType.GenericTypeArguments.First().IsGenericType)
+ {
+ exceptions.Add(tMethod);
+ }
continue;
}
else if (!string.Equals(func, $"Execute{para.Substring(0, para.Length - "Request".Length)}Async"))
@@ -225,7 +233,9 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
[Fact(DisplayName = "验证字段定义")]
public void FieldDefinitionsTest()
{
- static string[] GetFiles(string path)
+ var exceptions = new List();
+
+ string[] GetAllFiles(string path)
{
var results = new List();
@@ -236,56 +246,101 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
foreach (string dir in dirs)
{
- results.AddRange(GetFiles(dir));
+ results.AddRange(GetAllFiles(dir));
}
return results.ToArray();
}
- string workdir = Path.Combine(Environment.CurrentDirectory, "ModelSamples");
- Assert.True(Directory.Exists(workdir));
-
- var lstFile = GetFiles(workdir)
- .Where(e => string.Equals(Path.GetExtension(e), ".json", StringComparison.InvariantCultureIgnoreCase))
- .ToList();
- Assert.NotEmpty(lstFile);
-
- var exceptions = new List();
-
- foreach (string file in lstFile)
+ void VerifyJsonSamples(string subdir, string subns)
{
- string json = File.ReadAllText(file);
- string name = Path.GetFileNameWithoutExtension(file);
+ string workdir = Path.Combine(Environment.CurrentDirectory, subdir);
+ Assert.True(Directory.Exists(workdir));
- Type type = _assembly.GetType($"{_assembly.GetName().Name}.Models.{name}");
- if (type == null)
+ var lstFile = GetAllFiles(workdir)
+ .Where(e => string.Equals(Path.GetExtension(e), ".json", StringComparison.InvariantCultureIgnoreCase))
+ .ToList();
+ Assert.NotEmpty(lstFile);
+
+ foreach (string file in lstFile)
{
- exceptions.Add(name);
- continue;
- }
+ string json = File.ReadAllText(file);
+ string name = Path.GetFileNameWithoutExtension(file);
- try
- {
- var settings = FlurlNewtonsoftJsonSerializer.GetDefaultSerializerSettings();
- settings.CheckAdditionalContent = true;
- settings.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Error;
- new FlurlNewtonsoftJsonSerializer(settings).Deserialize(json, type);
+ Type type = _assembly.GetType($"{_assembly.GetName().Name}.{subns}.{name}");
+ if (type == null)
+ {
+ exceptions.Add(name);
+ continue;
+ }
- new FlurlSystemTextJsonSerializer().Deserialize(json, type);
- }
- catch (Exception ex)
- {
- exceptions.Add(name);
+ try
+ {
+ var settings = FlurlNewtonsoftJsonSerializer.GetDefaultSerializerSettings();
+ settings.CheckAdditionalContent = true;
+ settings.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Error;
+ new FlurlNewtonsoftJsonSerializer(settings).Deserialize(json, type);
- if (ex is Newtonsoft.Json.JsonException)
- throw new Exception($"Deserialize `{name}` by Newtonsoft.Json failed.", ex);
- else if (ex is System.Text.Json.JsonException)
- throw new Exception($"Deserialize `{name}` by System.Text.Json failed.", ex);
- else
- throw new Exception($"Deserialize `{name}` failed.", ex);
+ new FlurlSystemTextJsonSerializer().Deserialize(json, type);
+ }
+ catch (Exception ex)
+ {
+ exceptions.Add(name);
+
+ if (ex is Newtonsoft.Json.JsonException)
+ throw new Exception($"Deserialize `{name}` by Newtonsoft.Json failed.", ex);
+ else if (ex is System.Text.Json.JsonException)
+ throw new Exception($"Deserialize `{name}` by System.Text.Json failed.", ex);
+ else
+ throw new Exception($"Deserialize `{name}` failed.", ex);
+ }
}
}
-
+
+ void VerifyXmlSamples(string subdir, string subns)
+ {
+ string workdir = Path.Combine(Environment.CurrentDirectory, subdir);
+ Assert.True(Directory.Exists(workdir));
+
+ var lstFile = GetAllFiles(workdir)
+ .Where(e => string.Equals(Path.GetExtension(e), ".xml", StringComparison.InvariantCultureIgnoreCase))
+ .ToList();
+ Assert.NotEmpty(lstFile);
+
+ foreach (string file in lstFile)
+ {
+ string xml = File.ReadAllText(file);
+ string name = Path.GetFileNameWithoutExtension(file);
+
+ Type type = _assembly.GetType($"{_assembly.GetName().Name}.{subns}.{name}");
+ if (type == null)
+ {
+ exceptions.Add(name);
+ continue;
+ }
+
+ try
+ {
+ using StringReader reader = new StringReader(xml);
+ System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(type, new System.Xml.Serialization.XmlRootAttribute("xml"));
+ xmlSerializer.Deserialize(reader);
+ }
+ catch (Exception ex)
+ {
+ exceptions.Add(name);
+
+ if (ex is System.Xml.XmlException)
+ throw new Exception($"Deserialize `{name}` by System.Xml failed.", ex);
+ else
+ throw new Exception($"Deserialize `{name}` failed.", ex);
+ }
+ }
+ }
+
+ VerifyJsonSamples("ModelSamples", "Models");
+ VerifyJsonSamples("EventSamples", "Events");
+ VerifyXmlSamples("EventSamples", "Events");
+
Assert.Empty(exceptions);
}
}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiEventDeserializationTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiEventDeserializationTests.cs
new file mode 100644
index 00000000..2a3178cb
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiEventDeserializationTests.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiEventDeserializationTests
+ {
+ [Fact(DisplayName = "反序列化 TEXT 事件")]
+ public void DeserializeTextMessageEventTest()
+ {
+ string xml = "13488318601234567890123456";
+
+ var eventModel = TestClients.Instance.DeserializeEventFromXml(xml);
+
+ Assert.Equal("fromUser", eventModel.FromUserName);
+ Assert.Equal("toUser", eventModel.ToUserName);
+ Assert.Equal("text", eventModel.MessageType);
+ Assert.Equal(1234567890123456L, eventModel.MessageId);
+ Assert.Equal("this is a test", eventModel.Content);
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCVTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCVTests.cs
new file mode 100644
index 00000000..f95afce9
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCVTests.cs
@@ -0,0 +1,72 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiExecuteCVTests
+ {
+ [Fact(DisplayName = "[POST] /cv/img/qrcode")]
+ public async Task CVImageQrcodeTest()
+ {
+ var request = new Models.CVImageQrcodeRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ ImageFileBytes = Convert.FromBase64String("iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAD/UlEQVRoBd2X21IjMQxE8/8/DSVXjjnpkcaBNzJVuy31zR6yFOzj60Oex4e8x9d+kcfj8fXOn3px+/hCJMfe+dEKT7q9OXP26mBJ07R3B3cc+TutPCedng5X+PnX5ROx6JkiczVzGXh8E5Kx7qx1+ESy5tsXwQh25dZSL82PvcygfczWmMHyeN6ZPTy/R2x0IOfMWUebuqzbA+8uZrDzL+4v4Srl4QAQHoQH4Y2peWcGK+eZnn0ji8zgFKbEujPw9sGlzx5rzKDzLxkWG+GMqbN3WDl4z8X5secdHk+X282IJ6yy8vAwk5t08ycv+gm5w+pmOYXQfSHPJ/03XrpOyN1Xt5ffzBxCxnvN3QM/edG77IlrT3Qhh4JVaJ3d+nQonhNmHj987usOKZZpCfq5ggfeOzPlILwRzVg6u73MpeXT+bcLkSB7V5Jc7fjBdzyns+jNru6My4sQwpyHmUfjQDQ6wImfcvjpz51e436RFzJ+pU+tdso9w91hdqXXetedOvtbL+LDCIKl+cELN+nwYPkza84+uo2vt3gqFHbocM15ABl8kw4P0uXdXPL0g5cXqYBDuROc0Fk8dJwQv9EZ8zlfXqQMDtdszrN9y6Qsu/2e3WuvZ/rh2EH4wsuLcIBNnlNn78qdY8aXOXZ8xinz4vFS811hp+PnsOzLHV/m2NPPmeS827s/kTRiggddVBwPurnOO/nSi898nsW+PF4WoctNuy/LnAe71xqdcOThuxxeazn/fEmfiouL6nZzzIWefZA1OuHIwHc5vNZy3i+CmWJ2At6Z7bWv5vTA4QPpsE7WHLP9dCyNhfCE9q2gfo3J3Yd5psPo88zTCR57unBXDkdx5rz70G6mCyRrL+eYww+SW14vDqfZe813j/Vupguky17fxTqZixcTaKNn68x3SNaey+GH3xoqS09m3bt8EAQyTAH6ae/ymeVMvOz4cofnbHTj5d9ImikhxJ446fCFXSa52nmY8cB3+JN6qoQxZwl7YvrR4QvhwI4rjYfZfrTEnZrMXRleNJfC4bHWzfhLI5PonLUX3su7s8u6+a7H/vSVlo/9zOmpfScxnTBLyr+K9CtK56HXXrL42SeveTLg574Ib5jorwZfufKYn3Z3OQtPx6TZx5x4+UTK4GLK4VJnpxjfhPjp9T5lJp4zVwcL5q7YXPq5EHmw86EZ8XVYvnrsh0v/nz6RLM/dh+Ulcs8LeafnncyfXsTFvAQX4PC7nbw95NDY6Yf3Tn5xLDbCGe90H7pK4+eBs8wdZjY96PAv92NBPCF+sPz1kGO2bg09c93e5TK/z9mD/sdHQYf4wbxA8XDM9DiDB63b0ZxzJ/zivPzneX+z/+eX+KhP5Btmhzo0tfoUxgAAAABJRU5ErkJggg==")
+ };
+ var response = await TestClients.Instance.ExecuteCVImageQrcodeAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ Assert.NotEmpty(response.ResultList);
+ Assert.NotNull(response.ImageSize);
+ }
+
+ [Fact(DisplayName = "[POST] /cv/img/aicrop")]
+ public async Task CVImageAICropTest()
+ {
+ var request = new Models.CVImageAICropRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ ImageFileBytes = Convert.FromBase64String("/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAcABwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KK+bv25viR458H/ABS+E+meDNb8S6YNW1LffWuk22lyRaig1DS7fZePfRuY7QR3cxc2zR3BOwRsWwp8I8Hftl/FD4k+H9G1HVvEnij4dHSbnTJ2hubXQGXxYrHSIypKpc7bS7N9MyqjW92DsH7nGwkfe++3/pP/AMktN97IbTX3X/P/AORfltqfoRRXzTr3xA8eeI7T4i6BdeJ/EXhM/DiyuFm13RrLTmvtZmuJPtGn/ZhdW09v5iWapHKDAVea6wqjZXvnw40rVtC+HuhWWv6m+ta7aafBDqOoNHHGb65WNRLMVjREXe4ZsIiqM8KBxRHVc3p+N/ytr2uvkno7ev4W/O+nezK3jX4TaB8Q9VsL7V7Frm70yNo7WVbmWFoVaa3nONjLz5lrA2eo8vjgsD554v8A+Cf/AMKvHGnaLaX2g6tHb6Bc2d1aR2PiTVLAFrQQi3WXyLhPPjQ28DeVNvRmhRmUsoNezUUdb9tfu2DpY4X4mfs4+E/i54b8RaVrFrq0dv4qntLrUZtM1u+0q7eW1aJ7eSO5tZopoGRoYyDE6E7ec5Oes8NeH4PCfh2w0u1e9lttOt47aJ7y8mvbh0RQoMk8zPLK+By8jM7HJYkkmr1FC0VkG+/T+v0R/9k=")
+ };
+ var response = await TestClients.Instance.ExecuteCVImageAICropAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ Assert.NotEmpty(response.ResultList);
+ Assert.NotNull(response.ImageSize);
+ }
+
+ [Fact(DisplayName = "[POST] /cv/img/superresolution")]
+ public async Task CVImageSuperResolutionTest()
+ {
+ var request = new Models.CVImageSuperResolutionRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ ImageFileBytes = Convert.FromBase64String("/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAcABwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KK+bv25viR458H/ABS+E+meDNb8S6YNW1LffWuk22lyRaig1DS7fZePfRuY7QR3cxc2zR3BOwRsWwp8I8Hftl/FD4k+H9G1HVvEnij4dHSbnTJ2hubXQGXxYrHSIypKpc7bS7N9MyqjW92DsH7nGwkfe++3/pP/AMktN97IbTX3X/P/AORfltqfoRRXzTr3xA8eeI7T4i6BdeJ/EXhM/DiyuFm13RrLTmvtZmuJPtGn/ZhdW09v5iWapHKDAVea6wqjZXvnw40rVtC+HuhWWv6m+ta7aafBDqOoNHHGb65WNRLMVjREXe4ZsIiqM8KBxRHVc3p+N/ytr2uvkno7ev4W/O+nezK3jX4TaB8Q9VsL7V7Frm70yNo7WVbmWFoVaa3nONjLz5lrA2eo8vjgsD554v8A+Cf/AMKvHGnaLaX2g6tHb6Bc2d1aR2PiTVLAFrQQi3WXyLhPPjQ28DeVNvRmhRmUsoNezUUdb9tfu2DpY4X4mfs4+E/i54b8RaVrFrq0dv4qntLrUZtM1u+0q7eW1aJ7eSO5tZopoGRoYyDE6E7ec5Oes8NeH4PCfh2w0u1e9lttOt47aJ7y8mvbh0RQoMk8zPLK+By8jM7HJYkkmr1FC0VkG+/T+v0R/9k=")
+ };
+ var response = await TestClients.Instance.ExecuteCVImageSuperResolutionAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ Assert.NotNull(response.MediaId);
+ }
+
+ [Fact(DisplayName = "[POST] /cv/ocr/comm")]
+ public async Task CVOCRCommonTest()
+ {
+ var request = new Models.CVOCRCommonRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ ImageFileBytes = Convert.FromBase64String("/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAcABwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KK+bv25viR458H/ABS+E+meDNb8S6YNW1LffWuk22lyRaig1DS7fZePfRuY7QR3cxc2zR3BOwRsWwp8I8Hftl/FD4k+H9G1HVvEnij4dHSbnTJ2hubXQGXxYrHSIypKpc7bS7N9MyqjW92DsH7nGwkfe++3/pP/AMktN97IbTX3X/P/AORfltqfoRRXzTr3xA8eeI7T4i6BdeJ/EXhM/DiyuFm13RrLTmvtZmuJPtGn/ZhdW09v5iWapHKDAVea6wqjZXvnw40rVtC+HuhWWv6m+ta7aafBDqOoNHHGb65WNRLMVjREXe4ZsIiqM8KBxRHVc3p+N/ytr2uvkno7ev4W/O+nezK3jX4TaB8Q9VsL7V7Frm70yNo7WVbmWFoVaa3nONjLz5lrA2eo8vjgsD554v8A+Cf/AMKvHGnaLaX2g6tHb6Bc2d1aR2PiTVLAFrQQi3WXyLhPPjQ28DeVNvRmhRmUsoNezUUdb9tfu2DpY4X4mfs4+E/i54b8RaVrFrq0dv4qntLrUZtM1u+0q7eW1aJ7eSO5tZopoGRoYyDE6E7ec5Oes8NeH4PCfh2w0u1e9lttOt47aJ7y8mvbh0RQoMk8zPLK+By8jM7HJYkkmr1FC0VkG+/T+v0R/9k=")
+ };
+ var response = await TestClients.Instance.ExecuteCVOCRCommonAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ Assert.NotEmpty(response.ResultList);
+ Assert.NotNull(response.ResultList.First().Text);
+ Assert.NotNull(response.ResultList.First().Position);
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinExpressTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinExpressTests.cs
new file mode 100644
index 00000000..7686af24
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinExpressTests.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiExecuteCgibinExpressTests
+ {
+ [Fact(DisplayName = "即时配送请求签名")]
+ public async Task DeliverySignatureTest()
+ {
+ var client = new WechatApiClient(new WechatApiClientOptions()
+ {
+ AppId = "",
+ AppSecret = "",
+ ImmeDeliveryAppKey = "test_shop_id",
+ ImmeDeliveryAppSecret = "test_app_secrect"
+ });
+ var request = new Models.CgibinExpressLocalBusinessTestUpdateOrderRequest()
+ {
+ ShopOrderId = "test_shop_order_id"
+ };
+ var response = await client.ExecuteCgibinExpressLocalBusinessTestUpdateOrderAsync(request);
+
+ Assert.Equal("a93d8d6bae9a9483c1b1d4e8670e7f6226ec94cb", request.DeliverySignature, ignoreCase: true);
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinMaterialTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinMaterialTests.cs
new file mode 100644
index 00000000..8ddb3474
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinMaterialTests.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiExecuteCgibinMaterialTests
+ {
+ [Fact(DisplayName = "[GET] /cgi-bin/material/get_materialcount")]
+ public async Task CgibinMaterialGetMaterialCountTest()
+ {
+ var request = new Models.CgibinMaterialGetMaterialCountRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken
+ };
+ var response = await TestClients.Instance.ExecuteCgibinMaterialGetMaterialCountAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ }
+
+ [Fact(DisplayName = "[POST] /cgi-bin/material/batchget_material")]
+ public async Task CgibinMaterialBatchGetMaterialTest()
+ {
+ var request = new Models.CgibinMaterialBatchGetMaterialRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ Type = "news"
+ };
+ var response = await TestClients.Instance.ExecuteCgibinMaterialBatchGetMaterialAsync(request);
+
+ Assert.True(response.IsSuccessful());
+
+ if (response.Total > 0)
+ {
+ Assert.Equal(response.Count, response.MaterialList.Length);
+ Assert.NotEmpty(response.MaterialList);
+ Assert.NotEmpty(response.MaterialList.First().MediaId);
+ }
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinMediaTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinMediaTests.cs
new file mode 100644
index 00000000..d477a202
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinMediaTests.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiExecuteCgibinMediaTests
+ {
+ [Fact(DisplayName = "[POST] /cgi-bin/media/upload")]
+ public async Task CgibinMediaUploadTest()
+ {
+ var request = new Models.CgibinMediaUploadRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ Type = "image",
+ FileName = "FAKE_IMAGE.jpg",
+ FileBytes = Convert.FromBase64String("/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAcABwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KK+bv25viR458H/ABS+E+meDNb8S6YNW1LffWuk22lyRaig1DS7fZePfRuY7QR3cxc2zR3BOwRsWwp8I8Hftl/FD4k+H9G1HVvEnij4dHSbnTJ2hubXQGXxYrHSIypKpc7bS7N9MyqjW92DsH7nGwkfe++3/pP/AMktN97IbTX3X/P/AORfltqfoRRXzTr3xA8eeI7T4i6BdeJ/EXhM/DiyuFm13RrLTmvtZmuJPtGn/ZhdW09v5iWapHKDAVea6wqjZXvnw40rVtC+HuhWWv6m+ta7aafBDqOoNHHGb65WNRLMVjREXe4ZsIiqM8KBxRHVc3p+N/ytr2uvkno7ev4W/O+nezK3jX4TaB8Q9VsL7V7Frm70yNo7WVbmWFoVaa3nONjLz5lrA2eo8vjgsD554v8A+Cf/AMKvHGnaLaX2g6tHb6Bc2d1aR2PiTVLAFrQQi3WXyLhPPjQ28DeVNvRmhRmUsoNezUUdb9tfu2DpY4X4mfs4+E/i54b8RaVrFrq0dv4qntLrUZtM1u+0q7eW1aJ7eSO5tZopoGRoYyDE6E7ec5Oes8NeH4PCfh2w0u1e9lttOt47aJ7y8mvbh0RQoMk8zPLK+By8jM7HJYkkmr1FC0VkG+/T+v0R/9k=")
+ };
+ var response = await TestClients.Instance.ExecuteCgibinMediaUploadAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ Assert.NotNull(response.Type);
+ Assert.NotNull(response.MediaId);
+ }
+
+ [Fact(DisplayName = "[GET] /cgi-bin/media/get")]
+ public async Task CgibinMediaGetTest()
+ {
+ var request = new Models.CgibinMediaGetRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ MediaId = "FAKE_MEDIAID"
+ };
+ var response = await TestClients.Instance.ExecuteCgibinMediaGetAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ }
+
+ [Fact(DisplayName = "[POST] /cgi-bin/media/uploadimg")]
+ public async Task CgibinMediaUploadImageTest()
+ {
+ var request = new Models.CgibinMediaUploadImageRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ FileName = "FAKE_IMAGE.jpg",
+ FileBytes = Convert.FromBase64String("/9j/4AAQSkZJRgABAQEAeAB4AAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAcABwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KK+bv25viR458H/ABS+E+meDNb8S6YNW1LffWuk22lyRaig1DS7fZePfRuY7QR3cxc2zR3BOwRsWwp8I8Hftl/FD4k+H9G1HVvEnij4dHSbnTJ2hubXQGXxYrHSIypKpc7bS7N9MyqjW92DsH7nGwkfe++3/pP/AMktN97IbTX3X/P/AORfltqfoRRXzTr3xA8eeI7T4i6BdeJ/EXhM/DiyuFm13RrLTmvtZmuJPtGn/ZhdW09v5iWapHKDAVea6wqjZXvnw40rVtC+HuhWWv6m+ta7aafBDqOoNHHGb65WNRLMVjREXe4ZsIiqM8KBxRHVc3p+N/ytr2uvkno7ev4W/O+nezK3jX4TaB8Q9VsL7V7Frm70yNo7WVbmWFoVaa3nONjLz5lrA2eo8vjgsD554v8A+Cf/AMKvHGnaLaX2g6tHb6Bc2d1aR2PiTVLAFrQQi3WXyLhPPjQ28DeVNvRmhRmUsoNezUUdb9tfu2DpY4X4mfs4+E/i54b8RaVrFrq0dv4qntLrUZtM1u+0q7eW1aJ7eSO5tZopoGRoYyDE6E7ec5Oes8NeH4PCfh2w0u1e9lttOt47aJ7y8mvbh0RQoMk8zPLK+By8jM7HJYkkmr1FC0VkG+/T+v0R/9k=")
+ };
+ var response = await TestClients.Instance.ExecuteCgibinMediaUploadImageAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ Assert.NotNull(response.Url);
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinMessageMassTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinMessageMassTests.cs
new file mode 100644
index 00000000..d5ad156b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinMessageMassTests.cs
@@ -0,0 +1,74 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiExecuteCgibinMessageMassTests
+ {
+ [Fact(DisplayName = "[POST] /cgi-bin/message/mass/send")]
+ public async Task CgibinMessageMassSendTest()
+ {
+ var request = new Models.CgibinMessageMassSendRequest()
+ {
+ ToUserOpenIdList = new string[] { TestConfigs.WechatOpenId, TestConfigs.WechatOpenId },
+ MessageType = "text",
+ MessageContentForText = new Models.CgibinMessageMassSendRequest.Types.TextMessage()
+ {
+ Content = "FAKE_CONTENT"
+ },
+ AccessToken = TestConfigs.WechatAccessToken
+ };
+ var response = await TestClients.Instance.ExecuteCgibinMessageMassSendAsync(request);
+
+ Assert.True(response.MessageId > 0);
+ }
+
+ [Fact(DisplayName = "[POST] /cgi-bin/message/mass/preview")]
+ public async Task CgibinMessageMassPreviewTest()
+ {
+ var request = new Models.CgibinMessageMassPreviewRequest()
+ {
+ ToUserOpenId = TestConfigs.WechatOpenId,
+ MessageType = "text",
+ MessageContentForText = new Models.CgibinMessageMassPreviewRequest.Types.TextMessage()
+ {
+ Content = "FAKE_CONTENT"
+ },
+ AccessToken = TestConfigs.WechatAccessToken
+ };
+ var response = await TestClients.Instance.ExecuteCgibinMessageMassPreviewAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ }
+
+ [Fact(DisplayName = "[GET] /cgi-bin/message/mass/speed/get")]
+ public async Task CgibinMessageMassSpeedGetTest()
+ {
+ var request = new Models.CgibinMessageMassSpeedGetRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken
+ };
+ var response = await TestClients.Instance.ExecuteCgibinMessageMassSpeedGetAsync(request);
+
+ Assert.True(response.SpeedLevel > 0);
+ Assert.True(response.SpeedValue > 0);
+ }
+
+ [Fact(DisplayName = "[POST] /cgi-bin/message/mass/speed/set")]
+ public async Task CgibinMessageMassSpeedSetTest()
+ {
+ var request = new Models.CgibinMessageMassSpeedSetRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ SpeedLevel = 1
+ };
+ var response = await TestClients.Instance.ExecuteCgibinMessageMassSpeedSetAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinMidasTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinMidasTests.cs
new file mode 100644
index 00000000..74131994
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinMidasTests.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiExecuteCgibinMidasTests
+ {
+ [Fact(DisplayName = "米大师请求签名")]
+ public async Task MidasSigTest()
+ {
+ var client = new WechatApiClient(new WechatApiClientOptions()
+ {
+ AppId = "wx1234567",
+ AppSecret = "",
+ MidasAppKey = "zNLgAGgqsEWJOg1nFVaO5r7fAlIQxr1u"
+ });
+ var request = new Models.CgibinMidasGetBalanceRequest()
+ {
+ OpenId = "odkx20ENSNa2w5y3g_qOkOvBNM1g",
+ MidasOfferId = "12345678",
+ MidasZoneId = "1",
+ Platform = "android",
+ Timestamp = 1507530737
+ };
+ var response = await client.ExecuteCgibinMidasGetBalanceAsync(request);
+
+ Assert.Equal("1ad64e8dcb2ec1dc486b7fdf01f4a15159fc623dc3422470e51cf6870734726b", request.Signature, ignoreCase: true);
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinQrcodeTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinQrcodeTests.cs
new file mode 100644
index 00000000..63ec0b2c
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinQrcodeTests.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiExecuteCgibinQrcodeTests
+ {
+ [Fact(DisplayName = "[POST] /cgi-bin/qrcode/create")]
+ public async Task CgibinQrcodeCreateTest()
+ {
+ var request = new Models.CgibinQrcodeCreateRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ ExpiresIn = 30,
+ ActionType = "QR_STR_SCENE",
+ Action = new Models.CgibinQrcodeCreateRequest.Types.Action()
+ {
+ Scene = new Models.CgibinQrcodeCreateRequest.Types.Action.Types.Scene()
+ {
+ SceneString = "FAKE_SCENESTR"
+ }
+ }
+ };
+ var response = await TestClients.Instance.ExecuteCgibinQrcodeCreateAsync(request);
+
+ Assert.NotNull(response.Ticket);
+ Assert.NotNull(response.Url);
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinTagsTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinTagsTests.cs
new file mode 100644
index 00000000..db8ebaf0
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinTagsTests.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiExecuteCgibinTagsTests
+ {
+ [Fact(DisplayName = "[POST] /cgi-bin/tags/create")]
+ public async Task CgibinTagsCreateTest()
+ {
+ var request = new Models.CgibinTagsCreateRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ Tag = new Models.CgibinTagsCreateRequest.Types.Tag()
+ {
+ Name = "FAKE_TAGNAME"
+ }
+ };
+ var response = await TestClients.Instance.ExecuteCgibinTagsCreateAsync(request);
+
+ Assert.True(response.Tag.Id > 0);
+ Assert.Equal(request.Tag.Name, response.Tag.Name);
+ }
+
+ [Fact(DisplayName = "[POST] /cgi-bin/tags/get")]
+ public async Task CgibinTagsGetTest()
+ {
+ var request = new Models.CgibinTagsGetRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken
+ };
+ var response = await TestClients.Instance.ExecuteCgibinTagsGetAsync(request);
+
+ Assert.NotEmpty(response.Tags);
+ Assert.True(response.Tags.First().Id > 0);
+ Assert.NotNull(response.Tags.First().Name);
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinTests.cs
new file mode 100644
index 00000000..50bd4834
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinTests.cs
@@ -0,0 +1,69 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiExecuteCgibinTests
+ {
+ [Fact(DisplayName = "[GET] /cgi-bin/token")]
+ public async Task CgibinTokenTest()
+ {
+ var request = new Models.CgibinTokenRequest();
+ var response = await TestClients.Instance.ExecuteCgibinTokenAsync(request);
+
+ Assert.NotNull(response.AccessToken);
+ }
+
+ [Fact(DisplayName = "[GET] /cgi-bin/ticket/getticket")]
+ public async Task CgibinTicketGetTicketTest()
+ {
+ var request = new Models.CgibinTicketGetTicketRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken
+ };
+ var response = await TestClients.Instance.ExecuteCgibinTicketGetTicketAsync(request);
+
+ Assert.NotNull(response.Ticket);
+ }
+
+ [Fact(DisplayName = "[GET] /cgi-bin/getcallbackip")]
+ public async Task CgibinGetCallbackIpTest()
+ {
+ var request = new Models.CgibinGetCallbackIpRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken
+ };
+ var response = await TestClients.Instance.ExecuteCgibinGetCallbackIpAsync(request);
+
+ Assert.NotEmpty(response.IPList);
+ }
+
+ [Fact(DisplayName = "[GET] /cgi-bin/get_api_domain_ip")]
+ public async Task CgibinGetApiDomainIpTest()
+ {
+ var request = new Models.CgibinGetApiDomainIpRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken
+ };
+ var response = await TestClients.Instance.ExecuteCgibinGetApiDomainIpAsync(request);
+
+ Assert.NotEmpty(response.IPList);
+ }
+
+ [Fact(DisplayName = "[POST] /cgi-bin/clear_quota")]
+ public async Task CgibinClearQuotaTest()
+ {
+ var request = new Models.CgibinClearQuotaRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken
+ };
+ var response = await TestClients.Instance.ExecuteCgibinClearQuotaAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinUserTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinUserTests.cs
new file mode 100644
index 00000000..c997babe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinUserTests.cs
@@ -0,0 +1,74 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiExecuteCgibinUserTests
+ {
+ [Fact(DisplayName = "[GET] /cgi-bin/user/info")]
+ public async Task CgibinUserInfoTest()
+ {
+ var request = new Models.CgibinUserInfoRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ OpenId = TestConfigs.WechatOpenId
+ };
+ var response = await TestClients.Instance.ExecuteCgibinUserInfoAsync(request);
+
+ Assert.NotEmpty(response.OpenId);
+ Assert.NotEmpty(response.Nickname);
+ Assert.True(response.IsSubscribed);
+ }
+
+ [Fact(DisplayName = "[POST] /cgi-bin/user/info/batchget")]
+ public async Task CgibinUserInfoBatchGetTest()
+ {
+ var request = new Models.CgibinUserInfoBatchGetRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ UserList = new Models.CgibinUserInfoBatchGetRequest.Types.User[]
+ {
+ new Models.CgibinUserInfoBatchGetRequest.Types.User() { OpenId = TestConfigs.WechatOpenId }
+ }
+ };
+ var response = await TestClients.Instance.ExecuteCgibinUserInfoBatchGetAsync(request);
+
+ Assert.NotEmpty(response.UserList);
+ Assert.NotEmpty(response.UserList.First().OpenId);
+ Assert.NotEmpty(response.UserList.First().Nickname);
+ Assert.True(response.UserList.First().IsSubscribed);
+ }
+
+ [Fact(DisplayName = "[POST] /cgi-bin/user/info/updateremark")]
+ public async Task CgibinUserInfoUpdateRemarkTest()
+ {
+ var request = new Models.CgibinUserInfoUpdateRemarkRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ OpenId = TestConfigs.WechatOpenId,
+ Remark = "FAKE_REMARK"
+ };
+ var response = await TestClients.Instance.ExecuteCgibinUserInfoUpdateRemarkAsync(request);
+
+ Assert.Equal(0, response.ErrorCode);
+ }
+
+ [Fact(DisplayName = "[GET] /cgi-bin/user")]
+ public async Task CgibinUserTest()
+ {
+ var request = new Models.CgibinUserRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken
+ };
+ var response = await TestClients.Instance.ExecuteCgibinUserAsync(request);
+
+ Assert.NotEmpty(response.Data.OpenIdList);
+ Assert.True(response.Total > 0);
+ Assert.True(response.Count > 0);
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinWithAccessTokenTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinWithAccessTokenTests.cs
deleted file mode 100644
index de797648..00000000
--- a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinWithAccessTokenTests.cs
+++ /dev/null
@@ -1,141 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using Xunit;
-
-namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
-{
- public class WechatApiExecuteCgibinWithAccessTokenTests
- {
- [Fact(DisplayName = "[GET] /cgi-bin/ticket/getticket")]
- public async Task CgibinTicketGetTicketTest()
- {
- var request = new Models.CgibinTicketGetTicketRequest()
- {
- AccessToken = TestConfigs.WechatAccessToken
- };
- var response = await TestClients.Instance.ExecuteCgibinTicketGetTicketAsync(request);
-
- Assert.NotNull(response.Ticket);
- }
-
- [Fact(DisplayName = "[GET] /cgi-bin/getcallbackip")]
- public async Task CgibinGetCallbackIpTest()
- {
- var request = new Models.CgibinGetCallbackIpRequest()
- {
- AccessToken = TestConfigs.WechatAccessToken
- };
- var response = await TestClients.Instance.ExecuteCgibinGetCallbackIpAsync(request);
-
- Assert.NotEmpty(response.IPList);
- }
-
- [Fact(DisplayName = "[GET] /cgi-bin/get_api_domain_ip")]
- public async Task CgibinGetApiDomainIpTest()
- {
- var request = new Models.CgibinGetApiDomainIpRequest()
- {
- AccessToken = TestConfigs.WechatAccessToken
- };
- var response = await TestClients.Instance.ExecuteCgibinGetApiDomainIpAsync(request);
-
- Assert.NotEmpty(response.IPList);
- }
-
- [Fact(DisplayName = "[GET] /cgi-bin/user/info")]
- public async Task CgibinUserInfoTest()
- {
- var request = new Models.CgibinUserInfoRequest()
- {
- AccessToken = TestConfigs.WechatAccessToken,
- OpenId = TestConfigs.WechatOpenId
- };
- var response = await TestClients.Instance.ExecuteCgibinUserInfoAsync(request);
-
- Assert.NotEmpty(response.OpenId);
- Assert.NotEmpty(response.Nickname);
- Assert.True(response.Subscribe == 1);
- }
-
- [Fact(DisplayName = "[POST] /cgi-bin/user/info/batchget")]
- public async Task CgibinUserInfoBatchGetTest()
- {
- var request = new Models.CgibinUserInfoBatchGetRequest()
- {
- AccessToken = TestConfigs.WechatAccessToken,
- UserList = new Models.CgibinUserInfoBatchGetRequest.Types.User[]
- {
- new Models.CgibinUserInfoBatchGetRequest.Types.User() { OpenId = TestConfigs.WechatOpenId }
- }
- };
- var response = await TestClients.Instance.ExecuteCgibinUserInfoBatchGetAsync(request);
-
- Assert.NotEmpty(response.UserList);
- Assert.NotEmpty(response.UserList.First().OpenId);
- Assert.NotEmpty(response.UserList.First().Nickname);
- Assert.True(response.UserList.First().Subscribe == 1);
- }
-
- [Fact(DisplayName = "[POST] /cgi-bin/user/info/updateremark")]
- public async Task CgibinUserInfoUpdateRemarkTest()
- {
- var request = new Models.CgibinUserInfoUpdateRemarkRequest()
- {
- AccessToken = TestConfigs.WechatAccessToken,
- OpenId = TestConfigs.WechatOpenId,
- Remark = "FAKE_REMARK"
- };
- var response = await TestClients.Instance.ExecuteCgibinUserInfoUpdateRemarkAsync(request);
-
- Assert.Equal(0, response.ErrorCode);
- }
-
- [Fact(DisplayName = "[GET] /cgi-bin/user")]
- public async Task CgibinUserTest()
- {
- var request = new Models.CgibinUserRequest()
- {
- AccessToken = TestConfigs.WechatAccessToken
- };
- var response = await TestClients.Instance.ExecuteCgibinUserAsync(request);
-
- Assert.NotEmpty(response.Data.OpenIdList);
- Assert.True(response.Total > 0);
- Assert.True(response.Count > 0);
- }
-
- [Fact(DisplayName = "[POST] /cgi-bin/tags/create")]
- public async Task CgibinTagsCreateTest()
- {
- var request = new Models.CgibinTagsCreateRequest()
- {
- AccessToken = TestConfigs.WechatAccessToken,
- Tag = new Models.CgibinTagsCreateRequest.Types.Tag()
- {
- Name = "FAKE_TAGNAME"
- }
- };
- var response = await TestClients.Instance.ExecuteCgibinTagsCreateAsync(request);
-
- Assert.True(response.Tag.Id > 0);
- Assert.Equal(request.Tag.Name, response.Tag.Name);
- }
-
- [Fact(DisplayName = "[POST] /cgi-bin/tags/get")]
- public async Task CgibinTagsGetTest()
- {
- var request = new Models.CgibinTagsGetRequest()
- {
- AccessToken = TestConfigs.WechatAccessToken
- };
- var response = await TestClients.Instance.ExecuteCgibinTagsGetAsync(request);
-
- Assert.NotEmpty(response.Tags);
- Assert.True(response.Tags.First().Id > 0);
- Assert.NotNull(response.Tags.First().Name);
- }
- }
-}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinWithAppSecretTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinWithAppSecretTests.cs
deleted file mode 100644
index 60ef8d82..00000000
--- a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteCgibinWithAppSecretTests.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
-using Xunit;
-
-namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
-{
- public class WechatApiExecuteCgibinWithAppSecretTests
- {
- [Fact(DisplayName = "[GET] /sns/cgi-bin/token")]
- public async Task CgibinTokenTest()
- {
- var request = new Models.CgibinTokenRequest();
- var response = await TestClients.Instance.ExecuteCgibinTokenAsync(request);
-
- Assert.NotNull(response.AccessToken);
- }
- }
-}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteSemanticTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteSemanticTests.cs
new file mode 100644
index 00000000..94eb35bf
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteSemanticTests.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiExecuteSemanticTests
+ {
+ [Fact(DisplayName = "[POST] /semantic/semproxy/search")]
+ public async Task SemanticSemproxySearchRestaurantTest()
+ {
+ var request = new Models.SemanticSemproxySearchRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ UserId = TestConfigs.WechatOpenId,
+ Query = "中关村有没有人均100元左右的火锅店",
+ Category = "restaurant",
+ City = "北京"
+ };
+ var response = await TestClients.Instance.ExecuteSemanticSemproxySearchAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ Assert.NotNull(response.Query);
+ Assert.NotNull(response.Type);
+ Assert.NotNull(response.Semantic);
+ Assert.NotNull(response.Semantic.Detail);
+ Assert.NotNull(response.Semantic.Intent);
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteWxaApiTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteWxaApiTests.cs
new file mode 100644
index 00000000..9e92b9da
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiExecuteWxaApiTests.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiExecuteWxaApiTests
+ {
+ [Fact(DisplayName = "[POST] /wxaapi/log/jserr_list")]
+ public async Task WxaApiLogGetPerformanceTest()
+ {
+ var request = new Models.WxaApiLogGetPerformanceRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken,
+ CostTimeType = 1,
+ StartTimestamp = DateTimeOffset.Parse("2021-01-01").ToUnixTimeSeconds(),
+ EndTimestamp = DateTimeOffset.Parse("2021-01-31").ToUnixTimeSeconds()
+ };
+ var response = await TestClients.Instance.ExecuteWxaApiLogGetPerformanceAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ Assert.NotNull(response.DefaultTimeData);
+ Assert.NotEmpty(response.DefaultTimeData.DataList);
+ }
+
+ [Fact(DisplayName = "[GET] /wxaapi/log/get_scene")]
+ public async Task WxaApiLogGetSceneTest()
+ {
+ var request = new Models.WxaApiLogGetSceneRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken
+ };
+ var response = await TestClients.Instance.ExecuteWxaApiLogGetSceneAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ Assert.NotEmpty(response.SceneDataList);
+ }
+
+ [Fact(DisplayName = "[GET] /wxaapi/log/get_client_version")]
+ public async Task WxaApiLogGetClientVersionTest()
+ {
+ var request = new Models.WxaApiLogGetClientVersionRequest()
+ {
+ AccessToken = TestConfigs.WechatAccessToken
+ };
+ var response = await TestClients.Instance.ExecuteWxaApiLogGetClientVersionAsync(request);
+
+ Assert.True(response.IsSuccessful());
+ Assert.NotEmpty(response.ClientVersionDataList);
+ }
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiUtilityTests.cs b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiUtilityTests.cs
new file mode 100644
index 00000000..4a0d2c55
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Api.UnitTests/WechatApiUtilityTests.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Xunit;
+
+namespace SKIT.FlurlHttpClient.Wechat.Api.UnitTests
+{
+ public class WechatApiUtilityTests
+ {
+ [Fact(DisplayName = "信息摘要(SHA-1)")]
+ public void Sha1HashTest()
+ {
+ string rawData = "jsapi_ticket=HoagFKDcsGMVCIY2vOjf9nGrZ3eaM0qXs5ROFN_3k_HrGc0VocemA6wMXkvrL-Ei4IitXxwKF62CJWR8mWXZ3Q&noncestr=e7b435f73835402da44f16640ddc8696×tamp=1621348162&url=https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign";
+
+ string actualHash = Utilities.Sha1Util.Hash(rawData);
+ string expectdHash = "b214ea1f8ae019c207f8c6ffb843c8474cbab28c";
+
+ Assert.Equal(expectdHash, actualHash, ignoreCase: true);
+ }
+
+ [Fact(DisplayName = "信息摘要(HMAC-SHA-256)")]
+ public void HmacSha1HashTest()
+ {
+ string secret = "zNLgAGgqsEWJOg1nFVaO5r7fAlIQxr1u";
+ string rawData = "appid=wx1234567&offer_id=12345678&openid=odkx20ENSNa2w5y3g_qOkOvBNM1g&pf=android&ts=1507530737&zone_id=1&org_loc=/cgi-bin/midas/getbalance&method=POST&secret=zNLgAGgqsEWJOg1nFVaO5r7fAlIQxr1u";
+
+ string actualHash = Utilities.HmacSha256Util.Hash(secret, rawData);
+ string expectdHash = "1ad64e8dcb2ec1dc486b7fdf01f4a15159fc623dc3422470e51cf6870734726b";
+
+ Assert.Equal(expectdHash, actualHash, ignoreCase: true);
+ }
+ }
+}