An extension on top of django-oscar-api providing a more flexible checkout API with a pluggable payment methods interface.
Project description
An extension on top of django-oscar-api providing a more flexible checkout API with a pluggable payment methods interface.
Compatible Payment Plugins
django-oscar-cybersource: Provides order payment using Cybersource Secure Acceptance Silent Order POST for PCI SAQ A-EP compliant credit card processing.
Installation
Install django-oscar-api using the documentation.
Install the django-oscar-api-checkout package.:
$ pip install django-oscar-api-checkout
Add oscarapicheckout to your INSTALLED_APPS:
# myproject/settings.py ... INSTALLED_APPS = [ ... 'oscarapicheckout', ] + get_core_apps([]) ...
Configure Oscar’s order status pipeline.:
# myproject/settings.py ... # Needed by oscarapicheckout ORDER_STATUS_PENDING = 'Pending' ORDER_STATUS_PAYMENT_DECLINED = 'Payment Declined' ORDER_STATUS_AUTHORIZED = 'Authorized' # Other statuses ORDER_STATUS_SHIPPED = 'Shipped' ORDER_STATUS_CANCELED = 'Canceled' # Pipeline Config OSCAR_INITIAL_ORDER_STATUS = ORDER_STATUS_PENDING OSCARAPI_INITIAL_ORDER_STATUS = ORDER_STATUS_PENDING OSCAR_ORDER_STATUS_PIPELINE = { ORDER_STATUS_PENDING: (ORDER_STATUS_PAYMENT_DECLINED, ORDER_STATUS_AUTHORIZED, ORDER_STATUS_CANCELED), ORDER_STATUS_PAYMENT_DECLINED: (ORDER_STATUS_AUTHORIZED, ORDER_STATUS_CANCELED), ORDER_STATUS_AUTHORIZED: (ORDER_STATUS_SHIPPED, ORDER_STATUS_CANCELED), ORDER_STATUS_SHIPPED: (), ORDER_STATUS_CANCELED: (), } OSCAR_INITIAL_LINE_STATUS = ORDER_STATUS_PENDING OSCAR_LINE_STATUS_PIPELINE = { ORDER_STATUS_PENDING: (ORDER_STATUS_SHIPPED, ORDER_STATUS_CANCELED), ORDER_STATUS_SHIPPED: (), ORDER_STATUS_CANCELED: (), }
Configure what payment methods are enabled and who can use them.:
# myproject/settings.py ... API_ENABLED_PAYMENT_METHODS = [ { 'method': 'oscarapicheckout.methods.Cash', 'permission': 'oscarapicheckout.permissions.StaffOnly', }, { 'method': 'some.other.methods.CreditCard', 'permission': 'oscarapicheckout.permissions.Public', }, ]
Add oscarapicheckout to your root URL configuration directly before oscarapi.:
# myproject/urls.py ... from oscarapi.app import application as oscar_api from oscarapicheckout.app import application as oscar_api_checkout urlpatterns = patterns('', ... url(r'^api/', include(oscar_api_checkout.urls)), # Must be before oscar_api.urls url(r'^api/', include(oscar_api.urls)), ... )
Usage
These are the basic steps to add an item to the basket and checkout using the API.
Add an item to the basket.:
POST /api/basket/add-product/ { "url": "/api/products/1/", "quantity": 1 }
List the payment methods available to the current user.:
GET /api/checkout/payment-methods/
Submit the order, specifying which payment method(s) to use.:
POST /api/checkout/ { "guest_email": "joe@example.com", "basket": "/api/baskets/1/", "shipping_address": { "first_name": "Joe", "last_name": "Schmoe", "line1": "234 5th Ave", "line4": "Manhattan", "postcode": "10001", "state": "NY", "country": "/api/countries/US/", "phone_number": "+1 (717) 467-1111", }, "billing_address": { "first_name": "Joe", "last_name": "Schmoe", "line1": "234 5th Ave", "line4": "Manhattan", "postcode": "10001", "state": "NY", "country": "/api/countries/US/", "phone_number": "+1 (717) 467-1111", }, "payment": { "cash": { "enabled": true, "amount": "10.00", }, "creditcard": { "enabled": true, "pay_balance": true, } } }
Check the status of each enabled payment option.:
GET /api/checkout/payment-states/
Changelog
0.1.0
Initial release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-oscar-api-checkout-0.1.5.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f10fd9704c41fbcff6c87b477d75a37189f3bad24c7a5e521924cc71010b0182 |
|
MD5 | 78374fdaee879c7c58e4518852ab545a |
|
BLAKE2b-256 | 3fb66fe4249a152ea9d6dcea3ca031b3b23bcccbf7cad4c8e0dce66db41d5821 |
Hashes for django_oscar_api_checkout-0.1.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a43e60e71f47c12de587a72a61f1d3e38f031f93910765d61bb56b34db527493 |
|
MD5 | 8eb0454e7fb315b85c07dfcd26c2e8fa |
|
BLAKE2b-256 | 5b923be097ef87a156df6b0d7f0a171ea270be3d8c196cbf1757f46601c9ef66 |