Skip to content

Commit 9de03ff

Browse files
committed
适配风险合规下消费者投诉2.0相关接口
1 parent 1933c40 commit 9de03ff

File tree

9 files changed

+357
-15
lines changed

9 files changed

+357
-15
lines changed

README.md

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
微信支付接口V3版python库。
99

10-
欢迎微信支付开发者扫码进QQ群讨论
10+
欢迎微信支付开发者扫码进QQ群(群号:973102221)讨论
1111

1212
![image](qq.png)
1313

@@ -54,6 +54,10 @@
5454

5555
分账 已适配
5656

57+
### 风险合规
58+
59+
消费者投诉2.0 已适配
60+
5761
#### 其他能力
5862

5963
图片上传 已适配
@@ -270,6 +274,11 @@ def combine_close():
270274
def sign():
271275
print(wxpay.sign(['wx888','1414561699','5K8264ILTKCH16CQ2502S....','prepay_id=wx201410272009395522657....']))
272276

277+
# 解密部分接口返回的信息中的加密字段
278+
# https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_3.shtml
279+
def decrypt():
280+
print(wxpay.decrypt(ciphtext='Qe41VhP/sGdNeTHMQGlxCWiUyHu6XNO9GCYln2Luv4HhwJzZBfcL12sB+PgZcS5NhePBog30NgJ1xRaK+gbGDKwpg=='))
281+
273282
# 验证并解密回调消息,把回调接口收到的headers和body传入
274283
# 这里以flask框架为例,其他web框架如果遇到InvalidSignature,请确认传入的body和收到的一致,没有做额外的预处理
275284
def decrypt_callback(headers=request.headers, body=request.data):
@@ -483,6 +492,80 @@ def profitsharing_bill():
483492
)
484493
print('code: %s, message: %s' % (code, message))
485494

495+
# 查询投诉单列表
496+
def complant_list_query():
497+
code, message = wxpay.complant_list_query(
498+
begin_date='2019-01-01'
499+
)
500+
print('code: %s, message: %s' % (code, message))
501+
502+
# 查询投诉单详情
503+
def complant_detail_query():
504+
code, message = wxpay.complant_detail_query(
505+
complaint_id='200201820200101080076610000'
506+
)
507+
print('code: %s, message: %s' % (code, message))
508+
509+
# 查询投诉协商历史
510+
def complant_history_query():
511+
code, message = wxpay.complant_history_query(
512+
complaint_id='200201820200101080076610000'
513+
)
514+
print('code: %s, message: %s' % (code, message))
515+
516+
# 创建投诉通知回调地址
517+
def complant_notification_create():
518+
code, message = wxpay.complant_notification_create(
519+
url='https://www.xxx.com/notify'
520+
)
521+
print('code: %s, message: %s' % (code, message))
522+
523+
# 查询投诉通知回调地址
524+
def complant_notification_query():
525+
code, message = wxpay.complant_notification_query()
526+
print('code: %s, message: %s' % (code, message))
527+
528+
# 更新投诉通知回调地址
529+
def complant_notification_update():
530+
code, message = wxpay.complant_notification_update(
531+
url='https://www.xxx.com/notify'
532+
)
533+
print('code: %s, message: %s' % (code, message))
534+
535+
# 删除投诉通知回调地址
536+
def complant_notification_delete():
537+
code, message = wxpay.complant_notification_delete()
538+
print('code: %s, message: %s' % (code, message))
539+
540+
# 提交投诉回复
541+
def complant_response():
542+
code, message = wxpay.complant_response(
543+
complaint_id='200201820200101080076610000',
544+
response_content='已与用户沟通解决'
545+
)
546+
print('code: %s, message: %s' % (code, message))
547+
548+
# 反馈投诉处理完成
549+
def complant_complete():
550+
code, message = wxpay.complant_complete(
551+
complaint_id='200201820200101080076610000'
552+
)
553+
print('code: %s, message: %s' % (code, message))
554+
555+
# 商户上传投诉反馈图片
556+
def complant_image_upload():
557+
code, message = wxpay.complant_image_upload(
558+
filepath='./media/demo.png'
559+
)
560+
print('code: %s, message: %s' % (code, message))
561+
562+
# 下载客户投诉图片
563+
def complant_image_download():
564+
code, message = wxpay.complant_image_download(
565+
media_url='https://api.mch.weixin.qq.com/v3/merchant-service/images/xxxxx'
566+
)
567+
print('code: %s, message: %s' % (code, message))
568+
486569
```
487570

488571
## 回调验证失败处理

examples.py

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@ def sign():
107107
print(wxpay.sign(['wx888', '1414561699', '5K8264ILTKCH16CQ2502S....', 'prepay_id=wx201410272009395522657....']))
108108

109109

110+
def decrypt():
111+
print(wxpay.decrypt(ciphtext='Qe41VhP/sGdNeTHMQGlxCWiUyHu6XNO9GCYln2Luv4HhwJzZBfcL12sB+PgZcS5NhePBog30NgJ1xRaK+gbGDKwpg=='))
112+
113+
110114
def decrypt_callback(headers, body):
111115
print(wxpay.decrypt_callback(headers, body))
112116

@@ -319,6 +323,80 @@ def profitsharing_bill():
319323
print('code: %s, message: %s' % (code, message))
320324

321325

326+
def complant_list_query():
327+
code, message = wxpay.complant_list_query(
328+
begin_date='2019-01-01'
329+
)
330+
print('code: %s, message: %s' % (code, message))
331+
332+
333+
def complant_detail_query():
334+
code, message = wxpay.complant_detail_query(
335+
complaint_id='200201820200101080076610000'
336+
)
337+
print('code: %s, message: %s' % (code, message))
338+
339+
340+
def complant_history_query():
341+
code, message = wxpay.complant_history_query(
342+
complaint_id='200201820200101080076610000'
343+
)
344+
print('code: %s, message: %s' % (code, message))
345+
346+
347+
def complant_notification_create():
348+
code, message = wxpay.complant_notification_create(
349+
url='https://www.xxx.com/notify'
350+
)
351+
print('code: %s, message: %s' % (code, message))
352+
353+
354+
def complant_notification_query():
355+
code, message = wxpay.complant_notification_query()
356+
print('code: %s, message: %s' % (code, message))
357+
358+
359+
def complant_notification_update():
360+
code, message = wxpay.complant_notification_update(
361+
url='https://www.xxx.com/notify'
362+
)
363+
print('code: %s, message: %s' % (code, message))
364+
365+
366+
def complant_notification_delete():
367+
code, message = wxpay.complant_notification_delete()
368+
print('code: %s, message: %s' % (code, message))
369+
370+
371+
def complant_response():
372+
code, message = wxpay.complant_response(
373+
complaint_id='200201820200101080076610000',
374+
response_content='已与用户沟通解决'
375+
)
376+
print('code: %s, message: %s' % (code, message))
377+
378+
379+
def complant_complete():
380+
code, message = wxpay.complant_complete(
381+
complaint_id='200201820200101080076610000'
382+
)
383+
print('code: %s, message: %s' % (code, message))
384+
385+
386+
def complant_image_upload():
387+
code, message = wxpay.complant_image_upload(
388+
filepath='./media/demo.png'
389+
)
390+
print('code: %s, message: %s' % (code, message))
391+
392+
393+
def complant_image_download():
394+
code, message = wxpay.complant_image_download(
395+
media_url='https://api.mch.weixin.qq.com/v3/merchant-service/images/xxxxx'
396+
)
397+
print('code: %s, message: %s' % (code, message))
398+
399+
322400
if __name__ == '__main__':
323401
pay()
324402
query()
@@ -332,6 +410,7 @@ def profitsharing_bill():
332410
combine_query()
333411
combine_close()
334412
sign()
413+
decrypt()
335414
points_notify()
336415
user_authorization()
337416
guides_register()
@@ -354,4 +433,15 @@ def profitsharing_bill():
354433
profitsharing_add_receiver()
355434
profitsharing_delete_receiver()
356435
profitsharing_bill()
436+
complant_list_query()
437+
complant_detail_query()
438+
complant_history_query()
439+
complant_notification_create()
440+
complant_notification_query()
441+
complant_notification_update()
442+
complant_notification_delete()
443+
complant_response()
444+
complant_complete()
445+
complant_image_upload()
446+
complant_image_download()
357447
pass

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
setup(
88
name="wechatpayv3",
9-
version="1.0.11",
9+
version="1.0.12",
1010
author="minibear",
1111
description="微信支付接口V3版python库(python sdk for wechatpay v3)",
1212
long_description=long_description,
@@ -17,7 +17,7 @@
1717
packages=["wechatpayv3"],
1818
classifiers=[
1919
"Development Status :: 5 - Production/Stable",
20-
"Topic :: Software Development :: Build Tools",
20+
"Topic :: Office/Business :: Financial",
2121
"License :: OSI Approved :: BSD License",
2222
"Programming Language :: Python :: 3",
2323
"Programming Language :: Python :: 3.4",

wechatpayv3/__init__.py

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,34 @@ def decrypt_callback(self, headers, body):
4949
"""
5050
return self._core.decrypt_callback(headers, body)
5151

52+
def decrypt(self, ciphtext):
53+
"""解密微信支付平台返回的信息中的敏感字段
54+
:param ciphtext: 加密后的敏感字段,示例值:'Qe41VhP/sGdNeTHMQGlxCWiUyHu6XNO9GCYln2Luv4HhwJzZBfcL12sB+PgZcS5NhePBog30NgJ1xRaK+gbGDKwpg=='
55+
"""
56+
return self._core.decrypt(ciphtext)
57+
58+
5259
from .businesscircle import points_notify, user_authorization
60+
from .complaint import (complant_complete, complant_detail_query,
61+
complant_history_query, complant_image_download,
62+
complant_image_upload, complant_list_query,
63+
complant_notification_create,
64+
complant_notification_delete,
65+
complant_notification_query,
66+
complant_notification_update, complant_response)
5367
from .marketing import marketing_image_upload
5468
from .media import image_upload, video_upload
55-
from .parking import parking_enter, parking_order, parking_order_query, parking_service_find
56-
from .profitsharing import (profitsharing_add_receiver, profitsharing_amount_query, profitsharing_bill,
57-
profitsharing_delete_receiver, profitsharing_order, profitsharing_order_query,
58-
profitsharing_return, profitsharing_return_query, profitsharing_unfreeze)
59-
from .smartguide import guides_assign, guides_query, guides_register, guides_update
60-
from .transaction import (close, combine_close, combine_pay, combine_query, download_bill,
61-
fundflow_bill, pay, query, query_refund, refund, trade_bill)
69+
from .parking import (parking_enter, parking_order, parking_order_query,
70+
parking_service_find)
71+
from .profitsharing import (profitsharing_add_receiver,
72+
profitsharing_amount_query, profitsharing_bill,
73+
profitsharing_delete_receiver,
74+
profitsharing_order, profitsharing_order_query,
75+
profitsharing_return,
76+
profitsharing_return_query,
77+
profitsharing_unfreeze)
78+
from .smartguide import (guides_assign, guides_query, guides_register,
79+
guides_update)
80+
from .transaction import (close, combine_close, combine_pay, combine_query,
81+
download_bill, fundflow_bill, pay, query,
82+
query_refund, refund, trade_bill)

0 commit comments

Comments
 (0)