如何将图像 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.name
、product.price
和 product.image
在会话中。 product.name
和 product.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。
在我的项目中,我正在尝试购买产品并在付款期间使用 Stripe api 为 payment.So 我想显示 product.name
、product.price
和 product.image
在会话中。 product.name
和 product.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。