@@ -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 |