【问题标题】:How do I pass the correct details into the PayPal email “Shipping details” field using Payments PayPalStandard Plugin?如何使用 Payments PayPalStandard 插件将正确的详细信息传递到 PayPal 电子邮件“运输详细信息”字段?
【发布时间】:2019-11-22 10:43:57
【问题描述】:

当我处理我的购物车时,我将所有需要的信息传递给与购买和用户地址相关的 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 或取货地点名称?

目前,我们得到了一个无用的“空运服务”值,如下图所示,这不是我们为航运提供的。

【问题讨论】:

    标签: paypal nopcommerce


    【解决方案1】:

    shipping_details 不是有效的parameter available with PayPal Standard。在运输细节方面实际上非常有限。

    我建议您使用Instant Payment Notification (IPN) 构建您自己的电子邮件通知。

    这将触发所有交易数据的 POST 到您位于服务器上的脚本。您可以接收此数据,并根据需要对其进行处理。在该脚本中,您将可以访问所有 IPN data,并且您还可以从 nopCommerce 系统中提取所需的任何数据。有了所需的所有数据,您就可以构建自己的自定义品牌电子邮件通知,并相应地发送它们。

    例如,发票 ID 被传递给 PayPal,然后它会在 IPN 数据中返回。因此,您可以查询您的数据库以提取所有运输详细信息,并以此方式构建您的电子邮件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-10
      • 2017-10-28
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 2020-09-14
      • 2014-04-25
      相关资源
      最近更新 更多