如何将图像 url 传递给 Django 中 Stripe API 中的 line_items.images 字段

How to pass image url to line_items.images field in Stripe API in django

在我的项目中,我正在尝试购买产品并在付款期间使用 Stripe api 为 payment.So 我想显示 product.nameproduct.priceproduct.image 在会话中。 product.nameproduct.price 工作正常,但显示的不是 product.image 图像的 alt 部分 (alt='product')。

class 在 views.py

class CreateCheckoutSessionView(View):
def post(self, request, *args, **kwargs):
    product_id = self.kwargs['id']
    product = cake_list.objects.get(id = product_id)
    YOUR_DOMAIN = 'http://127.0.0.1:8000'
    checkout_session = stripe.checkout.Session.create(
        payment_method_types=['card'],
        line_items=[
            {
                'price_data': {
                    'currency': 'usd',
                    'unit_amount': product.price*100,
                    'product_data': {
                        'name': product.name ,
                        'images': [YOUR_DOMAIN +'/media/'+ str(product.image)],
                    },
                },
                'quantity': 1,
            },
        ],
        mode='payment',
        success_url=YOUR_DOMAIN + '/myorders/',
        cancel_url=YOUR_DOMAIN + '/payment-cancelled/',
    )
    return JsonResponse({
        'id' : checkout_session.id
    })

在控制台中打印 product.image 时,它会显示正确的 ImageField 数据,即 images/filename.png。 'images' 是图片所在的文件 upload_to

很难完全理解这里的问题,但我的第一个猜测是您正试图从您的本地计算机 (http://127.0.0.1:8000) 传递图像 URLs,这是无法从远程 Stripe Checkout URL.

Stripe Checkout 是一个完全托管的解决方案,一旦您重定向到创建的 Checkout 会话,您就不再在本地开发环境中工作(请参阅浏览器中的重定向 URL)。要解决此问题,您应该为 Checkout 会话可以访问的远程托管(例如,在 CDN 上)的产品图像传递 URLs。