| @@ -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', '') | 
| @@ -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 |