Virtocommerce 付款后发送电子邮件

Virtocommerce 付款后发送电子邮件,virtocommerce,Virtocommerce,*大家好 我有一个SMTP客户端,以便在付款后发送邮件。问题是,当我使用Paypal时,sendNewOrderNotificationAsync方法无法找到电子邮件地址。事实上,当使用AsOrder方法创建Order对象时,没有保存电子邮件地址。你知道问题出在哪里吗?此外,当我用我自己创造的付款方式付款时也没有问题,所以我不明白 提前感谢您的帮助 该电子邮件应作为发货或账单地址的一部分提供,即我转换为订单地址的paypal地址,然后将电子邮件设置为收款人信息 检查: OrderClient.F

*大家好

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


提前感谢您的帮助

该电子邮件应作为发货或账单地址的一部分提供,即我转换为订单地址的paypal地址,然后将电子邮件设置为收款人信息

检查:

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

只有当您使用快速结帐并且在前往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});
Ch.RunWorkflow(“ShoppingCartCheckoutWorkflow”,订单);
Ch.OrderRepository.UnitOfWork.Commit();
//发送电子邮件
var recipientAddress=order.OrderAddresses.FirstOrDefault(oa=>oa.OrderAddressId==order.AddressId);
if(recipientAddress!=null)
{
IDictionary context=新字典{{“order”,order};
UserHelper.sendmail(上下文,recipientAddress.Email,“订单确认”);
}
返回重定向操作(“ProcessCheckout”、“Checkout”,
新的{id=order.OrderGroupId});
它现在包含在我们的新版本中。签出此提交

我不明白你的答案。。。为什么paypal的orderaddresses中没有任何内容,但我自己的付款中有一些内容?我要检查的线路在哪里?谢谢你的回答,今天下午我会试试。如果我有其他问题,我会告诉你。