def post(self, request, *args, **kwargs): """ 微信支付回调请求 :param request: :return: """ success_message = {'return_code': 'SUCCESS', 'return_msg': 'OK'} fail_message = {'return_code': 'FAIL', 'return_msg': 'SIGN INCORRECT'} success_data = { 'payment_status': 200, 'payment_mode': 2, 'payment_time': now() } fail_data = {'payment_status': 500, 'payment_mode': 2} data_dict = main.anaysize_xml_to_dict(request.body) # 微信支付时返回通讯失败 if data_dict['return_code'] == 'FAIL': return Response(main.make_dict_to_xml(fail_message), status=status.HTTP_200_OK) if not self.is_sign_valid(data_dict): return Response(main.make_dict_to_xml(fail_message), status=status.HTTP_200_OK) return_xml = main.make_dict_to_xml(success_message, use_cdata=True) if data_dict['result_code'] == 'SUCCESS': try: orders = Orders.update_payment_status_by_pay_callback( orders_id=self._orders_id, validated_data=success_data) except: return Response(return_xml, status=status.HTTP_200_OK) else: # 钱包余额更新 (订单收入) result = WalletAction().income(None, orders, gateway='pay_callback') if isinstance(result, Exception): return result else: try: Orders.update_payment_status_by_pay_callback( orders_id=self._orders_id, validated_data=fail_data) except: return Response(return_xml, status=status.HTTP_200_OK) serializer = NativeResponseSerializer(self._wx_instance) serializer.update_wxpay_result(self._wx_instance, data_dict) return Response(return_xml, status=status.HTTP_200_OK)
def post(self, request, *args, **kwargs): """ 支付宝支付回调请求 :param request: :return: """ success_message = {'return_code': 'SUCCESS', 'return_msg': 'OK'} fail_message = {'return_code': 'FAIL', 'return_msg': 'SIGN INCORRECT'} success_data = { 'payment_status': 200, 'payment_mode': 3, 'payment_time': now() } fail_data = {'payment_status': 500, 'payment_code': 3} form = PreCreateCallbackForm(request.data) if not form.is_valid(): return Response(fail_message, status=status.HTTP_200_OK) self.request_data = _request_data = form.cleaned_data if not self.is_sign_valid(): return Response(fail_message, status=status.HTTP_200_OK) if _request_data['trade_status'] == 'TRADE_SUCCESS': try: orders = Orders.update_payment_status_by_pay_callback( orders_id=self._orders_id, validated_data=success_data) except: return Response(success_message, status=status.HTTP_200_OK) else: # 钱包余额更新 (订单收入) result = WalletAction().income(None, orders, gateway='pay_callback') if isinstance(result, Exception): return result else: try: Orders.update_payment_status_by_pay_callback( orders_id=self._orders_id, validated_data=fail_data) except: return Response(success_message, status=status.HTTP_200_OK) serializer = PreCreateResponseSerializer(self._ali_instance) serializer.update_alipay_result(self._ali_instance, _request_data) return Response(success_message, status=status.HTTP_200_OK)