*大家好
我有一个SMTP客户端,以便在付款后发送邮件。问题是,当我使用Paypal时,方法sendNewOrderNotificationAsync无法找到电子邮件地址。事实上,当AsOrder方法创建Order对象时,没有保存的电子邮件地址。你知道问题出在哪里吗?此外,当我用自己创建的付款付款时没有问题,所以我不明白......
提前感谢您的帮助。
答案 0 :(得分: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/7c8bc663da2023a3796bee6a42f2a2b36e1dfb22
答案 1 :(得分:0)
该电子邮件应作为运费或帐单地址的一部分提供,即我转换为订单地址的paypal地址,然后将电子邮件设置为收款人信息。
检查:
OrderClient.FindAddressByName(order, "Billing").Email;