Skip to content

adnotam/solidus_paypal_express

 
 

Repository files navigation

Solidus PayPal Express

CircleCI codecov

This is a port of the official [spree_paypal_express][4] extension.

Behind-the-scenes, this extension uses PayPal's Merchant Ruby SDK.

Installation

Add solidus_paypal_express to your Gemfile:

  gem 'solidus_paypal_express', github: 'adnotam/solidus_paypal_express', branch: 'master'

Bundle your dependencies and run the installation generator:

bin/rails generate solidus_paypal_express:install

Usage

Sandbox Setup

PayPal

Go to PayPal's Developer Website, sign in with your PayPal account, click "Applications" then "Sandbox Accounts" and create a new "Business" account. Once the account is created, click on the triangle next to its email address, then "Profile". The "API Credentials" tab will provide your API credentials (probably). If this tab is blank, try refreshing the page.

You will also need a "Personal" account to test the transactions on your site. Create this in the same way, finding the account information under "Profile" as well. You may need to set a password in order to be able to log in to PayPal's sandbox for this user.

Solidus Setup

In Solidus, go to the admin backend, click "Configuration" and then "Payment Methods" and create a new payment method. Select "Spree::Gateway::PayPalExpress" as the provider, and click "Create". Enter the email address, password and signature from the "API Credentials" tab for the Business account on PayPal.

Production setup

PayPal

Sign in to PayPal, then click "Profile" and then (under "Account Information" on the left), click "API Access". On this page, select "Option 2" and click "View API Signature". The username, password and signature will be displayed on this screen.

If you are unable to find it, then follow PayPal's own documentation.

Solidus Setup

Same as sandbox setup, but change "Server" from "sandbox" to "live".

Configuration

The PayPal Express Checkout has no less than 4.5 billion configuration options.

This Solidus extension supports some of those. If your favourite is not here, then please submit an issue about it, or better still a patch to add it in.

Solution Type

Determines whether or not a user needs a PayPal account to check out.

payment_method.preferred_solution_type = "Mark"
# or
payment_method.preferred_solution_type = "Sole"

"Mark" if you do want users to have a paypal account, "Sole" otherwise.

Landing Page

Determines which page to show users once they're redirected to PayPal.

payment_method.preferred_landing_page = "Login"
# or
payment_method.preferred_landing_page = "Billing"

"Login" will show the users the login form for PayPal, and "Billing" will show them a form where they can enter their credit card data and possibly sign up for a PayPal account (depending on the Solution Type setting above).

Logo

Determines what logo, if any, to display at the top left of the PayPal express checkout:

payment_method.preferred_logourl = 'http://yoursite.com/images/checkout.jpg'

Must be an absolute path to the image.

Caveats

Caveat venditor

Paypal will refuse any order with a zero cost item. Any such item will be skipped and not displayed.

PayPal will also refuse any order where item total (before taxes and shipping costs) is zero. In this case the PayPal checkout page will simply display "Current order".

Development

Testing the extension

First bundle your dependencies, then run bin/rake. bin/rake will default to building the dummy app if it does not exist, then it will run specs. The dummy app can be regenerated by using bin/rake extension:test_app.

bin/rake

To run Rubocop static code analysis run

bundle exec rubocop

When testing your application's integration with this extension you may use its factories. Simply add this require statement to your spec_helper:

require 'solidus_paypal_express/factories'

Running the sandbox

To run this extension in a sandboxed Solidus application, you can run bin/sandbox. The path for the sandbox app is ./sandbox and bin/rails will forward any Rails commands to sandbox/bin/rails.

Here's an example:

$ bin/rails server
=> Booting Puma
=> Rails 6.0.2.1 application starting in development
* Listening on tcp://127.0.0.1:3000
Use Ctrl-C to stop

Updating the changelog

Before and after releases the changelog should be updated to reflect the up-to-date status of the project:

bin/rake changelog
git add CHANGELOG.md
git commit -m "Update the changelog"

Releasing new versions

Your new extension version can be released using gem-release like this:

bundle exec gem bump -v 1.6.0
bin/rake changelog
git commit -a --amend
git push
bundle exec gem release

License

Copyright (c) 2019 Solidus Commerce and contributors, released under the New BSD License.

About

💳 PayPal Express payment method for Solidus

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 83.7%
  • HTML 8.1%
  • JavaScript 4.2%
  • Shell 3.9%
  • CSS 0.1%