I am using virtuemart and paypal. The user will go through the whole checkout process fine, the page redirects to paypal for payment. The user might have a different bill to address than ship to address. If they select a different address in the paypal page it still has the billing address as the ship to address. Any advice on how to clean up this problem?
It shouldn't matter what address they select/enter in Paypal -- if they have selected the shipping address in Virtuemart then that address is what is stored in the Virtuemart Invoice/Purchase order.
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.
Whenever our service initiates an express checkout and redirects the user to PayPal page the user sees the cart on the left and the following on the right:
Note that even the address and the phone number are required while we're an online service and don't need shipping information - once PayPal confirms the payment we'll happily "ship" over the Internet, so all we really need is a PayPal payment confirmation and I guess that requires just a credit card number, expiration date and the CSC.
Yes, I know that users who have already registered with PayPal can switch to "my PayPal account" option but that doesn't help people who don't have a PayPal account and those are forced to see this page with 12 fields.
Wait, that was the form for people who have their "country" identified as the USA. Here's what people tracked to Colombia see:
Even more fields and we only need a payment confirmation.
Is it possible to make PayPal limit the set of fields on that page?
Looks like you can avoid user to enter Billing and Contact information on guest checkout only if you properly transmit REAL shipping/contact data by your own in your SetExpressCheckout call.
&METHOD=SetExpressCheckout
&RETURNURL=https://...
&CANCELURL=https://...
&PAYMENTREQUEST_0_AMT=10.00
&PAYMENTREQUEST_0_PAYMENTACTION=Sale
&PAYMENTREQUEST_0_SHIPTOSTREET=1 Main Street
&PAYMENTREQUEST_0_SHIPTOCITY=San Jose
&PAYMENTREQUEST_0_SHIPTOSTATE=CA
&PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE=US
&PAYMENTREQUEST_0_SHIPTOZIP=95131
&PAYMENTREQUEST_0_EMAIL=jsmith01#example.com
&PAYMENTREQUEST_0_SHIPTOPHONENUM=408-559-5948
If you set random data above with invalid city/state/zip PayPal will display Billing and Contact information inputs.
I'm using secure-hosting as a middleman to process payments from my website which accepts credit card details and has an automatic paypal feature which essentially uses the paypal-api.
It processes payments fine and dandy, however our product isn't supposed to be delivered to the person who purchased it, it is sent to another (or many hundreds of) person(s) whose details are entered on our site by the purchaser.
The problem is that PayPal displays the purchaser's address as the delivery address both when the purchaser is signing into paypal and when they receive an invoice from paypal.
Does anyone know if there is an option to turn off this display of the delivery address/in the email? I've tried adding the no_shipping: '1' and NOSHIPPING=1 field when communicating with paypal but I believe this is to specify that the user doesn't have to supply an address because paypal will have a record of their address.
The ADDROVERRIDE variable determines whether or not the PayPal pages should display the shipping address set by you in this SetExpressCheckout request, not the shipping address on file with PayPal for this buyer. This would allow you to pass in a shipping address that your buyer enters into a form on your website, for example.
I'm using Payflowlink Pro Express Checkout
Flow:
User select items on merchant site.
User clicks buy and fill shipping address.
Server get rates from USPS and FedEx for selected items.
User selects desired postal service with defined rate.
Server calls paypal to setup transaction with selected shipping rate.
User on paypal where he or she able to change shipping address, but shipping rate is already calculated for address what he inputted on merchant site.
I've found a solution of my problem only for classic API (Instant update callback), but not for Payflow Pro Express Checkout
Like a part of solution, user'll be warned about this situation on merchant site, but.. How do I prevent the PP user to change the shipping address or tell me please if it is possible to use instant update callback for Payflow Pro Express Checkout?
Try using the ADDROVERIDE variable with a value of 1. Doing that tells PayPal to use the shipping address you provided and not the address the buyer has set in their PayPal account.
The ADDROVERIDE and the shipping variables are available in the Express Checkout for Payflow Pro guide.
Sorry, I wanted to add this as a comment to the above, but my reputation is < 50
For some reason I couldn't get NOSHIPPING=1 and ADDROVERIDE=1 to prevent paypal asking for the shipping address; It may be due to me not supplying the address to PayPal in the first place.
However, 'no_shipping=1' does prevents PayPal asking the user for the shipping address (for me at least)
I think there may be two different solutions based on certain scenarios, so if one is not working try the other.
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".