我正在尝试为订阅创建 Stripe Checkout 会话,但遇到错误,指出“收到未知参数:subscription_data[backdate_start_date]”。这是我的代码的相关部分:
public function createCheckoutSession($customerId, $priceId, $isSubscription = false)
{
$now = Carbon::parse('2024-03-01');
$financialYearStart = Carbon::createFromDate($now->year, 7, 1);
$financialYearEnd = Carbon::createFromDate($now->year + 1, 6, 30);
$sessionParams = [
'payment_method_types' => ['card'],
'customer' => $customerId,
'line_items' => [[
'price' => $priceId,
'quantity' => 1,
]],
'success_url' => url('https://test/payment/success?session_id={CHECKOUT_SESSION_ID}'),
'cancel_url' => url('https://test/payment/cancel'),
'mode' => $isSubscription ? 'subscription' : 'payment',
'subscription_data' => [],
];
if ($isSubscription) {
if ($now->month == 6) {
// User starts in June, calculate remaining days in June for trial period
$trialEndDate = Carbon::createFromDate($now->year, 6, 30)->endOfDay();
$sessionParams['subscription_data']['trial_end'] = $trialEndDate->timestamp;
} else {
// User starts before June, set the backdate start date
$backdateStartDate = $financialYearStart->subYear()->timestamp;
$billingCycleAnchor = $financialYearStart->timestamp;
$sessionParams['subscription_data']['backdate_start_date'] = $backdateStartDate;
$sessionParams['subscription_data']['billing_cycle_anchor'] = $billingCycleAnchor;
Log::info('Setting backdate_start_date and billing_cycle_anchor for before June:', [
'backdate_start_date' => $sessionParams['subscription_data']['backdate_start_date'],
'billing_cycle_anchor' => $sessionParams['subscription_data']['billing_cycle_anchor']
]);
}
}
Log::info('Stripe session params:', ['sessionParams' => $sessionParams]);
return $this->stripe->checkout->sessions->create($sessionParams);
}
错误日志:
Error processing payment: Received unknown parameter: subscription_data[backdate_start_date]
根据Stripe文档,backdate_start_date是创建订阅时的有效参数。为什么我会收到此错误,如何使用 Stripe 的结帐会话正确设置订阅的过去开始日期?
根据我在 Stripe API 文档中在 Checkout > Sessions > Create a session 上搜索的内容,参数
subscription_data
具有以下子参数:
并且网址是
$stripe->checkout->sessions->create($params);
backdate_start_date
属于账单>订阅>创建订阅,url为$stripe->subscriptions->create($params);