Metadata-Version: 1.1
Name: django-spgateway
Version: 0.3.3
Summary: Django support for Spgateway
Home-page: https://github.com/cjltsod/django-spgateway
Author: CJLTSOD <github.tsod@tsod.idv.tw>
Author-email: github.tsod@tsod.idv.tw
License: MIT
Description: ====================
        Spgateway for Django
        ====================
        
        Write Django and your store as usual, and let ``django-spgateway`` handle your transactions with Spgateway
        
        Requirements
        ------------
        - Python 3.7
        - Django 2.1
        - pycrypto 2.6.1
        - We only tested on environment as below
        
        Installation
        ------------
        
        1. Install using pip or pipenv:
        
           ``pip install django-spgageway``
        
           Alternatively, you can install download or clone this repo and call ``pip install -e .``.
        
        2. Add to INSTALLED_APPS in your ``settings.py``:
        
           ``'spgateway',``
        
        3. Add settings in your ``settings.py``:
        
           .. code:: Python
        
            SPGATEWAY_PROFILE = {
                'YOUR_MerchantID': {
                    'MerchantID': 'YOUR_MerchantID',
                    'HashKey': 'YOUR_HashKey',
                    'HashIV': 'YOUR_HashIV',
                },
            }
            SPGATEWAY_MERCHANTID = 'YOUR_MerchantID'
            SPGATEWAY_ORDERMODEL = 'yourapp.Order'
        
        
        4. Add urlpattern into your ``urls.py``:
        
           ``path('spgateway/', include('spgateway.urls')),`` for Django 2
        
           ``url(r'^spgateway/', include('spgateway.urls')),`` for Django 1
        
        5. Import ``from spgateway.models import SpgatewayOrderMixin`` and inherit from it with your order model.
        
        6. Run ``python manage.py makemigrations`` and ``python manage.py migrate`` as usual.
        
        7. Get form from your order by calling ``generate_credit_form`` in view:
        
           ``credit_form = order_object.generate_credit_form(request)``
        
           And use it in your template:
        
           .. code:: Django
        
            <form action="{{ credit_form.action }}" method="POST">
                {{ credit_form.as_p }}
                <input type="submit">
            </form>
        
        
        Example model
        -------------
        
           .. code:: Python
        
            from spgateway.models import SpgatewayOrderMixin
        
            class Order(SpgatewayOrderMixin, models.Model):
                total = models.IntegerField(default=0, verbose_name='Total Price')
                user = models.ForeignKey(User, verbose_name='Order by user')
                is_paid = models.BooleanField(default=False)
        
                # Add this parameter to let django-spgateway know which field is amount of price
                SpgatewayAmtFieldName = 'total'
        
                # Add this parameter to let django-spgateway set item description
                SpgatewayItemDesc = 'Items descriptions'
        
                # Add this method to let django-spgateway retrieve email
                def get_SpgatewayEmail(self, **kwargs):
                    return self.user.email
        
                # Add this method let django-spgateway call when notify from Spgateway server
                # Change your order with this method
                def spgateway_notify(self, request, trade_info):
                    status = trade_info['Status']
                    status_msg = trade_info['Message']
        
                    if status == 'SUCCESS':
                        self.is_paid = True
                        self.save()
                    else:
                        # TODO: Handle error
        
                # Add this method let django-spgateway call when client return from Spgateway server
                # Never trust data from client. Display messages only
                def spgateway_return(self, request, trade_info):
                    status = trade_info['Status']
                    status_msg = trade_info['Message']
        
                    if status == 'SUCCESS':
                        # TODO: Display success message to user
                    else:
                        # TODO: Display error message to user
        
                # django-spgateway will call this method to redirect user after user return from Spgateway server
                def get_absolute_url(self):
                    return reverse('ORDER_DETAIL_VIEW_NAME_HERE')
        
        
        Bugs and suggestions
        --------------------
        
        If you have found a bug or if you have a request for additional functionality, please use the issue tracker on GitHub.
        
        https://github.com/cjltsod/django-spgateway/issues
        
        
        License
        -------
        
        You can use this under MIT. See `LICENSE
        <LICENSE>`_ file for details.
        
        Author
        ------
        
        Developed and maintained by `CJLTSOD <https://about.me/cjltsod/>`_.
        
        Thanks to everybody that has contributed pull requests, ideas, issues, comments and kind words.
        
        Please see AUTHORS.rst for a list of contributors.
        
Keywords: django,spgateway
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Framework :: Django
Classifier: Framework :: Django :: 1.10
Classifier: Environment :: Web Environment
