PayPal Merchant SDK GetExpressCheckOutDetails响应的详细信息不返回买方';s的电子邮件或电话号码

PayPal Merchant SDK GetExpressCheckOutDetails响应的详细信息不返回买方';s的电子邮件或电话号码,paypal,Paypal,我正在使用PayPal Merchant SDK for.NET(v2.15.117),并试图从GetExpressCheckoutDetailsRequestType.GetExpressCheckoutDetailsResponseDetails调用中检索配送地址信息、客户电子邮件地址和电话号码。发货地址按预期填充,但就我而言,我不知道如何获取买家的电子邮件或电话号码。至少我们必须有电子邮件来沟通订单(即跟踪电子邮件) 我看到一个BuyerMarketingEmail属性,但它是空的,我觉得

我正在使用PayPal Merchant SDK for.NET(v2.15.117),并试图从GetExpressCheckoutDetailsRequestType.GetExpressCheckoutDetailsResponseDetails调用中检索配送地址信息、客户电子邮件地址和电话号码。发货地址按预期填充,但就我而言,我不知道如何获取买家的电子邮件或电话号码。至少我们必须有电子邮件来沟通订单(即跟踪电子邮件)

我看到一个BuyerMarketingEmail属性,但它是空的,我觉得这是一个可选的电子邮件,买家可以选择提供。对于phone,我看到PayerInfo.ContactPhone属性,但该属性也是空的(我不太关心是否有该属性,但这对于客户服务问题或向联邦快递等地面托运人提供该属性会很好)

我正在使用贝宝沙箱,如果这很重要的话

我错过了什么

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;
    }   
}

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

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


而且,突然/神奇地,
PayerInfo.ContactPhone
开始返回电话号码,而不是null。我只能将其归因于沙盒环境或我的沙盒用户帐户。

在翻阅PayPal支持文章时,我确实遇到了一个VB.net示例,该示例演示了如何获取买家的电子邮件地址。在上面的示例中,它看起来像:
checkout.BillingInfo.Email=paypalResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Payer是有意义的。不过还没找到电话号码。ContactPhone属性似乎很明显-这可能是一个沙箱问题?