Отправка писем после оплаты

*Привет всем

У меня есть SMTP-клиент для отправки писем после оплаты. Проблема в том, что когда я использую Paypal, метод sendNewOrderNotificationAsync не может найти адрес электронной почты. На самом деле адреса электронной почты не сохраняются, когда объект Order создается методом AsOrder. Вы знаете, в чем проблема? Более того, нет проблем, когда я плачу собственным платежом, который я создал, поэтому я не понимаю...

Спасибо заранее за вашу помощь.


person romainf    schedule 04.08.2014    source источник


Ответы (2)


Проблема возникает только в том случае, если вы используете экспресс-оплату и не заполняете адрес перед переходом в PayPal. Заказ создается перед перенаправлением на сайт PayPal, чтобы его можно было сохранить после возврата пользователя из PayPal. В момент создания заказа перехватчик отправляет электронные письма, но если нет адреса, нет возможности отправить электронное письмо. Если бы вы использовали обычную оплату и выбрали PayPal в качестве способа оплаты, все было бы хорошо. В качестве решения этой ситуации я думаю, что лучше отправить электронное письмо пользователю вручную после возврата из PayPal. Затем адрес создается и берется из вариантов возврата PayPal. Другой подход может заключаться в создании системного задания, которое периодически проверяет заказы и отправляет электронные письма на основе даты создания и статуса заказов.

Добавлен пример отправки электронной почты в PaypalExpressSuccess

Ch.RunWorkflow("ShoppingCartCheckoutWorkflow", order);
Ch.OrderRepository.UnitOfWork.Commit();

//Send email

var recipientAddress = order.OrderAddresses.FirstOrDefault(oa => oa.OrderAddressId == order.AddressId);
if (recipientAddress != null)
{
    IDictionary<string, object> context = new Dictionary<string, object> { { "order", order } };
    UserHelper.SendEmail(context, recipientAddress.Email, "order-confirmation");
}

return RedirectToAction("ProcessCheckout", "Checkout",
    new {id = order.OrderGroupId});

Теперь он включен в наш новый релиз. Проверить этот коммит https://github.com/VirtoCommerce/vc-community/commit/7c8bc663da2023a36fe2a2b4b42f2a2b36e1dfb22" rel="nofollow"> /а>

person Adomas.NET    schedule 05.08.2014
comment
Спасибо за ваш ответ, я попробую это сегодня днем. Я скажу вам, если у меня будут другие проблемы. - person romainf; 05.08.2014

электронная почта должна быть доступна как часть адреса доставки или платежного адреса, также известного как адрес PayPal, который я преобразовал в адрес заказа, а затем электронная почта настроена на информацию о получателе.

Проверить:

OrderClient.FindAddressByName(order, "Billing").Email;
person Woland    schedule 04.08.2014
comment
Я не понимаю вашего ответа... почему ничего нет в порядковых адресах с пейпалом, но что-то есть с моей собственной оплатой? Где линия, которую я должен проверить? - person romainf; 05.08.2014