付款后发送电子邮件



*大家好

我有一个SMTP客户端以便在付款后发送邮件。问题是,当我使用Paypal时,sendNewOrderNotificationAsync方法找不到电子邮件地址。事实上,当AsOrder方法创建Order对象时,没有保存电子邮件地址。你知道问题出在哪里吗?此外,当我用我自己创建的付款支付时没有问题,所以我不明白……

提前感谢你的帮助。

只有当您使用快递结帐并且在去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/7c8bc663da2023a3796bee6a42f2a2b36e1dfb22

电子邮件应该作为发货或账单地址的一部分,也就是paypal地址转换为订单地址,然后电子邮件设置为收款人信息。

检查:

OrderClient.FindAddressByName(order, "Billing").Email;

相关内容

  • 没有找到相关文章

最新更新