def alipay_notify(request): print '>>notify url handler start...' if request.method == 'POST': if alipay.notify_verify(request.POST): pprint('pass verification...') tn = request.POST.get('out_trade_no') pprint('Change the status of bill %s' % tn) order = Order.objects.get(pk=tn) trade_status = request.POST.get('trade_status') pprint('the status of bill %s changed to %s' % (tn, trade_status)) order.trade_status = trade_status order.save() trade_no = request.POST.get('trade_no') if trade_status == 'WAIT_SELLER_SEND_GOODS': pprint('It is WAIT_SELLER_SEND_GOODS, so upgrade bill') order.finish() url = alipay.send_goods_confirm_by_platform(trade_no) pprint('send goods confirmation. %s' % url) req = urllib.urlopen(url) return HttpResponse("success") else: pprint('##info: Status of %s' % trade_status) return HttpResponse("success") return HttpResponse("fail")
def get_context_data(self, **kwargs): """ 获取页面参数 by: 范俊伟 at:2015-03-07 信息校验 by: 范俊伟 at:2015-03-08 修改支付逻辑 by: 范俊伟 at:2015-03-12 """ need_log.debug('ZhifubaoPayCompleteView META:' + str(self.request.META)) need_log.debug('ZhifubaoPayCompleteView GET:' + str(self.request.GET.items())) need_log.debug('ZhifubaoPayCompleteView POST:' + str(self.request.POST.items())) verify = notify_verify(self.request.GET) if not verify: messages.error(self.request, '校验失败') return super(ZhifubaoPayCompleteView, self).get_context_data(**kwargs) out_trade_no = self.request.REQUEST.get('out_trade_no') try: pay_order = PayOrder.objects.get(flag=out_trade_no) except PayOrder.DoesNotExist: messages.error(self.request, '订单不存在') return super(ZhifubaoPayCompleteView, self).get_context_data(**kwargs) if pay_order.status == STATUS_SUCCESS: kwargs['order'] = pay_order.order kwargs['success'] = True else: messages.error(self.request, '可能因为网络数据过多,支付还未完成,请稍后查看,请不要重复支付!') return super(ZhifubaoPayCompleteView, self).get_context_data(**kwargs)
def alipay_notify(request): print '>>notify url handler start...' if request.method == 'POST': if alipay.notify_verify(request.POST): pprint('pass verification...') tn = request.POST.get('out_trade_no') pprint('Change the status of bill %s'%tn) order = Order.objects.get(pk=tn) trade_status = request.POST.get('trade_status') pprint('the status of bill %s changed to %s'% (tn,trade_status)) order.trade_status = trade_status order.save() trade_no = request.POST.get('trade_no') if trade_status == 'WAIT_SELLER_SEND_GOODS': pprint('It is WAIT_SELLER_SEND_GOODS, so upgrade bill') order.finish() url = alipay.send_goods_confirm_by_platform(trade_no) pprint('send goods confirmation. %s'%url) req = urllib.urlopen(url) return HttpResponse("success") else: pprint ('##info: Status of %s' % trade_status) return HttpResponse ("success") return HttpResponse ("fail")
def zhifubao_pay_callback(request): """ 支付宝回调页面 by: 范俊伟 at:2015-03-06 逻辑修改 by: 范俊伟 at:2015-03-07 信息校验 by: 范俊伟 at:2015-03-08 修改支付逻辑 by: 范俊伟 at:2015-03-12 :param request: :return: """ need_log.debug('zhifubao_pay_callback META:' + str(request.META)) need_log.debug('zhifubao_pay_callback GET:' + str(request.GET.items())) need_log.debug('zhifubao_pay_callback POST:' + str(request.POST.items())) need_log.debug('zhifubao_pay_callback body:' + str(request.body)) try: verify = notify_verify(request.POST, ['service', 'v', 'sec_id', 'notify_data'], True) need_log.debug('zhifubao_pay_callback verify:' + str(verify)) if verify: notify_data = parseXml(request.POST.get('notify_data').encode('utf-8')) out_trade_no = notify_data.get('out_trade_no') trade_status = notify_data.get('trade_status') if trade_status == 'TRADE_SUCCESS' or trade_status == 'TRADE_FINISHED': pay_order = PayOrder.objects.get(flag=out_trade_no) pay_order.success(notify_data.get('trade_no')) return HttpResponse('success') else: return HttpResponse('fail') except PayOrder.DoesNotExist: pass except: common_except_log() return HttpResponse('fail')
def get_context_data(self, **kwargs): """ 充值界面修改 by: 范俊伟 at:2015-05-13 """ need_log.debug('ZhifubaoPayCompleteView META:' + str(self.request.META)) need_log.debug('ZhifubaoPayCompleteView GET:' + str(self.request.GET.items())) need_log.debug('ZhifubaoPayCompleteView POST:' + str(self.request.POST.items())) verify = notify_verify(self.request.GET) if not verify: kwargs['message'] = '校验失败' return super(ZhifubaoPayCompleteViewV2, self).get_context_data(**kwargs) out_trade_no = self.request.REQUEST.get('out_trade_no') try: pay_order = PayOrder.objects.get(flag=out_trade_no) except PayOrder.DoesNotExist: kwargs['message'] = '订单不存在' return super(ZhifubaoPayCompleteViewV2, self).get_context_data(**kwargs) if pay_order.status == STATUS_SUCCESS: order = pay_order.order kwargs['order'] = order kwargs['success'] = True try: project_id = order.project_id product_id = order.product_id address_id = order.address_id p = Project.objects.get(pk=order.project_id) balance = get_project_balance_base(project_id) kwargs['project_name'] = p.name kwargs['person_nums'] = balance.get("person_nums") kwargs['balance'] = balance.get('total') - balance.get('price') kwargs['days'] = balance.get("days") product = Product.objects.get(pk=product_id) kwargs['gold'] = product.gold if address_id: tax_id = order.tax_id tax = Tax.objects.get(pk=tax_id) kwargs["fptt"] = tax.fptt address = Address.objects.get(pk=address_id) kwargs["address"] = address.address_v2 kwargs["address_detail"] = address.address_detail kwargs["zip_code"] = address.zip_code kwargs["username"] = address.username kwargs["phone"] = address.phone kwargs["has_fp"] = "True" except Exception as e: print e kwargs['message'] = '订单不存在' else: kwargs['message'] = '订单不存在' return super(ZhifubaoPayCompleteViewV2, self).get_context_data(**kwargs)
def zhifubao_pay_callback(request): """ 支付宝回调页面 by: 范俊伟 at:2015-03-06 逻辑修改 by: 范俊伟 at:2015-03-07 信息校验 by: 范俊伟 at:2015-03-08 修改支付逻辑 by: 范俊伟 at:2015-03-12 :param request: :return: """ need_log.debug('zhifubao_pay_callback META:' + str(request.META)) need_log.debug('zhifubao_pay_callback GET:' + str(request.GET.items())) need_log.debug('zhifubao_pay_callback POST:' + str(request.POST.items())) need_log.debug('zhifubao_pay_callback body:' + str(request.body)) try: verify = notify_verify(request.POST, ['service', 'v', 'sec_id', 'notify_data'], True) need_log.debug('zhifubao_pay_callback verify:' + str(verify)) if verify: notify_data = parseXml( request.POST.get('notify_data').encode('utf-8')) out_trade_no = notify_data.get('out_trade_no') trade_status = notify_data.get('trade_status') if trade_status == 'TRADE_SUCCESS' or trade_status == 'TRADE_FINISHED': pay_order = PayOrder.objects.get(flag=out_trade_no) pay_order.success(notify_data.get('trade_no')) return HttpResponse('success') else: return HttpResponse('fail') except PayOrder.DoesNotExist: pass except: common_except_log() return HttpResponse('fail')
def alipay_return(request): """ Handler for synchronous updating billing information. """ logger1.info('>> return url handler start') if notify_verify(request.GET): tn = request.GET.get('out_trade_no') trade_no = request.GET.get('trade_no') logger1.info('Change the status of bill %s' % tn) # bill = UserResult.objects.get(our_trade_no=tn) trade_status = request.GET.get('trade_status') logger1.info('the status changed to %s' % trade_status) is_detail = False urs = UserResult.objects.filter(our_trade_no=tn) if urs.exists(): bill = UserResult.objects.get(our_trade_no=tn) else: urs = UserResult.objects.filter(detail_our_trade_no=tn) if urs.exists(): is_detail = True bill = UserResult.objects.get(detail_our_trade_no=tn) else: return HttpResponse("fail") trade_status = request.POST.get('trade_status') language = request.POST.get('extra_common_param', 'zh') if is_detail: if not bill.is_pay_detail: bill.is_pay_detail = True bill.detail_pay_time = datetime.now() bill.detail_trade_no = trade_no bill.save() else: if not bill.is_pay: bill.is_pay = True bill.pay_time = datetime.now() bill.trade_no = trade_no bill.save() eval_obj = { "title": bill.questions.get_title(language), "content": bill.questions.get_content(language), "questions": bill.questions.question, } explains = UserScoreExplain.objects.filter(user_result=bill) # bill.score_explain.all() user_result = bill if not is_detail and not user_result.is_pay_detail: for_detail = True pay_url = create_direct_pay_by_user(user_result.detail_our_trade_no, __(u'爱在人间详细测试报告'), bill.questions.get_title(language), user_result.detail_price, language) else: for_detail = False pay_url = '' return render_to_response('backend/eval_result.html', { "button_text": _(u"支付"), "title": _(u"测试题"), "user_result": bill, "is_need_pay": not is_detail and not user_result.is_pay_detail, "lang_set": False, "is_detail": for_detail, "explains": explains, "eid": bill.questions.id, "price": bill.questions.detail_price, "pay_url": pay_url, "lang_code": language, "view_name": "alipay_return", "eval": eval_obj}) return HttpResponseRedirect(reverse('payment_error'))
def alipay_notify(request): """ Handler for notify_url for asynchronous updating billing information. Logging the information. """ logger1.info('>>notify url handler start...') if request.method == 'POST': if notify_verify(request.POST): logger1.info('pass verification...') tn = request.POST.get('out_trade_no') trade_no = request.POST.get('trade_no') logger1.info('Change the status of bill %s' % tn) is_detail = False urs = UserResult.objects.filter(our_trade_no=tn) if urs.exists(): bill = UserResult.objects.get(our_trade_no=tn) else: urs = UserResult.objects.filter(detail_our_trade_no=tn) if urs.exists(): is_detail = True else: return HttpResponse("fail") trade_status = request.POST.get('trade_status') language = request.POST.get('extra_common_param', 'zh') if is_detail: logger1.info('the status of bill %s changed to %s' % (tn, trade_status)) if not bill.is_pay_detail: bill.is_pay_detail = True bill.detail_pay_time = datetime.now() bill.detail_trade_no = trade_no bill.save() if bill.is_pay_detail: to_email = bill.user.email if to_email: explains = UserScoreExplain.objects.filter(user_result=bill) # bill.score_explain.all() content = [] for explain in explains: content.append(explain.explain.get_detail(language)) send_report_mail(to_email, title=bill.questions.get_title(language), content='<br>'.join(content)) else: logger1.info('the status of bill %s changed to %s' % (tn, trade_status)) if not bill.is_pay: bill.is_pay = True bill.pay_time = datetime.now() bill.trade_no = trade_no bill.save() if bill.is_pay: to_email = bill.user.email if to_email: explains = UserScoreExplain.objects.filter(user_result=bill) # bill.score_explain.all() content = [] for explain in explains: content.append(explain.explain.get_content(language)) send_report_mail(to_email, title=bill.questions.get_title(language), content='<br>'.join(content)) logger1.info('##info: Status of %s' % trade_status) logger1.info('return success') return HttpResponse("success") logger1.info('return fail') return HttpResponse("fail")