def post(self, request): """查看订单支付状态""" # 判断用户登录 user = request.user if not user.is_authenticated: return JsonResponse({'res': 0, 'errmsg': '用户未登陆'}) # 接收参数 order_id = request.POST.get('order_id') # 校验参数 if not order_id: return JsonResponse({'res': 1, 'errmsg': '参数不完整'}) try: order = OrderInfo.objects.get(order_id=order_id, user=user, pay_method=3, order_status=1) except OrderInfo.DoesNotExist: return JsonResponse({'res': 2, 'errmsg': '无效的订单id'}) """ 设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥等,其他配置值可以查看AlipayClientConfig的定义。 """ alipay_client_config = AlipayClientConfig() alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do' alipay_client_config.app_id = '2016100100641374' app_private_key = '' with open(os.path.join(settings.BASE_DIR, 'apps/order/app_private_key.pem'), 'r') as f: for line in f: app_private_key += line alipay_client_config.app_private_key = app_private_key alipay_public_key = '' with open(os.path.join(settings.BASE_DIR, 'apps/order/alipay_public_key.pem'), 'r') as f: for line in f: alipay_public_key += line alipay_client_config.alipay_public_key = alipay_public_key """ 得到客户端对象。 注意,一个alipay_client_config对象对应一个DefaultAlipayClient,定义DefaultAlipayClient对象后,alipay_client_config不得修改,如果想使用不同的配置,请定义不同的DefaultAlipayClient。 logger参数用于打印日志,不传则不打印,建议传递。 """ client = DefaultAlipayClient(alipay_client_config=alipay_client_config, logger=logger) total_pay = order.transit_price + order.total_price total_pay = round(float(total_pay), 2) model = AlipayTradePagePayModel() model.out_trade_no = order_id model.total_amount = total_pay model.subject = "天天生鲜{0}".format(order_id) model.product_code = "FAST_INSTANT_TRADE_PAY" while True: request = AlipayTradeQueryRequest(biz_model=model) response = client.page_execute(request, http_method="GET") data = requests.get(response) data = json.loads(data.text) code = data.get('alipay_trade_query_response').get('code') trade_status = data.get('alipay_trade_query_response').get('trade_status') print(code, trade_status) if code == '10000' and trade_status == 'TRADE_SUCCESS': # 支付成功 # 获取支付宝交易号 trade_no = data.get('alipay_trade_query_response').get('code') # 更新订单状态 order.trade_no = trade_no order.order_status = 4 order.save() # 返回结果 return JsonResponse({'res': 3, 'message': '支付成功'}) elif code=='40004' or (code == '10000' and trade_status == 'WAIT_BUYER_PAY'): # 等待卖家付款 import time time.sleep(5) continue else: # 支付出错 return JsonResponse({'res': 4, 'errmsg': '支付失败'})
alipay_client_config.app_private_key = app_private_key alipay_public_key = '' with open(os.path.join(settings.BASE_DIR, 'apps/order/alipay_public_key.pem'), 'r') as f: for line in f: alipay_public_key += line alipay_client_config.alipay_public_key = alipay_public_key """ 得到客户端对象。 注意,一个alipay_client_config对象对应一个DefaultAlipayClient,定义DefaultAlipayClient对象后,alipay_client_config不得修改,如果想使用不同的配置,请定义不同的DefaultAlipayClient。 logger参数用于打印日志,不传则不打印,建议传递。 """ client = DefaultAlipayClient(alipay_client_config=alipay_client_config) total_pay = transit_price + total_price model = AlipayTradePagePayModel() model.out_trade_no = order_id model.total_amount = 0.01 model.subject = "天天生鲜{0}".format(order_id) model.product_code = "FAST_INSTANT_TRADE_PAY" request = AlipayTradePagePayRequest(biz_model=model) response = client.page_execute(request, http_method="GET") print(response) # request = AlipayTradeQueryRequest(biz_model=model) # response = client.page_execute(request, http_method="GET") # data = requests.get(response) # print(json.loads(data.text)) # data = json.loads(data.text) # print(data.get('alipay_trade_query_response').get('code'))
print(traceback.format_exc()) if not response_content: print("failed execute") else: response = AlipayOfflineMaterialImageUploadResponse() response.parse_response_content(response_content) if response.is_success(): print("get response image_url:" + response.image_url) else: print(response.code + "," + response.msg + "," + response.sub_code + "," + response.sub_msg) """ 页面接口示例:alipay.trade.page.pay """ # 对照接口文档,构造请求对象 model = AlipayTradePagePayModel() model.out_trade_no = "pay201805020000226" model.total_amount = 50 model.subject = "测试" model.body = "支付宝测试" model.product_code = "FAST_INSTANT_TRADE_PAY" settle_detail_info = SettleDetailInfo() settle_detail_info.amount = 50 settle_detail_info.trans_in_type = "userId" settle_detail_info.trans_in = "2088302300165604" settle_detail_infos = list() settle_detail_infos.append(settle_detail_info) settle_info = SettleInfo() settle_info.settle_detail_infos = settle_detail_infos model.settle_info = settle_info sub_merchant = SubMerchant()
""" 设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥等,其他配置值可以查看AlipayClientConfig的定义。 """ alipay_client_config = AlipayClientConfig(sandbox_debug=False) alipay_client_config.server_url = 'https://openapi.alipaydev.com/gateway.do' alipay_client_config.app_id = '2016091700533057' alipay_client_config.app_private_key = "MIIEpQIBAAKCAQEA2FudQ6FY7Zox7GfutOK5Gp349j+0ZrY/SBoO13t+IZUms50Fyq+C4emXQ/xmwDmxX6/sBQeUgS45UOmXNPpHnSPwUwwLkOtBwxlWnz/Yijy3q/juSjg7OQe6jaGaZB/Rz7KtqxkJkuFXWs7C8DwpGsuAn72tYMwRlBofEItOQXjYUg+GMEvYsZMyx/PXRMDa8pZKFSOx4VTwrKrvOdCH9Krg+BbKAcXmj0+NHPI+vAhWn4MyZx5c/hqqIqnmY/gaVoCQkpJjFZ+t1fe21YAdoNbEX+x5lJe11qVjVxfxcGGDLMwvhAt6bzhSMy1kqKoYa3BiQnPOSy8c/ZhobX1XOQIDAQABAoIBAHN5+mcVX+R5TzoRguuSsx9Mv4uXFs9XaFEwb0l9hSWheOWW4nd6082GIpFLzv+8Czq6J6vLjuyf4kGYW3cQOlbZzrRUknvHxPK/vGcE6atmmtWz6GM+vgVDZcOgREo6XX6QrHbMxzpZAYnbH1qfkYTWpxEbaMVoRd2ZT4lCAQOZ48nXpTTh52xytNSbHYjugSIs+7UHk/Ls+dIa+uVScK7936BQQlWP0BPvif7feFL2EK0ycqbo10ZjqNKROuvugFo1uYeWj6eR8l57z/63aeGV6xRBgGQE7/h6+Aol7Kg1AxOdkMOQJh01yQ/h0r9OqsYxp9EYuFvdQd/S8/em9l0CgYEA9hHgsxcMq7V27NctcVc9m03tZz4emUgS4eyIlMQ8dN3su9mFaQkvid4rjwDivZyNS/ukWSsITMIO5si7nJbX8G0XhulbR7F/Lbb9musDC/xKUDX1LWswicnEEo0P8nD6AP/IMDjWSL8Mubb630upGOwC3WDVwdj0A70jtf+KjxcCgYEA4RbJCT0DKQt2zZ6DciRuh2mY3co5irjw7pO39jSyJZ+3DHYfPyF7qKtCWdqA9uJ4I4HO99ibbEmFJix5YEw2HD/5nN+3fyxJ0nmUtIzosWjUZ/hA2HE7wfwoS64NXLKeg3s2AqMxjT/fjXc09BYrs7EiE/w3grgVRxLLvzI2vi8CgYEA3Ajyf9JtnyGeXXywgvg6+6P8VOTEYdaEJAfpvfWYBfzokrWYyWrQWp0TIEXvexQBeV9k/+MuAc1Jm+8FbKmqILC8aARFfl9m1Q8byaq6x73rCbymJ94AwkVskhYXm3iQ5dHTReOdIeHM1EieHow+gi2RBjpwCm4hDTLVOwpt8TMCgYEAm8z8vHNJ47g2tJ7a10AWbY6PLD3U1Ius4UbIWBgjk11ZA7wjZrxTbu2UEMPo7nrVs6YfT3jUJAFDs6enIBvAfI9fxNEpn1JViuVzJAJA8sPf+lNg9zBxr5VNgwzn3NkaVWIMgYjaPK4QnEf+FFHgUBH0x6aV+dpXiAmflCk6sSsCgYEAm5h+JtiuIoWTEJ+zUCFSPYMSE0FiTjQKJfyUOuUR22l/MSqk8UFUE+xDmk5sBCHNXp+pvo8z5tsFglY50qrBigWAjjyQL00QOdQA9M0EYz8cZ5B9W5bZO42FYASKlTFvJtZs0/P4EFgOPeDlj1UgUpgbIBGGl1zoGgLtk85nH5U=" alipay_client_config.alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAltj6/yXI0htgB18KIogveTv7r9MM091hufQ+KPpGPT0Ta8flWw+abZdgCska7fVWKaZyfv11sstYpzhhZxgtForNBgCVooQr8LT0/6wwy80kNNbVWkWCzu22QQYGG373Al/OIHnffDgPD0GYgpDtGWtC8QSqJpVnAXHG3QiL8puNnSutT8H7UUXMj6DEgE1AuMu6LlcAhBsew9jhCTEsJ/iGZ6I1kWtGrawFYS71m+fRuMNmrEufZ94M8ePwqMLxoUg6wgN1Dk8iSqCIjeOdcvlYwrxgrcrM4rekCSaxnoFwD7VhR3qtOKvV8/n4Ydzweh2/bs6rUbb29VU/vXVWdQIDAQAB" client = DefaultAlipayClient(alipay_client_config=alipay_client_config, logger=logger) """ 页面接口示例:alipay.trade.page.pay """ # 对照接口文档,构造请求对象 model = AlipayTradePagePayModel() model.out_trade_no = "pay201805020000226" model.total_amount = 50 model.subject = "测试" model.body = "支付宝测试" model.product_code = "FAST_INSTANT_TRADE_PAY" settle_detail_info = SettleDetailInfo() settle_detail_info.amount = 50 settle_detail_info.trans_in_type = "userId" settle_detail_info.trans_in = "2088302300165604" settle_detail_infos = list() settle_detail_infos.append(settle_detail_info) settle_info = SettleInfo() settle_info.settle_detail_infos = settle_detail_infos model.settle_info = settle_info