This package provides integration between django-oscar and Sagepay's Direct APIs. It is still in the early stage of development - please ask any questions using the Oscar mailing list: [email protected].
Continuous integration status:
Install package using either:
$ pip install django-oscar-sagepay-director:
$ pip install git+git://github.com/tangentlabs/django-oscar-sagepay-direct#egg=django-oscar-sagepay-directAdd oscar_sagepay to INSTALLED_APPS and specify your vendor name:
OSCAR_SAGEPAY_VENDOR = 'tangentlabs'You will also need to install django-oscar too.
The main entry point into this package is the oscar_sagepay.facade module,
which provides the following functionality:
Perform an 'AUTHENTICATE' request:
from decimal import Decimal as D
from oscar_sagepay import facade
tx_id = facade.authenticate(amount, currency, bankcard, shipping_address,
billing_address, description, order_number)where:
amountis adecimal.Decimalinstancecurrencyis the 3 character currency codebankcardis anoscar.apps.payment.models.Bankcardinstanceshipping_addressis anoscar.apps.order.models.ShippingAddressinstancebilling_addressis anoscar.apps.order.models.BillingAddressinstancedescription(optional) is a short description of the transactionorder_number(optional) is an order number associated with the transaction
Perform an 'AUTHORISE' request:
from decimal import Decimal as D
from oscar_sagepay import facade
tx_id = facade.authorise(tx_id, amount, description, order_number)where:
tx_idis the transaction ID of a successful AUTHENTICATE requestamountis adecimal.Decimalinstancedescription(optional) is a short description of the transactionorder_number(optional) is an order number associated with the transaction
Perform a 'REFUND' request against a previous 'AUTHORISE':
from decimal import Decimal as D
from oscar_sagepay import facade
tx_id = refund(tx_id, amount, description, order_number)where:
tx_idis the transaction ID of a successful AUTHORISE requestamountis adecimal.Decimalinstancedescription(optional) is a short description of the transactionorder_number(optional) is an order number associated with the transaction
Perform a 'VOID' request against a previous 'AUTHORISE':
from decimal import Decimal as D
from oscar_sagepay import facade
tx_id = void(tx_id, order_number)where:
tx_idis the transaction ID of a successful AUTHORISE requestorder_number(optional) is an order number associated with the transaction
For an example of how this facade can be used used in an Oscar site, see the sandbox site that is part of this repo.
These settings are available:
OSCAR_SAGEPAY_VENDOR- your vendor name (passed asVendorto Sagepay).OSCAR_SAGEPAY_VPS_PROTOCOL(default:3.0) - the VPS protocol (passed asVPSProtocolto Sagepay).OSCAR_SAGEPAY_TEST_MODE(default:True) - whether to use the live or test Sagepay servers.OSCAR_SAGEPAY_TX_CODE_PREFIX(default:oscar) - a prefix string to prepend to generated TX codesOSCAR_SAGEPAY_AVSCV2(default:2) - the Sagepay setting for AV2CV2 behaviour.
Install locally by creating a virtualenv and running:
(sagepay) $ makeRun tests with:
(sagepay) $ py.testTo run end-to-end tests, you'll need a test account with Sagepay configured to respond
to your IP address and to not response randomly to DIRECT requests (as is the
default). Set your vendor name in sandbox/private_settings.py and run:
(sagepay) $ py.test --externalBuild a sandbox site using:
(sagepay) $ make sandboxand run the server using:
(sagepay) $ sandbox/manage.py runserver