GetExpressCheckoutDetails does not contain payer information (email, payer id, etc)

GVAlex
Contributor
Contributor

Hello
When I do my ExpressCheckout payment, I make GetExpressCheckoutDetails request to receive user's details first.
But sometimes GetExpressCheckoutDetails response does not contain member's info at all - there are no email, payer id, address, names. 

Does anybody have ideas how to explain and possibly fix that?

Thanks!

Login to Me Too
1 ACCEPTED SOLUTION

Accepted Solutions
Solved

angelleye
Advisor
Advisor
It looks like the GECD request is happening without the user having actually signed in to PayPal and clicked the button to continue back to your site. We see PaymentActionNotInitiated, and that's the only way I can think that GECD would be returning a response without that info...if you just called SEC and then passed that token into GECD right away without redirecting to PayPal first.

You need to call SEC, redirect to PayPal so the user can login, and then call GECD from your return URL. One way or another that seems to be getting skipped..??

Angell EYE - www.angelleye.com
PayPal Partner and Certified Developer - Kudos are Greatly Appreciated!

View solution in original post

Login to Me Too
12 REPLIES 12

angelleye
Advisor
Advisor
You would need to provide an example of one of these responses where this information was missing. What you're saying doesn't make sense, really. You need the Payer ID in order to finalize with DoExpressCheckoutPayment, so it has to be included in GECD.

You could be using "useraction=commit" in which case the PayerID would come back in the return URL so that you don't even have to call GECD if you don't want to, but in my experience that wouldn't cause GECD to return empty.

I can't think of any other scenario that could possibly cause that, so again, need to see an example of a raw response where this occurred.

Angell EYE - www.angelleye.com
PayPal Partner and Certified Developer - Kudos are Greatly Appreciated!
Login to Me Too

GVAlex
Contributor
Contributor

Thanks for reply, Angell

Here is an example (I've hidden private info, plus all data is escaped, b/c taken from logs):

1) SetExpressCheckout

Request: Array 

(

    [CANCELURL] => ******************** 

    [RETURNURL] => ********************

    [PAYMENTREQUEST_0_CUSTOM] => ********************  

    [PAYMENTREQUEST_0_AMT] => 77.00

    [PAYMENTREQUEST_0_DESC] => ********************

    [CURRENCYCODE] => USD

    [LANDINGPAGE] => Login

)

Response: Array

(

    [0] => TOKEN=********************

    [1] => TIMESTAMP=2018%2d09%2d11T06%3a19%3a53Z

    [2] => CORRELATIONID=879c2ab88b7e4

    [3] => ACK=Success

    [4] => VERSION=109%2e0

    [5] => BUILD=48666477

2) GetExpressCheckoutDetails

Request: Array

    [TOKEN] => ********************

)

Response: Array

    [0] => TOKEN=********************

    [1] => BILLINGAGREEMENTACCEPTEDSTATUS=0

    [2] => CHECKOUTSTATUS=PaymentActionNotInitiated

    [3] => TIMESTAMP=2018%2d09%2d11T06%3a20%3a19Z

    [4] => CORRELATIONID=39b4b3e292643

    [5] => ACK=Success

    [6] => VERSION=109%2e0

    [7] => BUILD=48666477

    [8] => CURRENCYCODE=USD

    [9] => AMT=77%2e00

    [10] => SHIPPINGAMT=0%2e00

    [11] => HANDLINGAMT=0%2e00

    [12] => TAXAMT=0%2e00

    [13] => CUSTOM=********************

    [14] => DESC=********************

    [15] => INSURANCEAMT=0%2e00

    [16] => SHIPDISCAMT=0%2e00

    [17] => PAYMENTREQUEST_0_CURRENCYCODE=USD

    [18] => PAYMENTREQUEST_0_AMT=77%2e00

    [19] => PAYMENTREQUEST_0_SHIPPINGAMT=0%2e00

    [20] => PAYMENTREQUEST_0_HANDLINGAMT=0%2e00

    [21] => PAYMENTREQUEST_0_TAXAMT=0%2e00

    [22] => PAYMENTREQUEST_0_CUSTOM=********************

    [23] => PAYMENTREQUEST_0_DESC=********************

    [24] => PAYMENTREQUEST_0_INSURANCEAMT=0%2e00

    [25] => PAYMENTREQUEST_0_SHIPDISCAMT=0%2e00

    [26] => PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false

    [27] => PAYMENTREQUEST_0_ADDRESSNORMALIZATIONSTATUS=None

    [28] => PAYMENTREQUESTINFO_0_ERRORCODE=0                                                                                                                                       

)

 

That's all. Usually I have customer's details in last response and I can finish payment.

But there is a client with a response like above. And by the way, several days before the issue starts, he was able to pay - his response was with customer's details too. 

Login to Me Too
Solved

angelleye
Advisor
Advisor
It looks like the GECD request is happening without the user having actually signed in to PayPal and clicked the button to continue back to your site. We see PaymentActionNotInitiated, and that's the only way I can think that GECD would be returning a response without that info...if you just called SEC and then passed that token into GECD right away without redirecting to PayPal first.

You need to call SEC, redirect to PayPal so the user can login, and then call GECD from your return URL. One way or another that seems to be getting skipped..??

Angell EYE - www.angelleye.com
PayPal Partner and Certified Developer - Kudos are Greatly Appreciated!
Login to Me Too

GVAlex
Contributor
Contributor

I guess you are right... 
Of course I redirect a user to PayPal after receiving a token. But I was able to repeat the issue when I clicked "Cancel and return" without logging to PayPal account. Then my code made a GetExpressCheckoutDetails request anyway, and that's was a problem.

Thank you much for your help!

Login to Me Too

angelleye
Advisor
Advisor
Yup, that'll do it. Best to make sure you aren't calling GECD when the cancel link is clicked. Should use separate URLs for cancel and return URL, or at least separate logic for each type within the URL you're using.

Glad you got it figured out!
Angell EYE - www.angelleye.com
PayPal Partner and Certified Developer - Kudos are Greatly Appreciated!
Login to Me Too

vramana
Contributor
Contributor

Hi,

 

We have received an order where GetExpressCheckoutDetails service doesn't return any of this attributes , PayerID, Paylerstatus, Email, Phone & Billing information fields (Name, City, State etc). However we got the shipping information. Wonder how this scenario will occur, since the customer logged in we got the shipping information. 

 

We are calling SEC first then redirect to PayPal so the user can login, then calling GECD.

 

Any help would be really appreciated.

Login to Me Too

angelleye
Advisor
Advisor
Would need you to provide an example of the SEC request/response, and the GECD request/response.

Angell EYE - www.angelleye.com
PayPal Partner and Certified Developer - Kudos are Greatly Appreciated!
Login to Me Too

vramana
Contributor
Contributor

Hi,

 

Sorry for the delay in response. Here is the requested data.

 

SetExpresscheckout:

Request:

RETURNURL=************
PAYMENTREQUEST_0_CURRENCYCODE=USD
BRANDNAME=******
LANDINGPAGE=Login
L_PAYMENTREQUEST_0_NAME0=**************
L_PAYMENTREQUEST_0_NUMBER0=*******
SIGNATURE=*****
SOLUTIONTYPE=Sole
CANCELURL=**************
PAYMENTREQUEST_0_TAXAMT=0
PWD=*****
L_PAYMENTREQUEST_0_AMT0=29.95
REQBILLINGADDRESS=1
PAYMENTREQUEST_0_PAYMENTACTION=Sale
BILLINGAGREEMENTDESCRIPTION=Thank you for choosing *******
PAYMENTREQUEST_0_SHIPDISCAMT=0
L_PAYMENTREQUEST_0_QTY0=1
REQCONFIRMSHIPPING=0
USER=**************
PAYMENTREQUEST_0_SHIPPINGAMT=0
NOSHIPPING=0
PAYMENTTYPE=Any
BILLINGTYPE=MerchantInitiatedBillingSingleAgreement
ADDROVERRIDE=0
PAYMENTREQUEST_0_AMT=29.95
VERSION=121.0
METHOD=SetExpressCheckout
PAYMENTREQUEST_0_ITEMAMT=29.95

 

Response:

TOKEN=**************
TIMESTAMP=************
CORRELATIONID=**********
ACK=Success
VERSION=121.0
BUILD=54268142

 

GetExpresscheckoutDetails

[] Request:

VERSION=121.0
METHOD=GetExpressCheckoutDetails
USER=***********
PWD=*****
TOKEN=************
SIGNATURE=*****
CURRENCYCODE=USD

[]

Response:

TOKEN=****************
BILLINGAGREEMENTACCEPTEDSTATUS=1
CHECKOUTSTATUS=PaymentActionNotInitiated
TIMESTAMP=*************
CORRELATIONID=**********
ACK=Success
VERSION=121.0
BUILD=54213174
SHIPTONAME=**********
SHIPTOSTREET=**********
SHIPTOCITY=*******
SHIPTOSTATE=****
SHIPTOZIP=****
SHIPTOCOUNTRYCODE=US
SHIPTOCOUNTRYNAME=*********
CURRENCYCODE=USD
AMT=29.95
ITEMAMT=29.95
SHIPPINGAMT=0.00
HANDLINGAMT=0.00
TAXAMT=0.00
INSURANCEAMT=0.00
SHIPDISCAMT=0.00
INSURANCEOPTIONOFFERED=false
L_NAME0=***********
L_NUMBER0=******
L_QTY0=1
L_TAXAMT0=0.00
L_AMT0=29.95
PAYMENTREQUEST_0_CURRENCYCODE=USD
PAYMENTREQUEST_0_AMT=29.95
PAYMENTREQUEST_0_ITEMAMT=29.95
PAYMENTREQUEST_0_SHIPPINGAMT=0.00
PAYMENTREQUEST_0_HANDLINGAMT=0.00
PAYMENTREQUEST_0_TAXAMT=0.00
PAYMENTREQUEST_0_INSURANCEAMT=0.00
PAYMENTREQUEST_0_SHIPDISCAMT=0.00
PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID=*************
PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED=false
PAYMENTREQUEST_0_SHIPTONAME=*********
PAYMENTREQUEST_0_SHIPTOSTREET=***********
PAYMENTREQUEST_0_SHIPTOCITY=******
PAYMENTREQUEST_0_SHIPTOSTATE=*****
PAYMENTREQUEST_0_SHIPTOZIP=*****
PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=US
PAYMENTREQUEST_0_SHIPTOCOUNTRYNAME=******
PAYMENTREQUEST_0_ADDRESSSTATUS=Confirmed
L_PAYMENTREQUEST_0_NAME0=***********
L_PAYMENTREQUEST_0_NUMBER0=*****
L_PAYMENTREQUEST_0_QTY0=1
L_PAYMENTREQUEST_0_TAXAMT0=0.00
L_PAYMENTREQUEST_0_AMT0=29.95
PAYMENTREQUESTINFO_0_ERRORCODE=0

 

FYI - We received another paypal order w/o billing & shipping information

Login to Me Too

angelleye
Advisor
Advisor

So you aren't able to make the final DECP call at this point since you don't have the Payer ID?

 

 

Angell EYE - www.angelleye.com
PayPal Partner and Certified Developer - Kudos are Greatly Appreciated!
Login to Me Too

Haven't Found your Answer?

It happens. Hit the "Login to Ask the community" button to create a question for the PayPal community.