I am using PayPal ExpressCheckout SOAP API.
I found that when I passed shipping address to PayPal as
Street1="XXX actual address masked XXX"
CityName="Las Vegas"
StateOrProvince="Nevada"
PostalCode="89121"
Country=CountryCodeType.US
AddressStatus=AddressStatusCodeType.Confirmed
AddressStatusSpecified = true
CountrySpecified = true
PayPal returned the error "Error in payment details. A match of the Shipping Address City, State, and Postal Code failed."
However it can pass through when
StateOrProvince="NV"
Is it true that PayPal must accept US State in short form only? Is there any way that it can accept both long and short forms?
Regards
Edwin
No, PayPal only accepts the 2-character abbreviation for US state names.
If you leave the same name in both fields State and City, this error also occurs.
I get this problem using PayPal Express checkout at Shopify, and solve simply typing New York City in the City field, instead just New York (the same as the State).
I hope it helps.
Related
I'm testing a PayPal integration on the sandbox using cmd=_express-checkout
(https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&useraction=commit&=token=..)
The store I'm working on calcs shipping costs from delivery address before initialising the PayPal transaction, so we need to display the shipping address as entered on our client's site and not the default address held by PayPal for the buyer.
I've tried sending address_override=1 along with the address parameters specified here (https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/) but the [Ship To] displayed is still that of the test account default address.
address_override=1
useraction=commit
token=XXXX
address1=XXXX
city=XXXX
state=CA
country=US
zip=XXXXX
first_name=XXX
last_name=XXX
Am I missing something obvious or should I be doing it differently?
Thanks.
Looks like you have set NOSHIPPING=0.
Please change your request and set NOSHIPPING=2
NOSHIPPING
Determines whether PayPal displays shipping address fields on the PayPal pages. For digital goods, this field is required, and you must set it to 1. Value is:
0 — PayPal displays the shipping address on the PayPal pages.
1 — PayPal does not display shipping address fields and removes shipping information from the transaction.
2 — If you do not pass the shipping address, PayPal obtains it from the buyer's account profile.
Another one thing is for Express checkout integration you need to refer the documentation in here:
https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/
The link that you have provided earlier is for paypal payment standard integration.
This will requires us to pull the log.
Kindly create an MTS ticket at our Technical Portal (https://www.paypal-techsupport.com/) and provide the EC token for further checking.
My PayPal send box account is registered with UK country. But when i tried to enter the US country address as shipment address. At that time PayPal show Shipping Address Error.
Here is screen
How can i resolve this Error?
Just remove shipping address detail request parameters being sent to paypal and set NO_SHIPPING=1 in request parameters.
So neither PayPal will look for shipping detail in request nor it would display shipping address fill up form to user.
let me know if you still face any issue.
Thanks
I would like to get User billing information from PayPal so that I can compare the billing information the user would have inputted in my site with those which the user has in PayPal.
I did try to access this information using the response which PayPal gives using
getECResponse.GetExpressCheckoutDetailsResponseDetails.PayerInfo.Address.Street1
but these are all null.
Is this possible? I am using Express checkout and these are digital goods so the user would not be inputting any shipping details himself.
Thanks
GetExpressCheckoutDetails returns Billing information if you had passed REQBILLINGADDRESS = 1 in SetExpressCheckout. Before doing this, you will need to get billing address enabled by contacting PayPal customer/Business Support.
A sample GETEC response :
TOKEN=EC-6CW49061US796703X
BILLINGAGREEMENTACCEPTEDSTATUS=0
CHECKOUTSTATUS=PaymentActionNotInitiated
TIMESTAMP=2014-11-06T09:29:59Z
CORRELATIONID=ac2e59af86d9c
ACK=Success
VERSION=109.0
BUILD=13630372
EMAIL=vimalbuyer#gmail.com
PAYERID=ZK5AUW8MWY9CW
PAYERSTATUS=verified
FIRSTNAME=vimalbuyer
LASTNAME=ravichandran
COUNTRYCODE=US
SHIPTONAME=J Smith
SHIPTOSTREET=1 Main St
SHIPTOCITY=San Jose
SHIPTOSTATE=CA
SHIPTOZIP=95131
SHIPTOCOUNTRYCODE=US
SHIPTOCOUNTRYNAME=United States
BILLINGNAME=vimalbuyer ravichandran //Billing information starts
STREET=1 Main St
CITY=San Jose
STATE=CA
ZIP=95131
COUNTRY=US
COUNTRYNAME=United States
ADDRESSID=PayPal
ADDRESSSTATUS=Confirmed
CURRENCYCODE=USD
AMT=0.01
SHIPPINGAMT=0.00
HANDLINGAMT=0.00
TAXAMT=0.00
INSURANCEAMT=0.00
SHIPDISCAMT=0.00
PAYMENTREQUEST_0_CURRENCYCODE=USD
PAYMENTREQUEST_0_AMT=0.01
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_INSURANCEOPTIONOFFERED=false
PAYMENTREQUEST_0_SHIPTONAME=J Smith
PAYMENTREQUEST_0_SHIPTOSTREET=1 Main St
PAYMENTREQUEST_0_SHIPTOCITY=San Jose
PAYMENTREQUEST_0_SHIPTOSTATE=CA
PAYMENTREQUEST_0_SHIPTOZIP=95131
PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=US
PAYMENTREQUEST_0_SHIPTOCOUNTRYNAME=United States
PAYMENTREQUEST_0_ADDRESSSTATUS=Confirmed
PAYMENTREQUEST_0_ADDRESSNORMALIZATIONSTATUS=None
PAYMENTREQUESTINFO_0_ERRORCODE=0
The GetExpressCheckoutDetails API call is only going to return the shipping information, and you are correct that if the buyer is going through the flow for digital goods there are not going to be any shipping details. There are a few different ways to get some of the information that you are wanting.
You could use the AddressVerify API. This would need to be enabled on your account by PayPal. The AddressVerify API operation confirms whether a postal address and postal code match those of the specified PayPal account holder.
You could use PayPal Identity (formerly PayPal Access), to get some of the user's information back. The basic account information that will be returned is:
Name (First, Last or Full)
Email Address
Address (Street Address, City, State, Postal Code, Country)
Phone Number
Another option, is you can contact PayPal and request a feature to be enabled to return the billing address for Express Checkout. This is feature that does need to be approved before it can be turned on as well.
Is it possible to get the country using their email? Or validate user's country.
In our system, the user submits their email and country. We need to check whether the country is correctly specified.
Sorry for my English.
Thanks.
you have to force users to login paypal (you don't want to allow transactions by who doesn't have a paypal account)
See SetExpressCheckout SOLUTIONTYPE = Mark
after the user completes the expresscheckout, in order to confirm it, you should check if its street address is confirmed and if it is of the country you require:
GetExpressCheckoutDetails
PAYERSTATUS must be "verified"
COUNTRYCODE must be the country you require
if these two values are ok, you can confirm the payment with "DoExpressCheckoutPayment"
since you are new, if you like my answer don't forget to set it as "accepted"
An alternative solution to verify customer's PP account country with out initiaing a transaction, is to implement "Login with PayPal" with your own customer login/register managenment.
It's based on the PayPal REST identity APIs, and will be much easier for you to get & manage customer account info (with user consent).
Here's the developemnt resource for your reference: https://developer.paypal.com/docs/integration/direct/identity/
I have set up a website with integration with paypal's Payment Standard. This includes address_override=1 to send to paypal a fixed the delivery address.
A "helpful" feature of paypal is that it pre-populates the uploaded address into the billing address fields for an unregistered user.
If the user then fills in their credit card details their card will obviously be declined as the billing address must match their card. All works fine if the user realises the error and replaces my uploaded address with their real billing address, but the client im working for is nervous that users will not realise to do this... I have to agree somewhat.
Does anyone know of a solution to this? some variable I'm missing in the standard variables docu's from Paypal which says:
"thiis is an address override, but only uise it for delivery adress, never billing address"
a year too late for a reply but I had the same problem.
I cannot separate the billing and shipping address. In my case, users can buy items as gift so the billing and shipping address will be different...and just today, I recently found out PayPal has no way to separate both. Oh boy.
In the script that commnunicates with PayPal, there will be an "address_override" => "1". Simply, change this to "address_override" => "0".