如何让客户更改信用卡信息

我一直难以解决的一个问题是,如何让客户更改他们的信用卡信息。最近一次出现这种情况时,我最终取消了他们的订阅,并要求他们重新创建一个。最后,我终于找到了如何生成一个链接到 Stripe 页面,让客户可以查看他们的发票历史记录、添加付款方式以及更新他们的账单信息(电子邮件地址)。

我想向 subscriptions 插件提交一个 PR 来添加这个链接,但我现在没有几个小时的时间,所以这里是如何在 Rails 中手动完成:

user = User.find_by_username('=USERNAME=');
sub=DiscourseSubscriptions::Customer.where(user_id: user.id).first;

Stripe.api_key = SiteSetting.discourse_subscriptions_secret_key
session=Stripe::BillingPortal::Session.create({
  customer: sub.customer_id,
  return_url: '=SITE_URL=/my/billing/subscriptions',
});
puts session.url

这是文档:

以及 Stripe Login | Sign in to the Stripe Dashboard 可以让您生成一个他们可以访问并粘贴电子邮件地址的链接。

9 个赞

我没有意识到 Discourse 订阅缺少此功能,但这是一个必备功能。

2 个赞

是的,我也没有意识到这一点。这感觉很紧急。

1 个赞

太棒了!这段代码应该添加到哪里?

1 个赞

您好,可以详细说明一下您提供的代码以及如何使用它吗?

我还需要让我的用户能够访问这个 Stripe portal,因为我必须在法律上向他们提供发票,而通过 API 创建订阅时不会发送发票:

我找到的解决方法是使用 Custom Hamburger Menu Links Theme Component 并添加一个指向 Stripe portal 的链接。这样做有效,但对于那些必须通过电子邮件链接进行连接的用户来说,体验并不好。

1 个赞

你需要将其放入一个生成链接并将其添加到序列化器中的插件,然后将该链接放在用户体验的某个位置。这并不是我花时间去做的事情。它可以在 rails 控制台中运行,但这对你没什么用处。

代码似乎仍然有效。

最简单的方法是 fork 该插件并添加代码。更难但更好的是添加代码和测试,以便它能被接受为 PR。如果你有预算,可以在 Marketplace 发布或直接联系我。折衷的办法是创建一个插件,例如,将链接添加到序列化器中,这样你就可以像现在一样将其放在用户体验的某个位置,比如汉堡菜单。

2 个赞

感谢您的回复和解释。不幸的是,我没有任何插件开发经验,只能做一些简单的 HTML/CSS 修改,如果需要的话,可能还会用到一些 Rails 控制台命令。

我想我现在还是会坚持我的解决方法。我也会在用户订阅的任何可能的地方添加 Stripe Portal 的链接(管理员 > 自定义 > 文本)。

2 个赞

该链接有时效性,所以我认为可以通过添加一个执行重定向的路由来实现。这样可以避免知道何时获取新链接的佣金()复杂性,并避免 keto 进行大量不必要的调用来获取永远不会被点击的链接。

它仍然是一个插件,但我认为这将是一个更简单的拉取请求。

1 个赞

啊,我想我们谈论的不是同一个链接……你可能在说你提供的代码生成的链接。我说的是我可以在 Stripe 控制面板中激活的 无代码客户门户链接。我相信只要门户已激活,此链接就有效。

是的。如果我没记错的话,我的代码可以阻止他们输入自己的电子邮件地址并通过电子邮件获取链接(并知道他们使用了哪个电子邮件地址)。如果这样就“足够好”了,那么您就一切就绪了。

值得注意的是,该插件现在似乎直接支持此功能:

3 个赞

确实如此!这很有帮助(这也是我一直没有处理魔法链接的原因)。但这并不能解决访问付款历史记录和发票链接的问题。

3 个赞