Django模板中Stripe返回的receipt_url点击跳转当前页如何解决
解决方法
- 核心原因:
receipt_url不是Stripe PaymentIntent对象的根级字段,它存储在PaymentIntent关联的Charge对象下,你直接读取根级的receipt_url会拿到空值,空href的a标签点击后就会跳转当前页面。
1. 修改视图层Stripe调用代码
Stripe API默认不返回嵌套对象的完整属性,需要添加expand参数主动拉取关联的最新Charge对象信息:
# 新增expand参数拉取latest_charge完整字段 transID = stripe.PaymentIntent.retrieve( session.payment_intent, expand=['latest_charge'] ) context = { 'customer': customer, 'transID': transID, }
2. 修改模板层链接取值路径
将a标签的href取值改为从latest_charge下读取,同时加非空判断避免支付未完成时出现空链接:
<div class="status-message"> {{ transID.receipt_email }}<br/> {% if transID.latest_charge.receipt_url %} <a href="{{ transID.latest_charge.receipt_url }}" target="_blank">Find your Receipt here:</a> {% endif %} </div>
- 验证方法:可在视图层临时打印
transID.latest_charge.receipt_url,确认返回的是完整的Stripe收据链接即可。
内容的提问来源于stack exchange,提问作者paniklas
相关产品推荐
相关产品推荐

