如何在顾客点击“付款”之前使用 Payment Request 按钮获取默认的送货地址?我正在使用 Stripe.js 和 Elements。

8
我正在使用Stripe的PaymentRequest按钮来收集付款和运输信息,以便稍后在服务器端使用Stripe处理付款。 我的目标是ApplePay,但目前正在PaymentRequest API(Chrome)下进行测试。
为了在提交付款表单之前计算并显示税额(并更新总价),我需要知道客户的送货地址。 如果客户更改地址,则可通过“shippingaddresschange”事件轻松获取它,但如果客户没有更改,则无法触发初始(默认)地址上的“shippingaddresschange”事件。
如何获取默认送货地址,即客户未在后续更改的付款请求表单自动加载的地址? 初始(默认)地址似乎不会触发“shippingaddresschange”事件。

有更新了吗? - Furkan Guvenc
3个回答

3
请参考以下示例:https://rsolomakhin.github.io/pr/single/https://rsolomakhin.github.io/pr/multi/。如果您使用全球统一运费,例如全球平价运输选择,则Chrome会自动预选择一个地址。但是,在您的情况下,需要知道运送地址以计算并显示税额。这意味着您没有全球统一运费,因此不会预先选择运输选项。在这种情况下,Chrome要求用户明确批准向您提供其地址,这意味着用户的地址将不会像现在实现的那样在UI中被预选。

有解决方案了吗? - Furkan Guvenc

1
我认为这是Chrome的一个bug。Safari/ApplePay在显示付款页面时会触发初始的onshippingaddresschange,但Chrome不会。
我也遇到了Chrome的问题,当我选择一个送货地址时,onshippingaddresschange会触发。然后我取消/关闭对话框并重新打开,但"默认"送货地址被选中,并且我的付款页面中所有数据(例如运输选项、税费等)仍然设置为之前onshippingaddresschange事件的值。
ApplePay没有同样的问题,因为它会在打开时立即触发onshippingaddresschange事件。
这不是真正的“答案”,但我希望这提供了一些更多的上下文。

@Rouslan - 我希望你是Chromium漏洞板块上的rouslan@chromium.org,并能提供一些见解。 - fuchse
这绝对帮助我理解目前我的测试正在发生什么。谢谢分享。我遇到了完全相同的问题。你有任何解决方法吗? - LeonardChallis

-3

不存在默认的运输地址这种东西。用户必须在获取shippingaddresschange事件之前明确选择一个地址。出于隐私原因,这样做是必要的。


2
这并不是我的情况。对我来说,点击Stripe按钮会打开一个PaymentRequest API弹出窗口,并选择一个地址(这是我保存的地址列表中的第一个地址)。如果我继续付款,那么这就是将要使用的地址,并且稍后作为送货地址提供。这就是为什么我称它为“默认”地址,因为在弹出窗口出现时已经选择了它。你所说的出于隐私原因是有道理的,这样一些流氓网站就不会触发API来收集你的地址。但是我该如何计算正确的税费呢? - Jacob
@Jacob 抱歉回复晚了。我能看到一个提供预选运送地址的示例网站吗? - agektmr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接