feat(tenpayv3): 新增商家名片会员相关接口
Some checks failed
CodeQL / Analyze (csharp) (push) Has been cancelled
CodeLint / Lint (push) Has been cancelled

This commit is contained in:
Fu Diwei
2025-10-09 17:14:26 +08:00
parent f39a644a00
commit 442708063b
66 changed files with 4438 additions and 1 deletions

View File

@@ -0,0 +1,13 @@
{
"record_id": "WfTb8hfabrPAiw",
"brand_id": "1077",
"card_id": "pbLatjvWOibDc5",
"appid": "wxea9c30890f48d5ae",
"openid": "obLatjnxgnqzS4myYGmLZ7LgLBA",
"user_card_code": "478515832665",
"exchange_coupon_template_id": "0Flpo7FqTQ",
"deduct_points": 1000,
"product_coupon_id": "200000001",
"product_coupon_stock_type": "PRODUCT_COUPON_STOCK_TYPE_BUSI_FAVOR",
"stock_id": "100232301"
}

View File

@@ -0,0 +1,38 @@
{
"brand_id": "1077",
"card_color": "#FFFF00",
"card_id": "pbLatjvWOibDc5",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0",
"card_type": "NORMAL",
"valid_date_information": {
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30,
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"type": "PERMANENT"
},
"invalid_reason": "传入的自定义作废原因",
"invalid_time": "2015-05-20T13:29:35+08:00",
"level": "钻石会员",
"openid": "obLatjnxgnqzS4myYGmLZ7LgLBA",
"phone_number": "12345678999",
"pickup_time": "2020-05-20T13:29:35.120+08:00",
"user_card_code": "478515832665",
"user_card_state": "EFFECTIVE",
"create_time": "2020-05-20T13:29:35.120+08:00",
"modify_time": "2020-05-20T13:29:35.120+08:00",
"user_information": {
"common_field_list": [
{
"name": "USER_FORM_FLAG_SEX",
"value": "男"
}
],
"custom_field_list": [
{
"name": "喜欢的运动",
"user_chosen_values": [ "足球", "篮球" ]
}
]
},
"attach": "brand_data"
}

View File

@@ -0,0 +1,6 @@
{
"brand_id": "1077",
"card_id": "pbLatjvWOibDc5",
"openid": "obLatjnxgnqzS4myYGmLZ7LgLBA",
"user_card_code": "478515832665"
}

View File

@@ -0,0 +1,59 @@
{
"out_request_no": "100002322019090134234sfdf",
"brand_id": "1004",
"appid": "wxea9c30890f48d5ae",
"card_type": "NORMAL",
"card_title": "测试卡",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0",
"code_mode": "SYSTEM_ALLOCATE",
"code_type": "BAR_CODE",
"code_jump_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/code/code"
},
"benefits": "会员折扣、专属价",
"notify_url": "https://www.weixin.qq.com/wxpay/notify.php",
"need_pinned": true,
"need_display_level": true,
"init_level": "白银会员",
"service_phone": "010-8877xxxx",
"legal_agreement": "商家需在 48 小时内发货,若商品存在质量问题,用户可在 7 天内申请退货。",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"member_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"points_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"balance_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/balance/balance"
},
"purchase_information": {
"price": 100,
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/purchase/purchase"
},
"user_information": {
"common_field_list": [
"USER_FORM_FLAG_SEX"
],
"custom_field_list": [
{
"type": "CHECK_BOX",
"name": "喜欢的运动",
"values": [
"篮球"
]
}
]
}
}

View File

@@ -0,0 +1,63 @@
{
"out_request_no": "100002322019090134234sfdf",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"brand_id": "1004",
"appid": "wxea9c30890f48d5ae",
"card_type": "NORMAL",
"card_title": "测试卡",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0",
"code_mode": "SYSTEM_ALLOCATE",
"code_type": "BAR_CODE",
"code_jump_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/code/code"
},
"benefits": "会员折扣、专属价",
"notify_url": "https://www.weixin.qq.com/wxpay/notify.php",
"need_pinned": true,
"need_display_level": true,
"init_level": "白银会员",
"service_phone": "010-8877xxxx",
"legal_agreement": "商家需在 48 小时内发货,若商品存在质量问题,用户可在 7 天内申请退货。",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"member_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"points_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"balance_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/balance/balance"
},
"purchase_information": {
"price": 100,
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/purchase/purchase"
},
"user_information": {
"common_field_list": [
"USER_FORM_FLAG_SEX"
],
"custom_field_list": [
{
"type": "CHECK_BOX",
"name": "喜欢的运动",
"values": [
"篮球"
]
}
]
},
"state": "CARD_EFFECTIVE",
"create_time": "2020-05-20T13:29:35.120+08:00",
"modify_time": "2020-05-20T13:29:35.120+08:00"
}

View File

@@ -0,0 +1,63 @@
{
"out_request_no": "100002322019090134234sfdf",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"brand_id": "1004",
"appid": "wxea9c30890f48d5ae",
"card_type": "NORMAL",
"card_title": "测试卡",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0",
"code_mode": "SYSTEM_ALLOCATE",
"code_type": "BAR_CODE",
"code_jump_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/code/code"
},
"benefits": "会员折扣、专属价",
"notify_url": "https://www.weixin.qq.com/wxpay/notify.php",
"need_pinned": true,
"need_display_level": true,
"init_level": "白银会员",
"service_phone": "010-8877xxxx",
"legal_agreement": "商家需在 48 小时内发货,若商品存在质量问题,用户可在 7 天内申请退货。",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"member_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"points_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"balance_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/balance/balance"
},
"purchase_information": {
"price": 100,
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/purchase/purchase"
},
"user_information": {
"common_field_list": [
"USER_FORM_FLAG_SEX"
],
"custom_field_list": [
{
"type": "CHECK_BOX",
"name": "喜欢的运动",
"values": [
"篮球"
]
}
]
},
"state": "CARD_EFFECTIVE",
"create_time": "2020-05-20T13:29:35.120+08:00",
"modify_time": "2020-05-20T13:29:35.120+08:00"
}

View File

@@ -0,0 +1,63 @@
{
"out_request_no": "100002322019090134234sfdf",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"brand_id": "1004",
"appid": "wxea9c30890f48d5ae",
"card_type": "NORMAL",
"card_title": "测试卡",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0",
"code_mode": "SYSTEM_ALLOCATE",
"code_type": "BAR_CODE",
"code_jump_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/code/code"
},
"benefits": "会员折扣、专属价",
"notify_url": "https://www.weixin.qq.com/wxpay/notify.php",
"need_pinned": true,
"need_display_level": true,
"init_level": "白银会员",
"service_phone": "010-8877xxxx",
"legal_agreement": "商家需在 48 小时内发货,若商品存在质量问题,用户可在 7 天内申请退货。",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"member_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"points_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"balance_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/balance/balance"
},
"purchase_information": {
"price": 100,
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/purchase/purchase"
},
"user_information": {
"common_field_list": [
"USER_FORM_FLAG_SEX"
],
"custom_field_list": [
{
"type": "CHECK_BOX",
"name": "喜欢的运动",
"values": [
"篮球"
]
}
]
},
"state": "CARD_EFFECTIVE",
"create_time": "2020-05-20T13:29:35.120+08:00",
"modify_time": "2020-05-20T13:29:35.120+08:00"
}

View File

@@ -0,0 +1,70 @@
{
"data": [
{
"out_request_no": "100002322019090134234sfdf",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"brand_id": "1004",
"appid": "wxea9c30890f48d5ae",
"card_type": "NORMAL",
"card_title": "测试卡",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0",
"code_mode": "SYSTEM_ALLOCATE",
"code_type": "BAR_CODE",
"code_jump_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/code/code"
},
"benefits": "会员折扣、专属价",
"notify_url": "https://www.weixin.qq.com/wxpay/notify.php",
"need_pinned": true,
"need_display_level": true,
"init_level": "白银会员",
"service_phone": "010-8877xxxx",
"legal_agreement": "商家需在 48 小时内发货,若商品存在质量问题,用户可在 7 天内申请退货。",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"member_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"points_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"balance_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/balance/balance"
},
"purchase_information": {
"price": 100,
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/purchase/purchase"
},
"user_information": {
"common_field_list": [
"USER_FORM_FLAG_SEX"
],
"custom_field_list": [
{
"type": "CHECK_BOX",
"name": "喜欢的运动",
"values": [
"篮球"
]
}
]
},
"state": "CARD_EFFECTIVE",
"create_time": "2020-05-20T13:29:35.120+08:00",
"modify_time": "2020-05-20T13:29:35.120+08:00"
}
],
"total_count": 20,
"offset": 0,
"limit": 20
}

View File

@@ -0,0 +1,52 @@
{
"brand_id": "实例值",
"card_title": "测试卡",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0",
"code_jump_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/code/code"
},
"benefits": "会员折扣、专属价",
"notify_url": "https://www.weixin.qq.com/wxpay/notify.php",
"need_pinned": true,
"need_display_level": true,
"service_phone": "010-8877xxxx",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"member_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"points_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"balance_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/balance/balance"
},
"purchase_information": {
"price": 100,
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/purchase/purchase"
},
"user_information": {
"common_field_list": [
"USER_FORM_FLAG_SEX"
],
"custom_field_list": [
{
"type": "CHECK_BOX",
"name": "喜欢的运动",
"values": [
"篮球"
]
}
]
}
}

View File

@@ -0,0 +1,63 @@
{
"out_request_no": "100002322019090134234sfdf",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"brand_id": "1004",
"appid": "wxea9c30890f48d5ae",
"card_type": "NORMAL",
"card_title": "测试卡",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0",
"code_mode": "SYSTEM_ALLOCATE",
"code_type": "BAR_CODE",
"code_jump_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/code/code"
},
"benefits": "会员折扣、专属价",
"notify_url": "https://www.weixin.qq.com/wxpay/notify.php",
"need_pinned": true,
"need_display_level": true,
"init_level": "白银会员",
"service_phone": "010-8877xxxx",
"legal_agreement": "商家需在 48 小时内发货,若商品存在质量问题,用户可在 7 天内申请退货。",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"member_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"points_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/points/points"
},
"balance_information": {
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/balance/balance"
},
"purchase_information": {
"price": 100,
"jump_appid": "wxea9c30a90fs8d3fe",
"jump_path": "/pages/purchase/purchase"
},
"user_information": {
"common_field_list": [
"USER_FORM_FLAG_SEX"
],
"custom_field_list": [
{
"type": "CHECK_BOX",
"name": "喜欢的运动",
"values": [
"篮球"
]
}
]
},
"state": "CARD_EFFECTIVE",
"create_time": "2020-05-20T13:29:35.120+08:00",
"modify_time": "2020-05-20T13:29:35.120+08:00"
}

View File

@@ -0,0 +1,5 @@
{
"brand_id": "1004",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA"
}

View File

@@ -0,0 +1,4 @@
{
"token": "d2df23f2f4fasf3gws",
"expire_time": "2020-05-20T13:29:35.120+08:00"
}

View File

@@ -0,0 +1,32 @@
{
"brand_id": "1004",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0",
"phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==",
"level": "钻石会员",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"user_information": {
"common_field_list": [
{
"name": "USER_FORM_FLAG_BIRTHDAY",
"value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
}
],
"custom_field_list": [
{
"name": "喜欢的运动",
"user_chosen_values": [
"vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
]
}
]
},
"attach": "自定义数据说明",
"user_card_confirm_state": "CREATE_CARD_SUCCESS"
}

View File

@@ -0,0 +1,40 @@
{
"user_card_code": "478515832665",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0",
"brand_id": "1001622624",
"card_type": "NORMAL",
"phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==",
"level": "钻石会员",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"pickup_time": "2020-05-20T13:29:35.120+08:00",
"user_information": {
"common_field_list": [
{
"name": "USER_FORM_FLAG_BIRTHDAY",
"value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
}
],
"custom_field_list": [
{
"name": "喜欢的运动",
"user_chosen_values": [
"vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
]
}
]
},
"attach": "自定义数据说明",
"user_card_state": "EFFECTIVE",
"invalid_reason": "传入的自定义作废原因",
"invalid_time": "2020-05-20T13:29:35.120+08:00",
"create_time": "2020-05-20T13:29:35.120+08:00",
"modify_time": "2020-05-20T13:29:35.120+08:00"
}

View File

@@ -0,0 +1,40 @@
{
"user_card_code": "478515832665",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0",
"brand_id": "1001622624",
"card_type": "NORMAL",
"phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==",
"level": "钻石会员",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"pickup_time": "2020-05-20T13:29:35.120+08:00",
"user_information": {
"common_field_list": [
{
"name": "USER_FORM_FLAG_BIRTHDAY",
"value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
}
],
"custom_field_list": [
{
"name": "喜欢的运动",
"user_chosen_values": [
"vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
]
}
]
},
"attach": "自定义数据说明",
"user_card_state": "EFFECTIVE",
"invalid_reason": "传入的自定义作废原因",
"invalid_time": "2020-05-20T13:29:35.120+08:00",
"create_time": "2020-05-20T13:29:35.120+08:00",
"modify_time": "2020-05-20T13:29:35.120+08:00"
}

View File

@@ -0,0 +1,33 @@
{
"brand_id": "1004",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"user_card_code": "478515832665",
"phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0",
"level": "钻石会员",
"user_information": {
"common_field_list": [
{
"name": "USER_FORM_FLAG_BIRTHDAY",
"value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
}
],
"custom_field_list": [
{
"name": "喜欢的运动",
"user_chosen_values": [
"vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
]
}
]
},
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"pickup_time": "2020-05-20T13:29:35.120+08:00"
}

View File

@@ -0,0 +1,40 @@
{
"user_card_code": "478515832665",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0",
"brand_id": "1001622624",
"card_type": "NORMAL",
"phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==",
"level": "钻石会员",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"pickup_time": "2020-05-20T13:29:35.120+08:00",
"user_information": {
"common_field_list": [
{
"name": "USER_FORM_FLAG_BIRTHDAY",
"value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
}
],
"custom_field_list": [
{
"name": "喜欢的运动",
"user_chosen_values": [
"vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
]
}
]
},
"attach": "自定义数据说明",
"user_card_state": "EFFECTIVE",
"invalid_reason": "传入的自定义作废原因",
"invalid_time": "2020-05-20T13:29:35.120+08:00",
"create_time": "2020-05-20T13:29:35.120+08:00",
"modify_time": "2020-05-20T13:29:35.120+08:00"
}

View File

@@ -0,0 +1,4 @@
{
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"invalid_reason": "传入的自定义作废原因"
}

View File

@@ -0,0 +1,47 @@
{
"data": [
{
"user_card_code": "478515832665",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0",
"brand_id": "1001622624",
"card_type": "NORMAL",
"phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==",
"level": "钻石会员",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"pickup_time": "2020-05-20T13:29:35.120+08:00",
"user_information": {
"common_field_list": [
{
"name": "USER_FORM_FLAG_BIRTHDAY",
"value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
}
],
"custom_field_list": [
{
"name": "喜欢的运动",
"user_chosen_values": [
"vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
]
}
]
},
"attach": "自定义数据说明",
"user_card_state": "EFFECTIVE",
"invalid_reason": "传入的自定义作废原因",
"invalid_time": "2020-05-20T13:29:35.120+08:00",
"create_time": "2020-05-20T13:29:35.120+08:00",
"modify_time": "2020-05-20T13:29:35.120+08:00"
}
],
"total_count": 20,
"offset": 0,
"limit": 20
}

View File

@@ -0,0 +1,31 @@
{
"brand_id": "1004",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0",
"phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==",
"level": "钻石会员",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"user_information": {
"common_field_list": [
{
"name": "USER_FORM_FLAG_BIRTHDAY",
"value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
}
],
"custom_field_list": [
{
"name": "喜欢的运动",
"user_chosen_values": [
"vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
]
}
]
},
"attach": "自定义数据说明"
}

View File

@@ -0,0 +1,40 @@
{
"user_card_code": "478515832665",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"card_color": "#FFFF00",
"card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0",
"brand_id": "1001622624",
"card_type": "NORMAL",
"phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==",
"level": "钻石会员",
"valid_date_information": {
"type": "PERMANENT",
"available_begin_time": "2020-05-20T13:29:35.120+08:00",
"available_end_time": "2020-05-20T13:29:35.120+08:00",
"available_day_after_receive": 30
},
"pickup_time": "2020-05-20T13:29:35.120+08:00",
"user_information": {
"common_field_list": [
{
"name": "USER_FORM_FLAG_BIRTHDAY",
"value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
}
],
"custom_field_list": [
{
"name": "喜欢的运动",
"user_chosen_values": [
"vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A=="
]
}
]
},
"attach": "自定义数据说明",
"user_card_state": "EFFECTIVE",
"invalid_reason": "传入的自定义作废原因",
"invalid_time": "2020-05-20T13:29:35.120+08:00",
"create_time": "2020-05-20T13:29:35.120+08:00",
"modify_time": "2020-05-20T13:29:35.120+08:00"
}

View File

@@ -0,0 +1,8 @@
{
"brand_id": "1004",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"user_card_code": "478515832665",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"out_request_no": "100002322019090134234sfdf",
"cell": "15_1200_1"
}

View File

@@ -0,0 +1,7 @@
{
"brand_id": "1004",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"user_card_code": "478515832665",
"out_request_no": "100002322019090134234sfdf",
"cell": "15_1200_1"
}

View File

@@ -0,0 +1,11 @@
{
"record_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"exchange_coupon_template_id": "0Flpo7FqTQ",
"brand_id": "1004",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"user_card_code": "478515832665",
"state": "POINT_EXCHANGE_COUPON_SUCCESS",
"coupon_code": "123446565767",
"fail_reason": "积分不足"
}

View File

@@ -0,0 +1,11 @@
{
"record_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"exchange_coupon_template_id": "0Flpo7FqTQ",
"brand_id": "1004",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"user_card_code": "478515832665",
"state": "POINT_EXCHANGE_COUPON_SUCCESS",
"coupon_code": "123446565767",
"fail_reason": "积分不足"
}

View File

@@ -0,0 +1,8 @@
{
"out_request_no": "100002322019090134234sfdf",
"brand_id": "1004",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"user_card_code": "478515832665",
"point_balance": 1000
}

View File

@@ -0,0 +1,8 @@
{
"out_request_no": "100002322019090134234sfdf",
"brand_id": "1004",
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"user_card_code": "478515832665",
"point_balance": 1000
}

View File

@@ -287,6 +287,219 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
}
}
[Fact(DisplayName = "测试用例:加密请求中的敏感数据([PATCH] /brand/partner/card-member/user-cards/{user_card_code}")]
public async Task TestEncryptRequestSensitiveProperty_UpdateBrandPartnerCardMemberUserCardRequest()
{
static Models.UpdateBrandPartnerCardMemberUserCardRequest GenerateMockRequestModel()
{
return new Models.UpdateBrandPartnerCardMemberUserCardRequest()
{
MobileNumber = MOCK_PLAIN_STR,
UserInfo = new Models.UpdateBrandPartnerCardMemberUserCardRequest.Types.UserInfo()
{
CommonFieldList = new List<Models.UpdateBrandPartnerCardMemberUserCardRequest.Types.UserInfo.Types.CommonField>()
{
new Models.UpdateBrandPartnerCardMemberUserCardRequest.Types.UserInfo.Types.CommonField()
{
Value = MOCK_PLAIN_STR
}
},
CustomFieldList = new List<Models.UpdateBrandPartnerCardMemberUserCardRequest.Types.UserInfo.Types.CustomField>()
{
new Models.UpdateBrandPartnerCardMemberUserCardRequest.Types.UserInfo.Types.CustomField()
{
Values = new List<string>() { MOCK_PLAIN_STR }
}
}
}
};
}
static void AssertMockRequestModel(Models.UpdateBrandPartnerCardMemberUserCardRequest request, Func<string, string> decryptor)
{
Assert.NotEqual(MOCK_PLAIN_STR, request.MobileNumber!);
Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.UserInfo!.CommonFieldList![0].Value!));
Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.UserInfo!.CustomFieldList![0].Values![0]));
Assert.Equal(MOCK_CERT_SN, request.WechatpaySerialNumber!, ignoreCase: true);
}
if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantRSACertificatePrivateKey))
{
using (var client = CreateMockClientUseRSA(autoEncrypt: false))
{
var request = GenerateMockRequestModel();
client.EncryptRequestSensitiveProperty(request);
AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
}
using (var client = CreateMockClientUseRSA(autoEncrypt: true))
{
var request = GenerateMockRequestModel();
await client.ExecuteUpdateBrandPartnerCardMemberUserCardAsync(request);
AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
}
}
if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantSM2CertificatePrivateKey))
{
using (var client = CreateMockClientUseSM2(autoEncrypt: false))
{
var request = GenerateMockRequestModel();
client.EncryptRequestSensitiveProperty(request);
AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
}
using (var client = CreateMockClientUseSM2(autoEncrypt: true))
{
var request = GenerateMockRequestModel();
await client.ExecuteUpdateBrandPartnerCardMemberUserCardAsync(request);
AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
}
}
}
[Fact(DisplayName = "测试用例:加密请求中的敏感数据([POST] /brand/partner/card-member/user-cards/{user_card_code}/confirm")]
public async Task TestEncryptRequestSensitiveProperty_ConfirmBrandPartnerCardMemberUserCardRequest()
{
static Models.ConfirmBrandPartnerCardMemberUserCardRequest GenerateMockRequestModel()
{
return new Models.ConfirmBrandPartnerCardMemberUserCardRequest()
{
MobileNumber = MOCK_PLAIN_STR,
UserInfo = new Models.ConfirmBrandPartnerCardMemberUserCardRequest.Types.UserInfo()
{
CommonFieldList = new List<Models.ConfirmBrandPartnerCardMemberUserCardRequest.Types.UserInfo.Types.CommonField>()
{
new Models.ConfirmBrandPartnerCardMemberUserCardRequest.Types.UserInfo.Types.CommonField()
{
Value = MOCK_PLAIN_STR
}
},
CustomFieldList = new List<Models.ConfirmBrandPartnerCardMemberUserCardRequest.Types.UserInfo.Types.CustomField>()
{
new Models.ConfirmBrandPartnerCardMemberUserCardRequest.Types.UserInfo.Types.CustomField()
{
Values = new List<string>() { MOCK_PLAIN_STR }
}
}
}
};
}
static void AssertMockRequestModel(Models.ConfirmBrandPartnerCardMemberUserCardRequest request, Func<string, string> decryptor)
{
Assert.NotEqual(MOCK_PLAIN_STR, request.MobileNumber!);
Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.UserInfo!.CommonFieldList![0].Value!));
Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.UserInfo!.CustomFieldList![0].Values![0]));
Assert.Equal(MOCK_CERT_SN, request.WechatpaySerialNumber!, ignoreCase: true);
}
if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantRSACertificatePrivateKey))
{
using (var client = CreateMockClientUseRSA(autoEncrypt: false))
{
var request = GenerateMockRequestModel();
client.EncryptRequestSensitiveProperty(request);
AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
}
using (var client = CreateMockClientUseRSA(autoEncrypt: true))
{
var request = GenerateMockRequestModel();
await client.ExecuteConfirmBrandPartnerCardMemberUserCardAsync(request);
AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
}
}
if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantSM2CertificatePrivateKey))
{
using (var client = CreateMockClientUseSM2(autoEncrypt: false))
{
var request = GenerateMockRequestModel();
client.EncryptRequestSensitiveProperty(request);
AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
}
using (var client = CreateMockClientUseSM2(autoEncrypt: true))
{
var request = GenerateMockRequestModel();
await client.ExecuteConfirmBrandPartnerCardMemberUserCardAsync(request);
AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
}
}
}
[Fact(DisplayName = "测试用例:加密请求中的敏感数据([POST] /brand/partner/card-member/user-cards/import-by-openid")]
public async Task TestEncryptRequestSensitiveProperty_ImportBrandPartnerCardMemberUserCardByOpenIdRequest()
{
static Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest GenerateMockRequestModel()
{
return new Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest()
{
MobileNumber = MOCK_PLAIN_STR,
UserInfo = new Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest.Types.UserInfo()
{
CommonFieldList = new List<Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest.Types.UserInfo.Types.CommonField>()
{
new Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest.Types.UserInfo.Types.CommonField()
{
Value = MOCK_PLAIN_STR
}
},
CustomFieldList = new List<Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest.Types.UserInfo.Types.CustomField>()
{
new Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest.Types.UserInfo.Types.CustomField()
{
Values = new List<string>() { MOCK_PLAIN_STR }
}
}
}
};
}
static void AssertMockRequestModel(Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest request, Func<string, string> decryptor)
{
Assert.NotEqual(MOCK_PLAIN_STR, request.MobileNumber!);
Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.UserInfo!.CommonFieldList![0].Value!));
Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.UserInfo!.CustomFieldList![0].Values![0]));
Assert.Equal(MOCK_CERT_SN, request.WechatpaySerialNumber!, ignoreCase: true);
}
if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantRSACertificatePrivateKey))
{
using (var client = CreateMockClientUseRSA(autoEncrypt: false))
{
var request = GenerateMockRequestModel();
client.EncryptRequestSensitiveProperty(request);
AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
}
using (var client = CreateMockClientUseRSA(autoEncrypt: true))
{
var request = GenerateMockRequestModel();
await client.ExecuteImportBrandPartnerCardMemberUserCardByOpenIdAsync(request);
AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
}
}
if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantSM2CertificatePrivateKey))
{
using (var client = CreateMockClientUseSM2(autoEncrypt: false))
{
var request = GenerateMockRequestModel();
client.EncryptRequestSensitiveProperty(request);
AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
}
using (var client = CreateMockClientUseSM2(autoEncrypt: true))
{
var request = GenerateMockRequestModel();
await client.ExecuteImportBrandPartnerCardMemberUserCardByOpenIdAsync(request);
AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
}
}
}
[Fact(DisplayName = "测试用例:加密请求中的敏感数据([POST] /brand/profitsharing/orders")]
public async Task TestEncryptRequestSensitiveProperty_CreateBrandProfitSharingOrderRequest()
{

View File

@@ -87,6 +87,172 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
}
}
[Fact(DisplayName = "测试用例:解密响应中的敏感数据([GET] /brand/partner/card-member/user-cards")]
public async Task TestDecryptResponseSensitiveProperty_QueryBrandPartnerCardMemberUserCardsResponse()
{
static Models.QueryBrandPartnerCardMemberUserCardsResponse GenerateMockResponseModel(Func<string, string> encryptor)
{
return SetMockResponseRawStatusAsOk(new Models.QueryBrandPartnerCardMemberUserCardsResponse()
{
UserCardList = new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard[]
{
new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard()
{
MobileNumber = encryptor.Invoke(MOCK_PLAIN_STR),
UserInfo = new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard.Types.UserInfo()
{
CommonFieldList = new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard.Types.UserInfo.Types.CommonField[]
{
new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard.Types.UserInfo.Types.CommonField()
{
Value = encryptor.Invoke(MOCK_PLAIN_STR)
}
},
CustomFieldList = new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard.Types.UserInfo.Types.CustomField[]
{
new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard.Types.UserInfo.Types.CustomField()
{
Values = new string[] { encryptor.Invoke(MOCK_PLAIN_STR) }
}
}
}
}
}
});
}
static void AssertMockResponseModel(Models.QueryBrandPartnerCardMemberUserCardsResponse response)
{
Assert.Equal(MOCK_PLAIN_STR, response.UserCardList[0].MobileNumber);
Assert.Equal(MOCK_PLAIN_STR, response.UserCardList[0].UserInfo!.CommonFieldList![0].Value);
Assert.Equal(MOCK_PLAIN_STR, response.UserCardList[0].UserInfo!.CustomFieldList![0].Values![0]);
}
if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantRSACertificatePrivateKey))
{
using (var client = CreateMockClientUseRSA(autoDecrypt: false))
{
var response = GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain)!);
client.DecryptResponseSensitiveProperty(response);
AssertMockResponseModel(response);
}
using (var client = CreateMockClientUseRSA(
autoDecrypt: true,
mockResponseContent: new SystemTextJsonSerializer().Serialize(
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain)!)
)
))
{
var request = new Models.QueryBrandPartnerCardMemberUserCardsRequest();
var response = await client.ExecuteQueryBrandPartnerCardMemberUserCardsAsync(request);
AssertMockResponseModel(response);
}
}
if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantSM2CertificatePrivateKey))
{
using (var client = CreateMockClientUseSM2(autoDecrypt: false))
{
var response = GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain)!);
client.DecryptResponseSensitiveProperty(response);
AssertMockResponseModel(response);
}
using (var client = CreateMockClientUseSM2(
autoDecrypt: true,
mockResponseContent: new SystemTextJsonSerializer().Serialize(
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain)!)
)
))
{
var request = new Models.QueryBrandPartnerCardMemberUserCardsRequest();
var response = await client.ExecuteQueryBrandPartnerCardMemberUserCardsAsync(request);
AssertMockResponseModel(response);
}
}
}
[Fact(DisplayName = "测试用例:解密响应中的敏感数据([GET] /brand/partner/card-member/user-cards/{user_card_code}")]
public async Task TestDecryptResponseSensitiveProperty_GetBrandPartnerCardMemberUserCardByUserCardCodeResponse()
{
static Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse GenerateMockResponseModel(Func<string, string> encryptor)
{
return SetMockResponseRawStatusAsOk(new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse()
{
MobileNumber = encryptor.Invoke(MOCK_PLAIN_STR),
UserInfo = new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.Types.UserInfo()
{
CommonFieldList = new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.Types.UserInfo.Types.CommonField[]
{
new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.Types.UserInfo.Types.CommonField()
{
Value = encryptor.Invoke(MOCK_PLAIN_STR)
}
},
CustomFieldList = new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.Types.UserInfo.Types.CustomField[]
{
new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.Types.UserInfo.Types.CustomField()
{
Values = new string[] { encryptor.Invoke(MOCK_PLAIN_STR) }
}
}
}
});
}
static void AssertMockResponseModel(Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse response)
{
Assert.Equal(MOCK_PLAIN_STR, response.MobileNumber);
Assert.Equal(MOCK_PLAIN_STR, response.UserInfo!.CommonFieldList![0].Value);
Assert.Equal(MOCK_PLAIN_STR, response.UserInfo!.CustomFieldList![0].Values![0]);
}
if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantRSACertificatePrivateKey))
{
using (var client = CreateMockClientUseRSA(autoDecrypt: false))
{
var response = GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain)!);
client.DecryptResponseSensitiveProperty(response);
AssertMockResponseModel(response);
}
using (var client = CreateMockClientUseRSA(
autoDecrypt: true,
mockResponseContent: new SystemTextJsonSerializer().Serialize(
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain)!)
)
))
{
var request = new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeRequest();
var response = await client.ExecuteGetBrandPartnerCardMemberUserCardByUserCardCodeAsync(request);
AssertMockResponseModel(response);
}
}
if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantSM2CertificatePrivateKey))
{
using (var client = CreateMockClientUseSM2(autoDecrypt: false))
{
var response = GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain)!);
client.DecryptResponseSensitiveProperty(response);
AssertMockResponseModel(response);
}
using (var client = CreateMockClientUseSM2(
autoDecrypt: true,
mockResponseContent: new SystemTextJsonSerializer().Serialize(
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain)!)
)
))
{
var request = new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeRequest();
var response = await client.ExecuteGetBrandPartnerCardMemberUserCardByUserCardCodeAsync(request);
AssertMockResponseModel(response);
}
}
}
[Fact(DisplayName = "测试用例:解密响应中的敏感数据([GET] /certificates")]
public async Task TestDecryptResponseSensitiveProperty_QueryCertificatesResponse()
{