我在使用python / Django的电子商务网站上工作。我集成了条带化付款,其中购物车项目作为订单项动态传递。如果购物车价值少于Rs.500,我会加收运费。当前使用条纹会话Api进行结帐过程。我想将运费作为额外的金额添加到结帐订单项价格中。 提前感谢
@csrf_exempt
def createCheckoutSession(request):
if request.method=='GET':
domain_url='http://localhost:8000/'
stripe.api_key= settings.STRIPE_SECRET_KEY
profile = UserProfile.objects.get(user__id=request.user.id)
try:
customer = stripe.Customer.retrieve(profile.stripe_id)
print (customer)
profile = UserProfile.objects.get(user__id=request.user.id)
checkoutSession = stripe.checkout.Session.create(
success_url =domain_url+'success?session_id={CHECKOUT_SESSION_ID}',
cancel_url =domain_url+'cancelled/',
payment_method_types = ['card'],
mode='payment',
line_items= get_line_items(request)[0],
customer= profile.stripe_id,
)
return JsonResponse({'sessionId':checkoutSession['id']})
except Exception as e:
return JsonResponse({"error":str(e)})
答案 0 :(得分:0)
有几种方法可以解决此问题,但一种方法是通过仪表板或API创建交货价格。然后,如果订单项价格unit_amounts
的总和小于500,则将运输价格添加到订单项中,并将项目数组传递给会话create调用:
# The shipping price ID
shipping_price = "price_xxx"
# Base price
price = stripe.Price.retrieve(
"price_yyy",
)
# If there are more than one item you can iterate over items and sum the unit_amounts
items = [
{
"price": price.id,
"quantity": 1,
},
]
# For simplicity I assume there is only one price being charged, for summing, iterate over the items
if(price.unit_amount < 500):
items.append({
"price": shipping_price,
"quantity": 1,
})
stripe.checkout.Session.create(
success_url="https://example.com/success",
cancel_url="https://example.com/cancel",
payment_method_types=["card"],
line_items=items,
mode="payment",
)