Пример #1
0
    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': '支付失败'})
Пример #2
0
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'))
Пример #3
0
     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()
Пример #4
0
    """
    设置配置,包括支付宝网关地址、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