Мой код:
$customer = $mollie->customers->create([
"name" => $name,
"email" => $email,
]);
$customer->createSubscription([
"amount" => [
"currency" => 'USD',
"value" => 20.00,
],
"interval" => '2months',
"times" => 3,
"description" => $someDescription,
"webhookUrl" => $webhook,
"method" => NULL,
]);
$payment = $customer->createPayment([
"amount" => [
"currency" => 'USD',
"value" => 20.00,
],
"description" => $someDescription,
"redirectUrl" => $siteUrl,
"webhookUrl" => $webhook,
"metadata" => [
"order_id" => $orderId,
],
"sequenceType" => \Mollie\Api\Types\SequenceType::SEQUENCETYPE_FIRST,
]);
Результат:
Fatal error: Uncaught exception 'Mollie\Api\Exceptions\ApiException' with message 'Error executing API call (422: Unprocessable Entity): No suitable mandates found for customer. Field: customerId.
Что-то мне не хватает?






Вам не хватает идентификатора клиента, которого вы создали ранее.
$payment = $customer->createPayment([
"customerId" => $customer->id, /* see #3 in documentation */
"amount" => [
"currency" => 'USD',
"value" => 20.00,
],
"description" => $someDescription,
"redirectUrl" => $siteUrl,
"webhookUrl" => $webhook,
"metadata" => [
"order_id" => $orderId,
],
"sequenceType" => \Mollie\Api\Types\SequenceType::SEQUENCETYPE_FIRST,
]);
Ошибка возникает после $ customer-> createSubscription ([]);
И когда я помещаю customerId в createSubscription (), я получаю: Неустранимая ошибка: неперехваченное исключение «Mollie \ Api \ Exceptions \ ApiException» с сообщением «Ошибка при выполнении вызова API (422: Unprocessable Entity): несуществующий параметр тела« customerId »для этот вызов API. Возможно, вы имели в виду: "раз" ?. Поле: customerId.
Я нахожу ответ на свой вопрос: Чтобы добавить подписку для пользователя, вы должны сначала добавить оплату, а затем подписку.
$customer = $mollie->customers->create([
"name" => $fullName,
"email" => $email,
]);
$payment = $customer->createPayment([
"amount" => [
"currency" => $currency,
"value" => $amount,
],
"description" => $description,
"redirectUrl" => $siteUrl,
"webhookUrl" => $webhook,
"metadata" => [
"order_id" => $orderId,
],
"sequenceType" => \Mollie\Api\Types\SequenceType::SEQUENCETYPE_FIRST,
]);
$customer->createSubscription([
"amount" => [
"currency" => $currency,
"value" => $amount,
],
"times" => $recurringLimit,
"interval" => $interval,
"description" => $description,
"webhookUrl" => $webhook,
"method" => NULL,
]);
Подписка должна быть в веб-перехватчике.
Перед созданием подписки необходимо создать мандат ( $customer->createMandate ).
Вы еще не сохранили идентификатор клиента, для которого создается этот платеж, и подписка, он должен храниться в
$customer->id. См. № 3 в документация для ссылки на клиента.