将额外金额添加到条纹结帐

时间:2020-10-15 07:52:56

标签: python django stripe-payments e-commerce stripe-checkout

我在使用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)})

1 个答案:

答案 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",
)
相关问题