如何在django中创建一个只能通过重定向从stripe checkout会话页面访问的页面?



我希望一个页面(视图)只能通过从stripe checkout会话页面重定向访问,而不能以任何其他方式访问。

这是我希望只能通过重定向从stripe checkout会话页面访问的页面:

def successView(request):
data = cartData(request)
cartItems = data['cartItems']
context = {'cartItems':cartItems}
return render(request, 'store/success.html', context)

这是重定向到该页面的stripe checkout会话页面:

class CreateCheckoutSessionView(View):
def post(self, request, *args, **kwargs):
data = cartData(request)
cartItems = data['cartItems']
order = data['order']
items = data['items']
line_items_list=[]
for item in items:
quantity=item['quantity']
price_stripe=item['product']['stripe-price']
line_items_list.append(
{
'price': price_stripe,
'quantity': quantity,

}
)

checkout_session = stripe.checkout.Session.create(
payment_method_types=['card'],
shipping_address_collection={'allowed_countries': ['DK']},
line_items=line_items_list,
automatic_tax={
'enabled': True,
},
mode="payment",
success_url=YOUR_DOMAIN + 'success/',
cancel_url=YOUR_DOMAIN + 'kurv/'
)
return redirect(checkout_session.url)

当然,可以有许多解决方案,您可以自己找到它们。但要找到解决方案,您需要了解服务器对从Stripe checkout页面重定向的访问者的了解。您可以使用两个参数来确定用户是否在从Stripe checkout页面重定向后返回到您的网站:

  • GET请求的URL参数session_id;
  • HTTP头Referer.

有了这些提示,你可以开启你的创造力并实现,例如:

  • 检查session_id会话是否存在;
  • .htaccess文件中写入一些基于Referrer值的允许/拒绝/重定向规则。

祝你好运!

最新更新