PAYATHON 2026

如何覆盖 Chargebee RedirectURL

支付老李

结论

redirect_url 不一定是 Chargebee .NET SDK 缺少的功能。先检查方法名:在 .NET 中通常写作 RedirectUrl(...),而不是文档示例里的 RedirectURL(...)。这是 CheckoutNew() 请求构建器的链式方法,并非 CheckoutNew() 的直接参数。

如果当前 SDK 的构建器里确实没有 RedirectUrl,可能是 Chargebee .NET SDK 版本较旧,也可能是项目使用的 API 版本与所查看的文档不一致。

调用方式

可以这样覆盖 Checkout Page Settings 中配置的默认跳转地址:

using ChargeBee.Models;

HostedPage hostedPage = HostedPage.CheckoutNew()
    .RedirectUrl("https://myredirecturl.com")
    .Request();

如果还要传入套餐或订阅信息,可以继续在同一个请求构建器中设置:

HostedPage hostedPage = HostedPage.CheckoutNew()
    .PlanId("your-plan-id")
    .RedirectUrl("https://myredirecturl.com")
    .Request();

可用字段取决于当前使用的 Chargebee API 版本和结账流程。

如果找不到 RedirectUrl

先确认代码补全中搜索的是:

RedirectUrl(...)

而不是:

RedirectURL(...)

C# SDK 对 URL 缩写的命名可能与其他语言的示例不同。

如果仍然找不到该方法,可以检查项目安装的 SDK 版本:

dotnet list package

再根据项目采用的包管理方式升级 Chargebee SDK,例如:

dotnet add package ChargeBee

生产项目不要直接升级。升级前应核对当前包名、目标框架兼容性,以及 Chargebee 站点使用的 API 版本。不同代际 SDK 的请求模型可能存在差异。

注意事项

  • 请求中的 redirect_url 只会覆盖当前 Hosted Page 的跳转地址,不会永久修改 Checkout Page Settings。
  • 跳转地址应使用完整的绝对 URL,例如 https://example.com/checkout/complete。
  • 不要只根据浏览器是否跳转来判断付款成功。用户可能关闭页面,也可能阻止跳转。订单状态应通过 Chargebee API 或 webhook 在服务端确认。
  • Chargebee 文档会根据所选编程语言和 API 版本展示不同的示例。复制代码前,应确认文档页面选择的是 .NET,并且与项目使用的 SDK/API 版本一致。
  • 如果升级后仍然没有该方法,应以当前 SDK 生成的请求类型和对应版本的官方文档为准,不要直接把其他语言 SDK 的方法名套用到 C#。

备注:内容仅供参考。