| @@ -152,6 +152,7 @@ urlpatterns += [ | ||
| 152 | 152 | urlpatterns += [ | 
| 153 | 153 | url(r'^wx/order_create$', pay_views.wx_order_create_api, name='wx_order_create_api'), # 订单创建 | 
| 154 | 154 | url(r'^wx/order_query$', pay_views.wx_order_query_api, name='wx_order_query_api'), # 订单查询补单 | 
| 155 | + url(r'^wx/order_cancel$', pay_views.wx_order_cancel_api, name='wx_order_cancel_api'), # 订单取消 | |
| 155 | 156 | url(r'^wx/order_list$', pay_views.wx_order_list_api, name='wx_order_list_api'), # 订单列表 | 
| 156 | 157 | url(r'^wx/order_detail$', pay_views.wx_order_detail_api, name='wx_order_detail_api'), # 订单详情 | 
| 157 | 158 | url(r'^wx/notify_url$', pay_views.wx_notify_url_api, name='wx_notify_url_api'), # 支付异步通知回调地址 | 
| @@ -235,6 +235,24 @@ def wx_order_query_api(request): | ||
| 235 | 235 |  | 
| 236 | 236 | @logit | 
| 237 | 237 | @transaction.atomic | 
| 238 | +def wx_order_cancel_api(request): | |
| 239 | + """ 订单取消 """ | |
| 240 | +    user_id = request.POST.get('user_id', '') | |
| 241 | +    order_id = request.POST.get('order_id', '') | |
| 242 | + | |
| 243 | + try: | |
| 244 | + order = OrderInfo.objects.select_for_update().get(order_id=order_id, status=True) | |
| 245 | + except OrderInfo.DoesNotExist: | |
| 246 | + return response(OrderStatusCode.WX_ORDER_NOT_FOUND) | |
| 247 | + | |
| 248 | + if user_id not in [order.from_uid]: | |
| 249 | + return response(OrderStatusCode.NO_CANCEL_PERMISSION) | |
| 250 | + | |
| 251 | + return response(200, 'Order Cancel Success', u'订单取消成功') | |
| 252 | + | |
| 253 | + | |
| 254 | +@logit | |
| 255 | +@transaction.atomic | |
| 238 | 256 | def wx_order_list_api(request): | 
| 239 | 257 | """ 订单列表 """ | 
| 240 | 258 |      user_id = request.POST.get('user_id', '') | 
| @@ -113,6 +113,7 @@ class OrderStatusCode(BaseStatusCode): | ||
| 113 | 113 | SIGN_CHECK_FAIL = StatusCodeField(404010, 'Sign Check Fail', description=u'签名校验失败') | 
| 114 | 114 | FEE_CHECK_FAIL = StatusCodeField(404011, 'FEE Check Fail', description=u'金额校验失败') | 
| 115 | 115 | NO_DETAIL_PERMISSION = StatusCodeField(404015, 'No Detail Permission', description=u'无详情权限') | 
| 116 | + NO_CANCEL_PERMISSION = StatusCodeField(404016, 'No Cancel Permission', description=u'无取消权限') | |
| 116 | 117 | WX_ORDER_PAID_ALREADY_EXISTS = StatusCodeField(404020, 'WX Order Paid Already Exists', description=u'照片已购买') | 
| 117 | 118 |  | 
| 118 | 119 |  |