Skip to content

silverstripe-archive/silverstripe-payment

Repository files navigation

Payment Module

Important: The module is being restructured for SilverStripe 3 support, see "Roadmap" below

Overview

Generic API for various payment gateways. Records payments and their status in the database.

Supported Gateways and Payment Methods

Configuration

A project using this module needs to set its PDS account in project _config.php file,

  • If using DPS-hosted payment gateway (pxpost), set PXPost account: DPSAdapter::set_pxpost_account($your_pxpost_username, $your_pxpost_password);
  • If using Merchant-hosted payment geteway (pxpay), set PXPay account: DPSAdapter::set_pxpay_account($your_pxpay_userid, $your_pxpay_key);
  • If using both gateways, you need to set both above. This is very likely when using DPS-hosted to Auth a Credit Card and using Merchant-hosted to recursively pay.

This module is a stand-alone module, it is only dependent on SilverStripe core. We have re-factored DPSPayment and make DPSPayment and previous DPSHostedPayment into one payment object, the only difference between the two is they call different functions when making a transaction.

One of its common applications is to be used in E-commerce module. But in general, it should be hook-up with any data object as long as this data object is payable, such as a downloadable mp3, a E-book, booking a ticket on-line, donation, etc. DPSPayment has been re-implemented in this way, though we need to check all other payment methods in future releases.

Roadmap

The module was heavily worked on during GSOC 2012 (project page), which resulted in a number of forks, which we'll merge back once they're in a good state.

Troubleshooting

Curl and CA Certificates on Windows

Some gateways (like DPSPayment) use PHP's curl in order to submit data, usually through a secure SSL connection. In some cases, the CA certificates aren't accepted. On Windows, PHP's curl doesn't come with any root CAs installed. You'll need to add them manually. The easiest way is a global installation through changing php.ini: