Stripe: новый клиент запускает обновление способа оплатыPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Stripe: новый клиент запускает обновление способа оплаты

Сообщение Anonymous »

У меня есть вебхук, который отправляет электронное письмо новым клиентам на основе счета-фактуры. оплачено каждый раз, когда новый клиент регистрируется.
У меня также есть электронное письмо, которое отправляется когда клиенты обновляют свой способ оплаты, используя customer.updated.
Теперь, поскольку регистрация нового клиента также запускает событие customer.updated, у меня есть чтобы как-то отфильтровать, чтобы электронное письмо об изменении способа оплаты отправлялось только существующим клиентам. Я делаю это, проверяя предыдущий способ оплаты.
Вот как я пытаюсь это сделать, но электронное письмо со способом оплаты по-прежнему инициируется каждым новым клиентом. Почему?
Есть ли лучший способ отправить электронное письмо об изменении способа оплаты только существующим клиентам?
case 'customer.updated':

$customer = $event->data->object;
$customerId = $customer->id;
$previousAttributes = $event->data->previous_attributes;

// Check if invoice_settings.default_payment_method OR default_source has changed
$newDefaultPaymentMethodId = $customer->invoice_settings->default_payment_method ?? null;
$newDefaultSourceId = $customer->default_source ?? null;

// Check if there was a previous default payment method or source
$hadPreviousPaymentMethod = isset($previousAttributes['invoice_settings']['default_payment_method']) || isset($previousAttributes['default_source']);

// Only proceed if there was a previous payment method or source
if ($hadPreviousPaymentMethod) {
$oldDefaultPaymentMethodId = $previousAttributes['invoice_settings']['default_payment_method'] ?? null;
$oldDefaultSourceId = $previousAttributes['default_source'] ?? null;

if ($newDefaultPaymentMethodId !== $oldDefaultPaymentMethodId || $newDefaultSourceId !== $oldDefaultSourceId) {

// Retrieve the new default payment method or source details
$paymentMethodId = $newDefaultPaymentMethodId ?: $newDefaultSourceId;
try {
$paymentMethod = \Stripe\PaymentMethod::retrieve($paymentMethodId);
$paymentMethodType = $paymentMethod->type;
$brand = '';
$last4 = '';
$exp_month = '';
$exp_year = '';

// Handle card payment method
if ($paymentMethodType === 'card') {
$last4 = $paymentMethod->card->last4;
$exp_month = sprintf("%02d", $paymentMethod->card->exp_month);
$exp_year = $paymentMethod->card->exp_year;
$brand = ucwords($paymentMethod->card->brand);
}
// Handle LINK payment method (or any other)
elseif ($paymentMethodType === 'link') {
$brand = 'LINK account';
}
// You can add more conditions for other payment types here

} catch (\Stripe\Exception\ApiErrorException $e) {
logError('Error retrieving payment method.' . $e->getMessage());
}

// Notify user
SEND EMAIL
}
}

break;


Подробнее здесь: https://stackoverflow.com/questions/790 ... hod-update
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»