Динамический план чередования с sca
Моя проблема: я работаю над приложением на основе подписки или рассрочки, поэтому пользователь получает любую сумму, которую он должен был получить в течение 3 или 6 месяцев. Для этого я использовал метод чередования и расписания:
При создании плана, если цена указана вручную, она работает. Подписка создается Но у меня иногда есть расчет и сумма меняется как динамическая подписка и я хочу чтобы цена была динамической.
Но когда я делаю
amount" => $price,
dynamic Я получаю сообщение об ошибке «Этот платеж требует дополнительных действий пользователя, прежде чем он может быть успешно завершен. Платеж может быть завершен с использованием PaymentIntent, связанного со счетом-фактурой. Подробнее см.: https://stripe.com/docs/billing/subscriptions/overview#требует-действие"
//Fetching intent
$intent = \Stripe\PaymentIntent::retrieve($paymentMethodParams->paymentIntent['id']);
//Create stripe user
$customer = \Stripe\Customer::create(([
'email' => 'evansd@ed.com',
'description' => 'Valued Customer',
'name' => 'Ed Ward',
'payment_method' => $paymentMethodParams->paymentMethod['id'],
'invoice_settings' =>
[
'default_payment_method' => $paymentMethodParams->paymentMethod['id']
]
]));
//Attaching paymentIntent with Customer
\Stripe\PaymentIntent::update($paymentMethodParams->paymentIntent['id'],
[
'customer' => $customer->id,
]
);
$intent = \Stripe\PaymentIntent::retrieve($paymentMethodParams->paymentIntent['id']);
$product = \Stripe\Product::create([
'name' => 'Payment plan for user',
'type' => 'service'
]);
//Creating plan for the customer
$plan = \Stripe\Plan::create(
array(
"product" => [
"name" => '#1 monthly Subscription'
],
"amount" => 200,
'nickname' => 'Payment Plan for order - ',
"currency" => 'GBP',
"interval" => 'month',
"interval_count" => 1,
'metadata' => [
]
)
);
$schedule = \Stripe\SubscriptionSchedule::create([
'customer' => $customer->id,
'start_date' => 'now',
'end_behavior' => 'cancel',
'metadata' => [
'local_id' => 'ABC 12345',
],
'phases' => [
[
'items' => [
[
'plan' => $plan->id,
],
],
'iterations'=>2
],
],
]);
$subscription_id = $schedule->subscription;
$result = \Stripe\Subscription::update($subscription_id,
[
'expand' => ['latest_invoice.payment_intent'],
]
);
$invoice = \Stripe\Invoice::retrieve($result->latest_invoice->id);
$invoice->pay();
Что я сделал до сих пор:
1: Я даже пытался установить
$price = 1
и поэтапно '
quantity' => $price * $qty
поэтому он берет мою цену. Но потом опять то же самое.
Эта проблема касается только некоторых тестовых карт, таких как:
4000 0027 6000 3184.
(проблема началась, когда была внедрена SCA). Остальные карты без правил sca работают отлично.(Эти карты требуют аутентификации для всех транзакций, независимо от того, как настроена карта.)
2: сначала создали план, а затем создали клиента с планом, как указано в планах подписки Stripe с различными суммами.
Я думаю, что это не действие пользователя, а проблема с ценой динамического плана. Если цена статична, то работает и со sca-картой.
Заранее спасибо.