У меня есть вебхук, который отправляет электронное письмо новым клиентам на основе счета-фактуры. оплачено каждый раз, когда новый клиент регистрируется.
У меня также есть электронное письмо, которое отправляется когда клиенты обновляют свой способ оплаты, используя 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
Stripe: новый клиент запускает обновление способа оплаты ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как отображать настраиваемые поля оплаты при выборе способа оплаты в WooCommerce Checkout?
Anonymous » » в форуме Php - 0 Ответы
- 39 Просмотры
-
Последнее сообщение Anonymous
-