You are here

README.txt in Ubercart Stripe 7.3

This is an Ubercart payment gateway module for Stripe. It maintains PCI SAQ A 
compliance which allows Stripe, the payment processor, to handle prcoessing and 
storing of payment card details.

It is compliant with 3D Secure, 3D Secure 2, and Strong Customer Authentication (SCA)

Versions of the Stripe PHP Library and Stripe API that this module currently
supports are found in uc_stripe_libraries_info() in uc_stripe.module.

Installation and Setup
======================

a) Install and enable the module in the normal way for Drupal.

b) Visit your Ubercart Store Administration page, Configuration
section, and enable the gateway under the Payment Gateways.
(admin/store/settings/payment/edit/gateways)

c) On that page, provide your Stripe API keys, from
https://dashboard.stripe.com/account/apikeys

d) Download and install the Stripe PHP Library version 6.38.0 with stripe api 
2019-05-16 or newer from https://github.com/stripe/stripe-php/releases. The 
recommended technique is to use the command

drush ldl stripe

If you don't use "drush ldl stripe", download and install the Stripe library in
sites/all/libraries/stripe such that the path to VERSION
is sites/all/libraries/stripe/VERSION. YOU MUST CLEAR THE CACHE AFTER
CHANGING THE STRIPE PHP LIBRARY. The Libraries module caches its memory of
libraries like the Stripe Library.
(With the latest version of the libraries module you can use the command:

e) If you are using recurring payments, install version 2.x
of the Ubercart Recurring module:
http://drupal.org/project/uc_recurring
and set up as described below.

f) Every site dealing with credit cards in any way should be using https. It's
your responsibility to make this happen. (Actually, almost every site should
be https everywhere at this time in the web's history.)

g) If you want Stripe to attempt to validate zip/postal codes, you must enable
that feature on your *Stripe* account settings. Click the checkbox for
"Decline Charges that fail zip code verification" on the "Account info" page.
(You must be collecting billing address information for this to work, of course.)

h) The uc_credit setting "Validate credit card numbers at checkout" must be
disabled on admin/store/settings/payment/method/credit - uc_credit never sees
the credit card number, so cannot properly validate it (and we don't want it to
ever know the credit card number.)

i) uc_stripe creates it's own payment pane. Ensure the correct ordering by visiting
store->configuration->checkout (admin/store/settings/checkout).

Upgrading from uc_stripe 7.x-2.x
===========================================

7.x-3.x maintains PCI SAQ A compliance and has major implementation changes from 
2.x. This version uses it's own payment pane in uc_cart to collect card info.
The card fields such as card number, expiration date, and cvc code have all been
 hidden, and is handled entirely by Stripe's Element implementation.
Which means no credit card information gets processed at all by drupal. The last4,
and expiration date are sent back to drupal by Stripe's api.

7.x-3.x no longer creates a new stripe customer for each order. If a drupal user 
already has a stripe customer ID, this module will attach future orders to that
exisiting stripe customer ID.

When upgrading from 2.x the ordering of the new stripe payment pane should be
verified at store->configuration->checkout (admin/store/settings/checkout).

An upgrade of the stripe library is required. See installation step d from above.

7.x-3.x Uses the uc_recurring module for recurring payments. It is also equipped 
to handle recurring payments that require authentication (See the uc_recurring 
steps below). Exisiting recurring payments set up with 7.x-2.x work without any 
configuration changes.

Upgrading from uc_stripe 6.x-1.x or 7.x-1.x 
============================================

The upgrade hooks, however, must move the customer id stored in the obsolete
uc_recurring_stripe table into the user table. When this happens the old
record in the uc_recurring_stripe table will have its plan changed to
<old_plan>_obsolete. This just prevents an import from happening more than once
and gives you backout options if you wanted to downgrade.

If you were using 1.x of this module and want to cancel existing subscriptions
which were configured via the Stripe api (since they are now managed via
uc_recurring) a drush command is provided to cancel these. Use "drush help subcancel"
for more information.

Recurring Payments Setup
========================

You'll need the Ubercart Recurring module:
http://drupal.org/project/uc_recurring installed. It is not
listed as a dependency for this Stripe payment module because
this module could be used without recurring payments.
But it is a dependency to use the recurring payments piece of
this module. Note that this module does *not* use Stripe subscriptions.
Instead, recurring payments are managed by uc_recurring, which does not
retain any valid CC info, only the stripe customer id.

Recurring payments require automatically triggered renewals using
uc_recurring_trigger_renewals ("Enabled triggered renewals" must be enabled
on admin/store/settings/payment/edit/recurring)

You should also set your email message for recurring payments that require
Authentication. The system will email your customers with a link so that they
can authenticate and have their payment processed.
(You can edit from here: admin/store/settings/payment/edit/gateways)

If you were using Stripe subscriptions in v1 of this module, you may have to
disable those subscriptions in order to not double-charge your customers.

uc_stripe 6.x-2.x and 7.x-2.x were based on Bitcookie's work (thanks!) which was posted at
http://bitcookie.com/blog/pci-compliant-ubercart-and-stripe-js
from discussion in the uc_stripe issue queue,
https://www.drupal.org/node/1467886

File

README.txt
View source
  1. This is an Ubercart payment gateway module for Stripe. It maintains PCI SAQ A
  2. compliance which allows Stripe, the payment processor, to handle prcoessing and
  3. storing of payment card details.
  4. It is compliant with 3D Secure, 3D Secure 2, and Strong Customer Authentication (SCA)
  5. Versions of the Stripe PHP Library and Stripe API that this module currently
  6. supports are found in uc_stripe_libraries_info() in uc_stripe.module.
  7. Installation and Setup
  8. ======================
  9. a) Install and enable the module in the normal way for Drupal.
  10. b) Visit your Ubercart Store Administration page, Configuration
  11. section, and enable the gateway under the Payment Gateways.
  12. (admin/store/settings/payment/edit/gateways)
  13. c) On that page, provide your Stripe API keys, from
  14. https://dashboard.stripe.com/account/apikeys
  15. d) Download and install the Stripe PHP Library version 6.38.0 with stripe api
  16. 2019-05-16 or newer from https://github.com/stripe/stripe-php/releases. The
  17. recommended technique is to use the command
  18. drush ldl stripe
  19. If you don't use "drush ldl stripe", download and install the Stripe library in
  20. sites/all/libraries/stripe such that the path to VERSION
  21. is sites/all/libraries/stripe/VERSION. YOU MUST CLEAR THE CACHE AFTER
  22. CHANGING THE STRIPE PHP LIBRARY. The Libraries module caches its memory of
  23. libraries like the Stripe Library.
  24. (With the latest version of the libraries module you can use the command:
  25. e) If you are using recurring payments, install version 2.x
  26. of the Ubercart Recurring module:
  27. http://drupal.org/project/uc_recurring
  28. and set up as described below.
  29. f) Every site dealing with credit cards in any way should be using https. It's
  30. your responsibility to make this happen. (Actually, almost every site should
  31. be https everywhere at this time in the web's history.)
  32. g) If you want Stripe to attempt to validate zip/postal codes, you must enable
  33. that feature on your *Stripe* account settings. Click the checkbox for
  34. "Decline Charges that fail zip code verification" on the "Account info" page.
  35. (You must be collecting billing address information for this to work, of course.)
  36. h) The uc_credit setting "Validate credit card numbers at checkout" must be
  37. disabled on admin/store/settings/payment/method/credit - uc_credit never sees
  38. the credit card number, so cannot properly validate it (and we don't want it to
  39. ever know the credit card number.)
  40. i) uc_stripe creates it's own payment pane. Ensure the correct ordering by visiting
  41. store->configuration->checkout (admin/store/settings/checkout).
  42. Upgrading from uc_stripe 7.x-2.x
  43. ===========================================
  44. 7.x-3.x maintains PCI SAQ A compliance and has major implementation changes from
  45. 2.x. This version uses it's own payment pane in uc_cart to collect card info.
  46. The card fields such as card number, expiration date, and cvc code have all been
  47. hidden, and is handled entirely by Stripe's Element implementation.
  48. Which means no credit card information gets processed at all by drupal. The last4,
  49. and expiration date are sent back to drupal by Stripe's api.
  50. 7.x-3.x no longer creates a new stripe customer for each order. If a drupal user
  51. already has a stripe customer ID, this module will attach future orders to that
  52. exisiting stripe customer ID.
  53. When upgrading from 2.x the ordering of the new stripe payment pane should be
  54. verified at store->configuration->checkout (admin/store/settings/checkout).
  55. An upgrade of the stripe library is required. See installation step d from above.
  56. 7.x-3.x Uses the uc_recurring module for recurring payments. It is also equipped
  57. to handle recurring payments that require authentication (See the uc_recurring
  58. steps below). Exisiting recurring payments set up with 7.x-2.x work without any
  59. configuration changes.
  60. Upgrading from uc_stripe 6.x-1.x or 7.x-1.x
  61. ============================================
  62. The upgrade hooks, however, must move the customer id stored in the obsolete
  63. uc_recurring_stripe table into the user table. When this happens the old
  64. record in the uc_recurring_stripe table will have its plan changed to
  65. _obsolete. This just prevents an import from happening more than once
  66. and gives you backout options if you wanted to downgrade.
  67. If you were using 1.x of this module and want to cancel existing subscriptions
  68. which were configured via the Stripe api (since they are now managed via
  69. uc_recurring) a drush command is provided to cancel these. Use "drush help subcancel"
  70. for more information.
  71. Recurring Payments Setup
  72. ========================
  73. You'll need the Ubercart Recurring module:
  74. http://drupal.org/project/uc_recurring installed. It is not
  75. listed as a dependency for this Stripe payment module because
  76. this module could be used without recurring payments.
  77. But it is a dependency to use the recurring payments piece of
  78. this module. Note that this module does *not* use Stripe subscriptions.
  79. Instead, recurring payments are managed by uc_recurring, which does not
  80. retain any valid CC info, only the stripe customer id.
  81. Recurring payments require automatically triggered renewals using
  82. uc_recurring_trigger_renewals ("Enabled triggered renewals" must be enabled
  83. on admin/store/settings/payment/edit/recurring)
  84. You should also set your email message for recurring payments that require
  85. Authentication. The system will email your customers with a link so that they
  86. can authenticate and have their payment processed.
  87. (You can edit from here: admin/store/settings/payment/edit/gateways)
  88. If you were using Stripe subscriptions in v1 of this module, you may have to
  89. disable those subscriptions in order to not double-charge your customers.
  90. uc_stripe 6.x-2.x and 7.x-2.x were based on Bitcookie's work (thanks!) which was posted at
  91. http://bitcookie.com/blog/pci-compliant-ubercart-and-stripe-js
  92. from discussion in the uc_stripe issue queue,
  93. https://www.drupal.org/node/1467886