· 6 years ago · Sep 05, 2019, 05:30 PM
1cc_inputs = {
2'CardNumber': 'example_card',
3'CardName': 'Geolffrey',
4'ExpDate': '09/22',
5'CVNum':'156'
6}
7
8
9# THIS IS RUNTIME METHOD
10def cc_processing(self, current_cart, cc_input):
11 # Authorize net process CC
12 from lib.CC import Paygistic
13 cc = Paygistic()
14 # Process input data
15 # Set basic data
16 cc.set_params({k: v for k, v in cc_input.items() if k not in ['csrfmiddlewaretoken', 'payment']})
17 cc.return_to('%s%s' % ('https://staging.envios2224.com', reverse('order-checkout')))
18
19 # Get order key and details
20 for order, _ in self._flatten_cart(current_cart):
21 # Make paygistic transaction
22 n_uri = cc.make_transaction(order.total, order.id)
23 # Redirect
24 return redirect(n_uri)
25
26
27
28# THIS IS LIB
29
30import hashlib
31import requests
32from def2224.settings import CC_ENGINE_KEY, CC_ENGINE_TRANSACTION_KEY
33
34# Payment API URI
35CC_PAYMENT_URI = 'https://safepaycert.paymentlogistics.net/transaction.asp'
36
37
38class Paygistic(object):
39 def __init__(self):
40 # Init merchant connection
41 self.return_uri = None
42 self.params = _params = {
43 'txnType': 'SALE',
44 'merchantID': CC_ENGINE_KEY,
45 }
46
47 @classmethod
48 def _hash(cls, amount, order):
49 return hashlib.md5(('%s%s%s%s' % (
50 CC_ENGINE_TRANSACTION_KEY, CC_ENGINE_KEY, '%.2f' % amount, order
51 )).encode('utf-8')).hexdigest()
52
53 def set_params(self, params):
54 self.params = {**self.params, **params}
55
56 def return_to(self, uri):
57 self.params = {**self.params, **{
58 'returnURL': uri
59 }}
60
61 def make_transaction(self, amount, order):
62 _params = {**self.params, **{
63 'orderID': order,
64 'amount': '%.2f' % amount,
65 'hash': self._hash(amount, order)
66 }}
67
68 result = requests.post(CC_PAYMENT_URI, _params)
69 return result.url