Stripe SubscriptionItemUsageRecordService.Create()使用疑问及文档缺失求助
Stripe 计量使用量添加相关问题解答
1. 如何获取CreateAsync的parentId参数值
CreateAsync的第一个参数parentId对应的是订阅项目ID(subscription_item ID),而非客户ID。获取方式如下:
- 通过Stripe Dashboard:找到对应客户的订阅,进入订阅详情页,在「价格」区域可找到对应的subscription_item ID
- 通过API获取:先根据客户ID查询该客户的所有订阅,再从订阅的
items列表中提取目标计量价格对应的id字段,示例代码:
var subscriptionService = new SubscriptionService(); var subscriptions = await subscriptionService.ListAsync(new SubscriptionListOptions { Customer = "你的客户ID" }); // 实际根据业务逻辑筛选目标订阅项目,此处仅作示例 var targetSubscriptionItemId = subscriptions.Data.First().Items.Data.First().Id;
2. 正确判断调用成功/失败的方式
Stripe .NET SDK采用异常优先的错误处理设计,不会返回null:
- 调用成功时,
CreateAsync会返回有效的UsageRecord对象,包含使用记录的详细信息 - 调用失败时(如参数错误、权限不足、资源不存在等),会抛出
StripeException,可通过捕获该异常处理错误,示例:
try { var options = new SubscriptionItemUsageRecordCreateOptions { Quantity = count, Timestamp = DateTime.UtcNow }; var service = new SubscriptionItemUsageRecordService(); UsageRecord usageRecord = await service.CreateAsync(targetSubscriptionItemId, options); // 执行到此处说明调用成功,可基于usageRecord做后续操作 } catch (StripeException e) { // 根据错误信息或错误码做针对性处理 Console.WriteLine($"调用失败:{e.Error.Message},错误码:{e.Error.Code}"); }
Stripe SDK约定用异常传递API层面的错误,并非文档不完善,所有业务或请求错误都会以结构化的StripeException抛出。
内容的提问来源于stack exchange,提问作者Jonathan Wood
相关产品推荐
相关产品推荐

