如何使用 Payments PayPalStandard 插件将正确的详细信息传递到 PayPal 电子邮件的“运输详细信息”字段中?
How do I pass the correct details into the PayPal email “Shipping details” field using Payments PayPalStandard Plugin?
当我处理我的购物车时,我将所有需要的信息传递给与购买和用户地址相关的 PayPal。我还允许用户选择通过 UPS 运送购买的商品或从我们的卫星地点之一取货。因此,如果用户选择 UPS,我希望“运输详情”字段在 PayPal 发送给我的商店经理的电子邮件中说明 UPS。但是,如果用户选择提货,我想在“送货详情”字段下显示提货地点名称。
目前,所有购买的送货详细信息字段都显示“空运服务”,这对我们来说没有任何意义或无用,作为我们处理用户购买的一条信息。
在 nopCommerce PayPal 标准插件中,我提供了通过 PayPal 付款后处理购买所需的所有必要信息。我尝试提供“shipping_method”来填写“运输详细信息”字段,但我们收到的电子邮件报告没有任何变化。
...
//create query parameters
return new Dictionary<string, string>
{
//PayPal ID or an email address associated with your PayPal account
["business"] = _payPalStandardPaymentSettings.BusinessEmail,
//shipping method
["shipping_method"] = shippingMethod,
//the character set and character encoding
["charset"] = "utf-8",
//set return method to "2" (the customer redirected to the return URL by using the POST method, and all payment variables are included)
["rm"] = "2",
["bn"] = PayPalHelper.NopCommercePartnerCode,
["currency_code"] = _currencyService.GetCurrencyById(_currencySettings.PrimaryStoreCurrencyId)?.CurrencyCode,
//order identifier
["invoice"] = postProcessPaymentRequest.Order.CustomOrderNumber,
["custom"] = postProcessPaymentRequest.Order.OrderGuid.ToString(),
//PDT, IPN and cancel URL
["return"] = $"{storeLocation}Plugins/PaymentPayPalStandard/PDTHandler",
["notify_url"] = $"{storeLocation}Plugins/PaymentPayPalStandard/IPNHandler",
["cancel_return"] = $"{storeLocation}Plugins/PaymentPayPalStandard/CancelOrder",
//shipping address, if exists
["no_shipping"] = postProcessPaymentRequest.Order.ShippingStatus == ShippingStatus.ShippingNotRequired ? "1" : "2",
["address_override"] = postProcessPaymentRequest.Order.ShippingStatus == ShippingStatus.ShippingNotRequired ? "0" : "1",
["first_name"] = orderAddress?.FirstName,
["last_name"] = orderAddress?.LastName,
["address1"] = orderAddress?.Address1,
["address2"] = orderAddress?.Address2,
["city"] = orderAddress?.City,
["state"] = orderAddress?.StateProvince?.Abbreviation,
["country"] = orderAddress?.Country?.TwoLetterIsoCode,
["zip"] = orderAddress?.ZipPostalCode,
["email"] = orderAddress?.Email
};
...
如何确保商店经理收到的 PayPal 收据中的“运输详细信息”字段下显示运输方式,例如 UPS 或取货地点名称?
目前,我们正在获取“Air Service”的无用值,如下图所示,这不是我们为 Shipping 提供的值。
(来源:ulsprouts.com)
shipping_details
不是有效的 parameter available with PayPal Standard。在运输细节方面实际上非常有限。
我建议您使用 Instant Payment Notification (IPN) 构建您自己的电子邮件通知。
这将触发 POST 所有交易数据到您服务器上的脚本。您可以接收此数据,并根据需要对其进行处理。在该脚本中,您可以访问所有 IPN data,并且您还可以从您的 nopCommerce 系统中提取您需要的任何数据。有了所有需要的数据,您就可以构建自己的自定义品牌电子邮件通知,并相应地发送它们。
例如,发票 ID 被传递到 PayPal,然后返回到 IPN 数据中。因此,您可以查询您的数据库以提取所有运输详细信息,并以此方式构建您的电子邮件。
当我处理我的购物车时,我将所有需要的信息传递给与购买和用户地址相关的 PayPal。我还允许用户选择通过 UPS 运送购买的商品或从我们的卫星地点之一取货。因此,如果用户选择 UPS,我希望“运输详情”字段在 PayPal 发送给我的商店经理的电子邮件中说明 UPS。但是,如果用户选择提货,我想在“送货详情”字段下显示提货地点名称。
目前,所有购买的送货详细信息字段都显示“空运服务”,这对我们来说没有任何意义或无用,作为我们处理用户购买的一条信息。
在 nopCommerce PayPal 标准插件中,我提供了通过 PayPal 付款后处理购买所需的所有必要信息。我尝试提供“shipping_method”来填写“运输详细信息”字段,但我们收到的电子邮件报告没有任何变化。
...
//create query parameters
return new Dictionary<string, string>
{
//PayPal ID or an email address associated with your PayPal account
["business"] = _payPalStandardPaymentSettings.BusinessEmail,
//shipping method
["shipping_method"] = shippingMethod,
//the character set and character encoding
["charset"] = "utf-8",
//set return method to "2" (the customer redirected to the return URL by using the POST method, and all payment variables are included)
["rm"] = "2",
["bn"] = PayPalHelper.NopCommercePartnerCode,
["currency_code"] = _currencyService.GetCurrencyById(_currencySettings.PrimaryStoreCurrencyId)?.CurrencyCode,
//order identifier
["invoice"] = postProcessPaymentRequest.Order.CustomOrderNumber,
["custom"] = postProcessPaymentRequest.Order.OrderGuid.ToString(),
//PDT, IPN and cancel URL
["return"] = $"{storeLocation}Plugins/PaymentPayPalStandard/PDTHandler",
["notify_url"] = $"{storeLocation}Plugins/PaymentPayPalStandard/IPNHandler",
["cancel_return"] = $"{storeLocation}Plugins/PaymentPayPalStandard/CancelOrder",
//shipping address, if exists
["no_shipping"] = postProcessPaymentRequest.Order.ShippingStatus == ShippingStatus.ShippingNotRequired ? "1" : "2",
["address_override"] = postProcessPaymentRequest.Order.ShippingStatus == ShippingStatus.ShippingNotRequired ? "0" : "1",
["first_name"] = orderAddress?.FirstName,
["last_name"] = orderAddress?.LastName,
["address1"] = orderAddress?.Address1,
["address2"] = orderAddress?.Address2,
["city"] = orderAddress?.City,
["state"] = orderAddress?.StateProvince?.Abbreviation,
["country"] = orderAddress?.Country?.TwoLetterIsoCode,
["zip"] = orderAddress?.ZipPostalCode,
["email"] = orderAddress?.Email
};
...
如何确保商店经理收到的 PayPal 收据中的“运输详细信息”字段下显示运输方式,例如 UPS 或取货地点名称?
目前,我们正在获取“Air Service”的无用值,如下图所示,这不是我们为 Shipping 提供的值。
(来源:ulsprouts.com)
shipping_details
不是有效的 parameter available with PayPal Standard。在运输细节方面实际上非常有限。
我建议您使用 Instant Payment Notification (IPN) 构建您自己的电子邮件通知。
这将触发 POST 所有交易数据到您服务器上的脚本。您可以接收此数据,并根据需要对其进行处理。在该脚本中,您可以访问所有 IPN data,并且您还可以从您的 nopCommerce 系统中提取您需要的任何数据。有了所有需要的数据,您就可以构建自己的自定义品牌电子邮件通知,并相应地发送它们。
例如,发票 ID 被传递到 PayPal,然后返回到 IPN 数据中。因此,您可以查询您的数据库以提取所有运输详细信息,并以此方式构建您的电子邮件。