0001-paybox-add-support-for-authorization-and-immediate-p.patch
eopayment/paybox.py | ||
---|---|---|
113 | 113 | |
114 | 114 |
PAYBOX_DIRECT_SUCCESS_RESPONSE_CODE = '00000' |
115 | 115 | |
116 |
# payment modes |
|
117 |
PAYMENT_MODES = {'AUTHOR_CAPTURE': 'O', |
|
118 |
'IMMEDIATE': 'N'} |
|
119 | ||
116 | 120 | |
117 | 121 |
def sign(data, key): |
118 | 122 |
'''Take a list of tuple key, value and sign it by building a string to |
... | ... | |
236 | 240 |
'validation': lambda x: isinstance(x, basestring) and |
237 | 241 |
x.isdigit() and (1 <= len(x) <= 2) |
238 | 242 |
}, |
243 |
{ |
|
244 |
'name': 'capture_mode', |
|
245 |
'caption': _('Capture Mode'), |
|
246 |
'default': 'IMMEDIATE', |
|
247 |
'required': False, |
|
248 |
'choices': PAYMENT_MODES.keys() |
|
249 |
}, |
|
239 | 250 |
] |
240 | 251 |
} |
241 | 252 | |
... | ... | |
270 | 281 |
automatic_return_url = self.callback |
271 | 282 |
if self.capture_day: |
272 | 283 |
d['PBX_DIFF'] = self.capture_day.zfill(2) |
284 |
d['PBX_AUTOSEULE'] = PAYMENT_MODES[self.capture_mode] |
|
273 | 285 |
if automatic_return_url: |
274 | 286 |
d['PBX_REPONDRE_A'] = force_text(automatic_return_url) |
275 | 287 |
d = d.items() |
tests/test_paybox.py | ||
---|---|---|
68 | 68 |
'PBX_TOTAL': amount.replace('.', ''), |
69 | 69 |
'PBX_DEVISE': '978', |
70 | 70 |
'PBX_HASH': 'SHA512', |
71 |
'PBX_HMAC': 'D90B0D2B1C8BF67A2FC54AE56A026ABC6ABE17F2B976B993355CD9E6690A0EBB70ED18D67CB8D492B330C4EA76720CB492B8B4D033D8C2163C9B2D012B19BEAA',
|
|
71 |
'PBX_HMAC': '6C70F35F9C6F6C9AB16D1E766EF981D241CB527C2E547205622DFFAF5B1B6C0F47E1DE2D3A1CE579F97AD19F87C3AE63E89B22F4B6D1E118685F5DD977891668',
|
|
72 | 72 |
'PBX_ARCHIVAGE': '1234', |
73 | 73 |
'PBX_REPONDRE_A': 'http://example.com/callback', |
74 |
'PBX_AUTOSEULE': 'N' |
|
74 | 75 |
} |
75 | 76 | |
76 | 77 |
form_params = {} |
... | ... | |
104 | 105 |
self.assertIn('PBX_DIFF', form_params) |
105 | 106 |
self.assertEqual(form_params['PBX_DIFF'], '07') |
106 | 107 | |
108 |
def test_request_with_authorization_only(self): |
|
109 |
params = BACKEND_PARAMS.copy() |
|
110 |
time = '2018-08-21T10:26:32+02:00' |
|
111 |
email = 'user@entrouvert.com' |
|
112 |
order_id = '20180821' |
|
113 |
transaction = '1234' |
|
114 |
amount = '42.99' |
|
115 | ||
116 |
params['capture_mode'] = 'AUTHOR_CAPTURE' |
|
117 |
backend = eopayment.Payment('paybox', params) |
|
118 |
transaction_id, kind, what = backend.request( |
|
119 |
Decimal(amount), email=email, orderid=order_id, |
|
120 |
transaction_id=transaction, time=time) |
|
121 |
root = ET.fromstring(str(what)) |
|
122 | ||
123 |
form_params = dict(((node.attrib['name'], node.attrib['value']) for node in root if node.attrib['type'] == 'hidden')) |
|
124 |
self.assertEqual(form_params['PBX_AUTOSEULE'], 'O') |
|
125 | ||
107 | 126 |
def test_response(self): |
108 | 127 |
backend = eopayment.Payment('paybox', BACKEND_PARAMS) |
109 | 128 |
order_id = '20160216' |
110 |
- |