I have a Magento website with the PayPal express payment option. I'm trying to skip the review page when my costumers pay with PayPal. As was mentioned in a former thread (Magento: easy way to remove "paypal/express/review" step), this can be easily achieved by writing an extension that changes a few line in the controller, and this behavior is actually built into v1.9.
However, these solutions didn't work for me. The built-in option apparently did nothing, and the review page was still there. The workarounds proposed in the former thread caused an infinite loop between the actions "placeOrder" and "review".
After a long time, I have now found out that when the user comes back from PayPal, the system doesn't recognize the shipping method selected in the PayPal checkout screen, and accordingly sends the user back to the review page to select a shipping method.
Has anyone ever encountered that or have any solution in mind? I am using Magento 1.9.1.0, and PayPal express is in sandbox mode.
Related
I am using paypal pro express checkout in magento 1.6 when I try to paypal pro express checkout from cart or product page its redirect to paypal page but there is no shipping option showing in paypal page for select shipping method.
Here is image from product page
Here is paypal page image
From image you can also get more idea
Any one know how to do it ?.
Yes it is correct. Paypal pro express checkout work similar. When User Click on Pay now Button. User will again redirect on Site, On Paypal Express Order Review Page.
Where user will have the option to sleecte applicable shipping method and click on Place Order button to place order finally.
The answer from Pankaj Pareek is absolutely correct. This is the checkout flow on Magento for Paypal Express. Note that your question title is misleading, whether you are using Paypal Payments Pro or Paypal Standard is irrelevant - when the user clicks the button from the cart or product page they are using Paypal Express to check out.
Magento's default Paypal Express checkout flow is dire - it actually takes longer to check out this way than a normal checkout as there's a ludicrous review step. You should note that even though you are using 1.6 it has not improved in the intervening 4.5 years despite them being bought by ebay.
Basically it's a backend config option to pass the shipping methods across.
However there is a bug which means its the id that gets shown in Paypal, not the label. It looks awful in Paypal. I stuck a module to fix it up in this answer;
https://magento.stackexchange.com/questions/6945/paypal-express-shipping-methods/#answer-50290
And other than this small problem the communication on shipping between Paypal and Magento works really well. User updates the address and the shipping options update etc.
You can further improve this flow by removing the review stage altogether in Magento. That is a bit harder, there are modules you can buy that help. It all massively improves conversion rates, it is well worth doing.
I'm in the the process of replacing the Free and Standard paypal button with a Express checkout integration. I believe I've done most of the work but I have 2 outstanding questions.
When using the old button it redirected me to an order summary page where I could still update the quantity of the product I wanted to buy. With Express checkout it seems that this option has dissapeaed. Whilst the quantity field is still there, it's read-only and can therefore not be altered anymore. Can I make it so this field becomes editable again?
When i get redirected to the paypal site after pressing submitting the form is not consistent, I suspect Paypal is in the process of rolling out some updates to this page and is doing some A/B testing to see which layout is performing better but it would be good if someone else could confirm a similiar behaviour and if there's anything that I can do to force a particular layout? I found other posts on this forum but they were posted a while ago hence the recheck.
Thanks
1.Express Checkout, its actually a API call to the PayPal server.
If you want to edit the Quantity, you need to change the value L_PAYMENTREQUEST_n_QTYm using your own logic and send the request to PayPal(quantity is not editable).Doc
2.Actually PayPal has released a new Express Checkout layout.
There are two URL's here:
Old Layout : https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-24P528268C112244W
New Layout:
https://www.paypal.com/checkoutnow/2?token=EC-24P528268C112244W
You can force any layout as you wish.
I discovered that you can force the old layout by including a "force_sa=true" param in your payment request url. Can't find this documented anywhere, but it seems to work consistently. I asked pp tech support about it and got this response:
The new express checkout layout is being gradually rolled out, you may have an option to force the layout with the following redirection url format:
'https://www.sandbox.paypal.com/checkoutnow/2?token=' to force the new checkout layout, it does the same way as force_sa=true
Didn't answer my question, but I guess they acknowledged it's a valid way to force a layout and not be at the mercy of their "rollout".
I just wanted to know if it is possible using paypal REST api that we can disable the shipping information form on paypal site. I am currently working on a site to implement cart checkouts, For fist time, I found paypal saying "We dont allow US merchants to make shippings to countries outside US". So I started saving our shipping data to my own database and left paypal to process shipping amount (which is calculated on my end) only. now, issue is that I want paypal to not to ask for the shipping address at their's end as it would be confusing for a user. Any suggestions regarding this?
I'm not sure you can do that unless you flag all your products as digital (and hope Paypal doesn't notice). That might be a violation of their TOS, however.
Another option is to use Payments Pro and do your own checkout process, where you control what data is collected and passed along (and shipping data is definitely optional).
following up on this question, I now have another problem - how can I delete the cart session if the buyer didn't click the return link after payment?
I only can delete the cart session when the buyer click the return link, but what if they come straight to my shopping site without clicking the return?
This is similar to this question that was raised before by chris. And the answer seems to be,
You'll have to clear the session variables on the return to your site
after successful payment. It's not foolproof - there are possibilities
that the cart still won't be cleared, but this is pretty much the only
way to do it.
But I still wonder if there are any solutions or is this the shortcoming in integrating with paypal that I have to accept? What about other gateways like Authorize.net?
This won't happen with Authorize.Net as none of the payment APIs are dependent on the customer clicking on a link after payment (or doing anything after payment). Their SIM API uses Relay Response after the payment is made and since that page is called from your website you can clear the session with 100% certainty every time. Their Advanced Integration Method (AIM) and Direct Post Method (DPM) have the customer finishing the checkout process on your website so you also have full control over their session.
got a question and I hope this is right place to ask :).. don’t quite understand how payment works in magento.
client goes to checkout and lets say wants to pay as a guest, so provides address etc. and finally gets to payment methods. Then I want clients to pay thru credit card. Already have module installed for gateway (bank?) of my choice. At that point I would expect users to be redirected to 3rd party page (bank hosted) where they giving all the details, only after being returned to my magento site with appropriate message.
In magento however it seems like they need to provide cc numbers and details on magento checkout page. I don’t understand if I (or the payment module I installed) need to transfer then all the credit card details to bank? I would have to have checkout page on ssl connection and static ip right?
The thing is I want to avoid touching CC numbers at any point and would love to have it done by a bank page. I like the idea of magento interface all the way without redirecting to another page though, the only problem is not sure if would be able to set it all up properly.
If anyone could explain to me possible options, what is the common way to do it and how the whole process works that would be very much appreciated.
I did my research and looked all over google and various forums still need someones help though. Please let me know if some parts of my question are not quite clear, will try to better explain if necessary.
Had to develop a payment module for DPS in NZ some time back. How this works is, you go to pay on the site and the payment module php code runs that sends off the details to an acquiring institutions payment website who process the transaction for you with the bank. In my case as I recall it was DPS NZ via some soap calls. The Soap calls contained details such as the total cost, the currency, the merchant number to identify who you are paying. The acquiring institution (DPS in this case) then takes your credit card number and expiry date and do the processing. Then, again via some soap calls back to your own magento website you get redirected back with the error code - success, etc.
DPS use soap I think, but other payment websites may use other protocols to work. The other possibility is that your credit card acquiring page could be hosted on your website and you accept the credit card numbers and do all the processing within magento to the acquirer.
In short, the process is controlled by the payment module itself. If you want to see more detail, have a look at the payment module tutorials that are available and also the comments in the magento forums. You can also look at the paypal module code.
The default architecture that Magento payment modules use involves the customer interfacing with the module and the module talking to your payment gateway behind the scenes.
Basically the customer inputs all his data (CC and all) and hits the payment button at which point certain functions are run in the chosen payment module. What these functions do is entirely up to how the payment gateway works. if the gateway talks via XML they send/receive XML, if it needs SOAP then they use SOAP and so on and so forth. This in fact is the gist of building a new payment module. Open an existing one, check out which functions are called, get rid of the code in there and substitute with your own that will talk to your particular bank/gateway.
Of course some gateways have an alternate way of operating where you send the customer to their pages, he gives them his CC data and he is promptly returned to your site. This way you don't need to worry about handling credit card data, but unfortunately the process of implementing this in Magento is somewhat more involved.
If you need to use a certain gateway then you should first check whether a payment module for it already exists. if not you can download a similar payment module, dissect it and modify it to run your code where appropriate.