How to use ActiveMerchant for Paypal website payments standard? - ruby-on-rails

I'm trying to set up a rails app to use Paypal website payments standard. I'd rather have users click a button and submit their info on the Paypal site rather than on my site, but I'd like to use ActiveMerchant for it's test mode and handling of credentials.
All the info I can find on the net describes how to use ActiveMerchant to let users fill in details in a form in your site and use the Paypal API to charge their card. Ryan bates has screen casts where he walks through using the website payments standard method but he doesn't take advantage of ActiveMerchant in his method.
I think I have ActiveMerchant set up in my app correctly:
# config/environments/development.rb
config.after_initialize do
ActiveMerchant::Billing::Base.mode = :test
::GATEWAY = ActiveMerchant::Billing::PaypalGateway.new(
login: 'dgesf_1313616880_biz_api1.gmail.com',
password: '1313616919',
signature: 'AKXgGVsxct8DAOfYpyE73guXzPo1ACa185mHcgzMcYOCJsNYSJ0NflAF'
)
end
But how do I generate a form which will use the information above to POST my details (item price, name etc) to the correct Paypal URL so that they can construct the page which will display item details to the user and allow him to enter his payment information?
Can I use ActiveMerchant to fake Paypal IPN notifications and test my apps handling of them?

ActiveMerchant is a bundle of payment gateway APIs from Shopfy and the PayPal library in there doesn't seem to be updated, line item fields are not with the APIs as per HERE, good though for payment processing only.
If you'd need a comprehensive integration of the PayPal experience, refer to the DEMO Site and obtain the Express Checkout API codes, that will better fit your need of itemization & customization on PayPal checkout pages.
IPN simulator to test your script with mock call-back messages, that's right from #SgtPooki in the comments

Related

Peer to peer payments using PayPal gem

I plan on using the PayPal gem in my Rails application, but after reading the docs and watching the Railscast on it, I am still uncertain if the gem allows users to send money to one another.
Is there a particular part of the PayPal docs I should have a look at? I read into the PayPal Adaptive payments but that still seems like it is for the merchant to pay several people rather than for users to pay each other.
You were looking at the REST API gem which has not yet included the P2P/platform feature (in the up-to-date release).
Adaptive Payments would work in your case to allow P2P payments on your platform, where you're supposed to be the API caller, and transactions are made from sender to reciever(you identified in the 'PAY' API call) on your platform.
See more scenario descriptions HERE
And you should look for the classic SDKs which Adaptive Payments are included
SDK - Github repo for Adaptive Payments gem

Credit card payments via PayPal REST API without being PCI-compliant

Can't understand which PayPal API to use.
I have Rails app and I'd like to accept credit card recurring payments via PayPal. At first I was thinking to use Express Checkout API that supports recurring billing and can work even if a user doesn't have PayPal account. But then I saw that their official ruby gem merchant-sdk-ruby https://github.com/paypal/merchant-sdk-ruby will be deprecated:
This Classic SDK is not actively supported and will be deprecated in
the future. For full support on new integrations, please use the Ruby
Rest SDK
So I don't want to use something that will be deprecated soon. But I can't understand whether I can use REST API to accept credit cards without being PCI-compliant.
I'd like to redirect user to PayPal where he could enter his credit card info and return back to my site like in Express Checkout, but I see only examples where credit card info is collected on my site and passed to PayPal via API that implies more security headache on my site.
UPD: I found some information regarding this question in Accept a PayPal payment section of REST API documentation that is a bit odd because I expected to find it in Accept credit card payments section. They say:
Important: To receive Guest Checkout payments, which allow credit cards, ensure that PayPal Account Optional is enabled on your account
settings. For example, here is the path for US accounts:
Profile > My selling tools > Website preferences > PayPal Account Optional
But I'm still not sure whether it will work in my case. Now I have the following question:
Can I use Guest Checkout feature to accept recurring payments?
Can I test Guest Checkout in Sandbox? And if I can what credit card number to use?
Can I show by default form for entering credit card info when user gets to the PayPal site rather than for entering PayPal credentials?
Ughh... why it is so complicated?
There are couple of samples in PHP code, that could help you understand recurring payment options in REST API.
https://github.com/paypal/PayPal-PHP-SDK/tree/master/sample/billing
Or you could follow up the docs on : https://developer.paypal.com/webapps/developer/docs/api/#billing-plans-and-agreements
I will look into this specifically and get back to you
For trying it out on sandbox, you can create an account here at https://developer.paypal.com/webapps/developer/applications/myapps You need to create an app, and it would generate a valid credit card for you.
This may be very unlikely to do, but I can ask the internal team if they know of any such option.
Railscast #289 is on this. It requires that you sign up for the pro version. Looks pretty involved but he walks you through it.

Ruby on Rails and Paypal outside US

I'm using Rails 3.2.13 and I need to integrate with a payment gateway (preferably Paypal).
I've seen the railscasts of Ryan using ActiveMerchant, but I can't get it to work (I'm located in Greece), the error says that the merchant is not available in my country.
I can't actually get API credentials for Greece as shown
Is there a way (activemerchant or not) that I can integrate my Ruby on Rails app with Paypal from Greece, in order to accept payments?
Thanks
There are a few railscasts about PayPal as well. Ryan uses the paypal-recurring gem which I've used successfully with an Australian account.
I think you need a Premier or Business account to use the PayPal API and IPNs.
While you're working on the payment processing you'll want to sign up for a PayPal sandbox account so that you know everything is working.
The code required is listed in the gem I linked to, so I'm not going to copy paste it here.
In order to request a single payment I think you can use the request_payment method and skip the create_recurring_profile method. Also, you should double check that the PayPal page users get taken to doesn't say anything about signing up for a subscription.
PayPals Merchant API works only on the countries listed above.
here you can find paypal integration from scratch without gem
http://blog.joshsoftware.com/2013/01/08/paypal-payflow-setup-in-rails/

API differences between Paypal Express Checkout and Website Payment Standard

I'm trying to understand the API differences between Paypal's Express Checkout and Website Payment Standard. I know the user-facing differences (Express Checkout forces you to have a Paypal account, while Website Payment Standard also processes credit cards), but I don't know the differences between how you can interface with them programmatically, specifically from a Rails app. Active Merchant says that it supports Express Checkout but doesn't mention Website Payment Standard. For recurring payments, I found this gem, but it only mentions Express Checkout. How does it function (if at all) with Website Payment Standard?
I realize Paypal has multiple APIs, and that while Active Merchant communicates via Paypal's SOAP endpoints, you can also communicate via their URL-based API. I'm just getting confused because there is such an overload of documentation that it's difficult to understand what works with what.
EDIT - To clarify, what I mean by accepting credit cards is not forcing the user to have a Paypal account - having Paypal function solely as a credit card gateway (like AuthNet, for example). I know that credit cards can be tied to your Paypal account, and this is not what I am talking about.
Thanks!
Rather than edit my previously edited answer, I'm going to try again.
Express Checkout was made to sit next to your existing payment solution as a "Pay with Paypal" option. It has a more full API, and only requires your customers to leave your site to enter their payment information. There is a more detailed writeup here
For clarification, YES, both Paypal's Express Checkout and Website Payment Standard allow you to accept payments from "Guest Accounts" (Customers without paypal accounts.)
I agree that the documentation is sometimes confusing. Since you mention Rails, here is how to enable "Guest Accounts" in Express Checkout with Active Merchant.
I believe express checkout is only available for business acccounts (not personal). If you have a business account, you will find a setting in your paypal profile - Profile>My selling tools>Selling Online>Website preferences Scroll down to PayPal Account Optional and select the On radio button.
Edit: Apparently this option can be found under Profile>Website Payment Preferences>Paypal Account Optional
Then using Active Merchant, call paypal with the allow_guest_checkout (This code is based on the railscast on express checkout episode)
response = EXPRESS_GATEWAY.setup_purchase(current_cart.build_order.price_in_cents,
:ip => request.remote_ip,
:return_url => new_order_url,
:cancel_return_url => products_url,
:allow_guest_checkout => true
)
Hope this helps.
Both Website Payment Standard (WPS) & Express Checkout WILL accept credit cards. Express Checkout has more features (e.g. a return POST) and now both allow credit card usage directly, so the differences are smaller.
There is a setting in your paypal profile, probably under Profile=>My selling preferences=>Selling Online section that has the return and custom landing page options.
For a sole gateway function, you need to have Website Payments Pro and/or other form of solution that allows you to do a direct POST, which might include other hurdles like PCI compliance etc.
As for activemerchant, check out the Railscast series on paypal (specifically express checkout)
The videos are a bit old, but I set up a payment solution using activemerchant and paypal express based off those videos just last year. Should work for you

Active merchant and Paypal API for recurring payment

I have few questions on paypal's recurring payments, I went trough the paypal documentation to find some answers but, it didn't help me much.
Here are the stuffs that I need to know, hope someone can help me on these.
I'm using paypal's standard payment account. So far I managed to create recurring payments with paypal by posting NVP's to paypal from merchant website to paypal.
Now I need to show recurring payment profiles on merchant web site. So that customers can cancel, modify recurring payments from merchant website without redirecting to paypal.Is this possible?
Think I should use paypal's SOAP API for this as I can't get the job done with NVP API. So I installed active merchant as described in this post. But I always get an error
This transaction is invalid. Please
return to the recipient's website to
complete your transaction using their
regular checkout flow.
from paypal and it never send me the token back.
Also I got this on my log
Security header is not
valid
Is it because I use sandbox API credentials or is it because I can't use paypal's standard account with SOAP API?
Usually the "security header is not valid" response comes from using sandbox credentials in the live environment or vice-versa. AM will use the sandbox when your Rails app is in development mode, so be sure you are using the right set of credentials.
When I was integrating PayPal's recurring payment profiles into the SaaS Rails Kit (using ActiveMerchant) I ended up just canceling a user's current profile and creating a new one when they wanted to change their subscription.

Resources