【问题标题】:PayPal Merchant SDK GetExpressCheckoutDetailsResponseDetails not returning buyer's email or phone numberPayPal Merchant SDK GetExpressCheckoutDetailsResponseDetails 未返回买家的电子邮件或电话号码
【发布时间】:2015-10-29 15:57:36
【问题描述】:

我正在使用适用于 .NET 的 PayPal Merchant SDK (v 2.15.117) 并尝试从 GetExpressCheckoutDetailsRequestType.GetExpressCheckoutDetailsResponseDetails 调用中检索送货地址信息、客户的电子邮件地址和电话号码。送货地址按预期填充,但对于我来说,我无法弄清楚如何获取买家的电子邮件或电话号码。至少我们必须有电子邮件来沟通订单(即跟踪电子邮件)。

我看到了一个 BuyerMarketingEmail 属性,但它为空,我认为这是买家可以选择提供的可选电子邮件。对于电话,我看到 PayerInfo.ContactPhone 属性,但它也是空的(我不太担心拥有它,但它会很好地解决客户服务问题或提供给 FedEx 等地面托运人)。

如果这很重要,我正在使用 PayPal 沙盒。

我错过了什么?

var getExpressCheckoutDetails = new GetExpressCheckoutDetailsReq();

var getExpressCheckoutDetailsRequest = new GetExpressCheckoutDetailsRequestType(token);

getExpressCheckoutDetails.GetExpressCheckoutDetailsRequest = getExpressCheckoutDetailsRequest;

var service = new PayPalAPIInterfaceServiceService();

paypalResponse = service.GetExpressCheckoutDetails(getExpressCheckoutDetails);

if (paypalResponse != null)
{
    //Success values check for a matching PayerID to validate the token response
    if (paypalResponse.Ack.ToString().Trim().ToUpper().Equals("SUCCESS") &&
        PayerID == paypalResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.PayerID)
    {
        checkout.ShippingInfo.ShippingName = paypalResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Name;
        checkout.ShippingInfo.ShippingAddress1 = paypalResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Street1;
        checkout.ShippingInfo.ShippingAddress2 = paypalResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Street2;
        checkout.ShippingInfo.ShippingCity = paypalResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.CityName;
        checkout.ShippingInfo.ShippingState = paypalResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.StateOrProvince;
        checkout.ShippingInfo.ShippingZip = paypalResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.PostalCode;
        checkout.ShippingInfo.ShippingCountry = paypalResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Country.ToString();

        //these next two are always null
        checkout.BillingInfo.Email = paypalResponse.GetExpressCheckoutDetailsResponseDetails.BuyerMarketingEmail;
        checkout.ShippingInfo.PhoneNumber = paypalResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.ContactPhone;
    }   
}

【问题讨论】:

  • 在翻阅 PayPal 支持文章时,我确实遇到了一个 VB.net 示例,该示例展示了如何获取买家的电子邮件地址。在上面的示例中,它看起来像:checkout.BillingInfo.Email = paypalResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Payer; 考虑到买家的用户名是他们的电子邮件地址,这是有道理的。不过,还没有得到电话号码的运气。 ContactPhone 属性似乎很明显 - 也许这是一个沙盒问题?

标签: paypal


【解决方案1】:

我想我会发布一个答案来结束这个 -

正如我在对原始问题的评论中所述,买家的电子邮件地址是PayerInfo.Payer

另外,突然/神奇地,PayerInfo.ContactPhone 开始返回电话号码而不是 null。我只能将其归结为沙盒环境或沙盒用户帐户中的某些内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 2022-06-16
    • 2012-01-24
    • 1970-01-01
    • 2014-01-23
    相关资源
    最近更新 更多