I'm integrating PayPal Checkout into our e-commerce platform.
Our existing non-PayPal checkout has a pretty standard 4 step flow:
1. Cart -> 2. Shipping Address -> 3. Shipping Option -> 4. Payment
NOTE: Our checkout flow is very similar to Shopify checkout in case you're familiar with that.
I'm trying to understand where in the checkout flow PayPal Checkout can fit in, in particular how we ensure the customer is able to choose an appropriate shipping option (e.g. next day vs standard vs international etc.) once they've selected their shipping address.
Shopify currently offers PayPal Checkout both on step 1 (Cart) and step 4 (Payment).
Adding PayPal Checkout to step 4 (Payment) seems pretty straight forward because we can use the shipping address captured in step 2 (Shipping Address) and pass shipping_preference: 'SET_PROVIDED_ADDRESS' when creating the PayPal Order, preventing the customer from changing their shipping address in PayPal Checkout -- this is critical as it ensures customers are unable to invalidate their shipping option by, for example, changing from a UK -> US shipping address.
However, if we wanted to add it to step 1 (Cart) or even directly on product pages (which Shopify also offers), I can't see how it would work as there doesn't appear to be a way to offer up shipping options after a customer chooses / changes their shipping address within the PayPal Checkout?
Related
customer pay my products from outside shipping address country, i cannot ship outside the country and only want ship within canada
I have to set paypal checkout only for canada address
This depends on how your PayPal Checkout flow is configured and which PayPal API and/or SDK you are using, but the general answer that applies to almost all PayPal Checkout integrations (except the old HTML payments standard) is that you can get the selected address before capturing or executing the payment. So if it's a non-CA address, simply refuse to do the final API step of capturing the order/payment and display an error.
Is this the real behavior of Paypal. I am using the Paypal REST api (payment api's), and it is working fine and customers can use it. The only problem is when a new customer (one that has not visited paypal.com once) tries to buy our product, paypal seems to require him to create an account.
Here's the procedure:
First time to visit paypal.com (meaning no cookies / not cached or anything).
Customer Buy Product (Our website creates the payment transaction then redirects him to paypal.com)
Customer click Pay with my credit or debit card (He does not want to create a paypal account).
The country set is Philippines (I think paypal detects this so it is initially set to where I am) and I can proceed paying with my credit card
I tried changing the country to somewhere else
Here's comes the problem, on some countries, I am shown a different form, a form for creating a new account in Paypal.
Hope you understand what I am saying. Thanks.
It’s important to remember that guest checkout is not guaranteed for every transaction. PayPal runs a risk check to determine eligibility for guest checkout. There will be times when guest checkout is not available. This is intended. Here are a few things to make sure guest checkout is offered as often as possible.
-Verified PayPal account
-Confirmed email address
-Guest Checkout enabled - To see this, log in, go to Profile and click 'My selling preferences', click on Update next to Website preferences - scroll down the screen and find "PayPal Account Optional" section - you can enable/disable PayPal Account optional here.
-With Express Checkout their cart must pass “SOLUTIONTYPE=Sole”
Unfortunately, there are few parameters which are still incompatible with REST API including SOLUTIONTYPE which works only in Classic API.
If all of these are met and it’s not available then our system has decided to disable the guest checkout option for risk reasons. This is not a permanent decision and it will be available in the future.
I am using the Express Checkout API to accept payments for my online store. The payment flow is as follows:
1) User adds Item to Cart
2) User proceeds to PayPal
3) User enters or selects existing shipping address, confirms, and is redirected to order confirmation step
4) Order Details such as Shipping Address are retrieved from PayPal using GetExpressCheckoutDetails.
5) On the order confirmation step (prior to DoExpressCheckoutPayment), user has the option to change the shipping address returned by PayPal. If user changes the shipping address, I need to recalculate the shipping cost to this new address, and submit the new shipping cost, as well as the new address back to PayPal
6) I am attempting to do this as part of the DoExpressCheckoutPayment payment call, using PAYMENTREQUEST_0_SHIPTONAME etc, but the shipping address within the transaction details does not change. (Likely because these are deprecated) Instead, the address chosen or entered on PayPal remains.
How can I submit a new shipping address to PayPal without having the user re-enter the transaction funnel from the beginning?
The shipping parameters in DECP are not deprecated. The documentation is a little bit misleading. It's the old version of those parameters, prior to when they added the ability to do parallel payments to EC, that are deprecated.
So, for example, SHIPTONAME is deprecated. Instead, you should now use PAYMENTREQUEST_n_SHIPTONAME like you have.
That said, whatever you send in the DECP request should be carried over to PayPal and end up being what is used for the payment's shipping address. In fact, if you don't include an address in DECP it shouldn't end up as part of the payment details in my experience.
If you want to provide a sample of the API requests during a checkout I'll be happy to take a look and see if I can figure out where you're going wrong.
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'm integrating PayPal into my web application. Here I want to make complete checkout process.It has direct payment and express checkout.
In Express checkout we need only PayPal account like
1)Clicking Check out with PayPal
2) Logs into PayPal to authenticate
3)Reviews the transaction on PayPal
4)Confirms the order and pays from your site
5)Receives an order confirmation
In Direct checkout(A generic checkout flow),
1)Checks out from the shopping cart page
2)Provides shipping information
3)Chooses a payment option and provides
4)billing and payment information
5)Reviews the order and pays
6)Receives an order confirmation
This the flow. In Direct checkout when you choose payment option as PayPal(step 3) you need to login and make payment. Any way there is one default shipping address available in PayPal account and also you must give shipping address in step 2.
Now I want to send the complete cart details and shipping address to PayPal?
and I want make the direct checkout(A generic checkout flow) here? Can any one help me to do this?
Use Express Checkout and DoDirectPayment (Website Payments Pro). Express Checkout gives you the redirect-to-PayPal-and-login functionality, whereas DoDirectPayment allows you to take card payments directly on your site.
In addition, you can override the PayPal Profile shipping address of the buyer by specifying ADDROVERRIDE=1 in the SetExpressCheckout API call. Remember you'll need to pass in the appropriate shipping address details information as well.
https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_r_SetExpressCheckout