php - 创建订阅时出现条带问题:“无法确定要请求的 URL”
问题描述
我已经多次设置条纹,以前从未遇到过这个问题。我正在处理“客户创建”网络挂钩并使用有效负载将条带 ID 附加到我的用户并设置新订阅。
我收到以下错误:
Stripe\Exception\UnexpectedValueException: Could not determine which URL to request: Stripe\Subscription instance has invalid ID: in file /Users/mick/repos/askit/vendor/stripe/stripe-php/lib/ApiResource.php on line 107
这只发生在我尝试创建新订阅时。这是我的完整控制器:
public function handleCustomerCreated(Request $request)
{
$payload = json_decode($request->getContent(), true);
$user_id = $payload->data->object->subscriptions->data[0]->metadata->user_id;
$subscription_id = $payload->data->object->subscriptions->data[0]->id;
$stripe_customer_id = $payload->data->object->id;
$current_period_start = $payload->data->object->subscriptions->data[0]->current_period_start;
$current_period_end = $payload->data->object->subscriptions->data[0]->current_period_end;
$stripe_plan = $payload->data->object->subscriptions->data[0]->items->data[0]->plan->id;
$name = $payload->data->object->subscriptions->data[0]->items->data[0]->plan->nickname;
$stripe_status = $payload->data->object->subscriptions->data[0]->status;
$interval = $payload->data->object->subscriptions->data[0]->items->data[0]->plan->interval_count;
$user = User::query()->find($user_id);
$user->stripe_id = $stripe_customer_id;
$user->save();
$subscription = new Subscription();
$subscription->user_id = $user_id;
$subscription->name = $name;
$subscription->stripe_id = $stripe_customer_id;
$subscription->stripe_status = $stripe_status;
$subscription->stripe_plan = $stripe_plan;
$subscription->interval = $interval;
$subscription->current_period_start = $current_period_start;
$subscription->current_period_end = $current_period_end;
$subscription->subscription_id = $subscription_id;
$subscription->save();
}
如果我删除了新的订阅内容,它可以正常工作,则条纹会很好地附加到我的用户模型上。错误仅发生在这部分:
$subscription = new Subscription();
$subscription->user_id = $user_id;
$subscription->name = $name;
$subscription->stripe_id = $stripe_customer_id;
$subscription->stripe_status = $stripe_status;
$subscription->stripe_plan = $stripe_plan;
$subscription->interval = $interval;
$subscription->current_period_start = $current_period_start;
$subscription->current_period_end = $current_period_end;
$subscription->subscription_id = $subscription_id;
$subscription->save();
有任何想法吗?该表是由 Laravel Cashier 自动创建的。
解决方案
尝试使用Stripe API Docs\Stripe\Subscription::create()
中所示的方法,而不是手动创建和修改. 您当前的代码正在尝试API 中尚不存在的订阅,因此无法找到其.new Subscription()
update
id
推荐阅读
- html - 防止TD从内容上长高
- amazon-web-services - 仅使用 CloudFormation 分配私有 IP
- regex - Azure CLI\Powershell 如何排除要求
- php - 运行多个查询时如何解决“命令不同步”错误?
- authentication - 更新移动应用程序以使用 ROPC 请求访问令牌时在 Web API 上未经授权
- reactjs - 无法多次渲染 React 组件
- android - onTouch() 方法没有收到 ACTION_DOWN
- python - Keras Conv2D 输出维度。多类实例分割
- ifc - 具有与 BIMServer 类似的 IFC 处理能力的工具
- c++ - Visual Studio 2015 std::map 观看