Update to use pywe-pay-notify to check pay notify success or fail

Brightcells %!s(int64=7) %!d(string=hace) años
padre
commit
a44bae18ee
Se han modificado 2 ficheros con 5 adiciones y 14 borrados
  1. 4 14
      pay/views.py
  2. 1 0
      requirements.txt

+ 4 - 14
pay/views.py

@@ -7,6 +7,7 @@ from logit import logit
7 7
 from paginator import pagination
8 8
 from pywe_exception import WeChatPayException
9 9
 from pywe_pay import WeChatPay
10
+from pywe_pay_notify import check_pay_notify
10 11
 from pywe_response import WXPAY_NOTIFY_FAIL, WXPAY_NOTIFY_SUCCESS
11 12
 from pywe_sign import check_signature
12 13
 from pywe_xml import xml_to_dict
@@ -208,7 +209,7 @@ def wx_order_query_api(request):
208 209
     # 订单查询
209 210
     query_data = wxpay.order.query(transaction_id, order_id)
210 211
     # 签名校验
211
-    if not check_signature(query_data):
212
+    if not check_signature(query_data, wechat.get('apiKey')):
212 213
         return response(OrderStatusCode.SIGN_CHECK_FAIL)
213 214
 
214 215
     # 交易状态
@@ -266,19 +267,8 @@ def wx_order_detail_api(request):
266 267
 @transaction.atomic
267 268
 def wx_notify_url_api(request):
268 269
     """ 支付异步通知回调地址 """
269
-    data = xml_to_dict(request.body)
270
-    if isinstance(data, basestring):
271
-        return HttpResponse(WXPAY_NOTIFY_FAIL)
272
-
273
-    trade_type = data.get('trade_type', '')
274
-
275
-    # 签名校验
276
-    if not check_signature(data, settings.WECHAT.get(trade_type, {}).get('apiKey')):
277
-        return HttpResponse(WXPAY_NOTIFY_FAIL)
278
-
279
-    # 通信标识
280
-    return_code = data.get('return_code', '')
281
-    if return_code != 'SUCCESS':
270
+    data, success = check_pay_notify(request.body, wx_configs=settings.WECHAT)
271
+    if not success:
282 272
         return HttpResponse(WXPAY_NOTIFY_FAIL)
283 273
 
284 274
     out_trade_no = data.get('out_trade_no', '')

+ 1 - 0
requirements.txt

@@ -30,6 +30,7 @@ pywe-jssdk==1.0.2
30 30
 pywe-miniapp==1.0.0
31 31
 pywe-oauth==1.0.3
32 32
 pywe-pay==1.0.5
33
+pywe-pay-notify==1.0.1
33 34
 pywe-response==1.0.1
34 35
 pywe-sign==1.0.5
35 36
 pywe-xml==1.0.0