Pre-populate form fields in Paypal Express Checkout - paypal

I am using Paypal Express Checkout api-version 109. Unlike in paypal standard, there is no option in to pre-populate name, address, email, phonenumber, zip , country etc. on the landing page of Paypal. I went through the API page of SETEXPRESSCHECKOUT, but didn't find any relevent parameters. Are there any parameters to do that as I might have missed ?

If people are paying with a PayPal account then their details are already available in the PayPal account. No need to pass anything.
If you do want to pass details to the checkout you can include a shipping address in the SetExpressCheckout request and then also include the ADDROVERRIDE parameter set to true. That will make it so that the system uses the address you send and does not allow the user to change it once they're signed in.
If you're talking about pre-populating the Guest Checkout (credit card) form that is displayed on the Express Checkout page, though, you cannot pass data to that. It cannot be pre-filled.

Related

Create a payment link given an email

Say I have a given email that is not mine (a customer) xx#gmail.com.
Say I would like to let another unknown customer pay money to this email. (= marketplace)
So in my website anyone who click a button is able to pay using Paypal to this given email. I have no relationship with any of them.
Is it possible with the API ? if so where is the reference to it ?
Is there any generic structure to create a link to request money based on a given email xx#gmail.com ?
In Adaptive Payment, Paypal says :
Adaptive Payments is now a limited release product
Which means ?
This can be done with the Express Checkout APIs, but based on what you're saying I would recommend you just use PayPal Standard.
This URL can be used as a template to build a payment request. Just replace the email in the business parameter with the email you want the payment to go to. Then anybody can use that URL to send a payment to that person.
https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&bn=AngellEYE_PHPClass&business=email#gmail.com&amount=25.00&currency_code=USD
So you can see this specifies the email address for where the payment should go, and it also includes the amount and currency code.
You can add any parameters you want from the PayPal Standard Variables Reference.

PayPal Address_Override not working

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.

How can I limit the set of fields Paypal shows on express checkout?

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.

Paypal: technique to obtain buyer's country for establishing postage prices without introducing extra steps

This is probably a stupid question, I think I'm having a mental block.
I want to use Paypal's express checkout for buyers to make purchases with as few steps as possible (also using Paypal's optional account feature). The problem is: for me to direct the user to paypal, I will need to have calculated shipping costs, which depends on the country they're in. Obviously I cannot know this unless I have been told one way or another. What are common solutions to this problem?
Ideas:
Use their IP address. Not reliable - various types of proxies, VPNs, anonymizers etc.
Have the user select their country from a drop-down box before I redirect them to paypal
Force them to log in using Paypal's Identity service before calculating postage
Use 1. or 2. and once payment is received, if country is different to expected,
Refund buyer the difference in postage cost or request an additional payment. (Hardly ideal)
Similar to 4., instead of "Sale Payment Action for Express Checkout" Use 1. or 2. in conjunction with one of Paypal's delayed express checkout payment methods and if necessary reduce or increase the amount charged:
Authorization Payment Action for Express Checkout
Order Payment Action for Express Checkout
I'd like to know what solutions other developers have chosen - maybe I've missed an idea. As a consumer, I cannot remember seeing solutions to this.
The general way people do this is simply to use GetExpressCheckoutDetails to obtain the buyer's shipping address, apply any shipping/tax as necessary, and display a final review page on your site that the user would confirm before calling DoExpressCheckoutPayment.
If you want to eliminate the additional review page (PayPal's and then your own) you can use the Instant Update API.
In this case you would include an additional parameter on the URL when you redirect to PayPal (useraction=commit) and this will change the button on the PayPal review page to say Pay instead of Continue.
Also in your SEC request you'll include the CALLBACK parameter and include a URL to your callback listener. PayPal's review page will POST the buyer's shipping address to this callback URL so that you can receive the data, calculate shipping and tax accordingly, and send a response of those options back to the PayPal review page. This will populate the PayPal review page's drop down menu for the shipping option and the user can choose accordingly.
This method allows you to utilize the PayPal review page entirely and finalize the payment there so that the only thing the user sees once they're returned to your site (after you call DECP) is a final thank you / receipt page.

PayPal API - How to keep the payment process on my website?

I run a small marketplace with multiple sellers where buyers can buy items and pay with PayPal. The problem is, when someone makes a payment, they are then displayed the "Payment Confirmation" on the PayPal website and are given a choice to either return to their PayPal account, or return to the website.
Is there any way to keep the payment flow on my website, except for the payment part? I notice when buying on Etsy for example, the buyer goes to PayPal to make the payment and is then immediately returned to Etsy for the payment confirmation. They never see the PayPal payment confirmation page.
I assume it could be because Etsy and PayPal have a special arrangement that isn't available to other sites? Or am I missing something in the API?
Right now, with the normal PayPal API, this is what buyers see:
NAME, you've just completed your payment.
Your transaction ID for this payment is: XXXXXXXXXXXXXXXXXXXX.
We'll send a confirmation email to your#email.com
Go to PayPal account overview.
Go back to "seller#email.com".
I can't even figure out how to change the "Go back to..." link to my website name in the hidden fields. PayPal just chooses to display the seller's (the person that received the payment) email address.
Is there any way to at least set a website name for them to return to with hidden variables? Keep in mind that I have different sellers, so it's not something I could set inside each seller's PayPal account.
Thank you :)
I assume you are using Express Checkout with Set/Get/Do EC API integration. Please check the below document for experience options available with Express Checkout API.
https://developer.paypal.com/webapps/developer/docs/classic/express-checkout/integration-guide/ECCustomizing/
The 'useraction=commit' in the PayPal payment auth url triigers the 'Buy' button. If you do not send that request paramter then it will show 'continue' button and you can complete rest of the process on your site.
However, if you are using Paypal Payment Standard product then you need to use Express Checkout to accomplish the outcome you are seeking.