Projet

Général

Profil

0001-paybox-add-support-for-payment-authorization-only-27.patch

Serghei Mihai, 12 octobre 2018 17:00

Télécharger (3,49 ko)

Voir les différences:

Subject: [PATCH] paybox: add support for payment authorization only (#27269)

 eopayment/paybox.py  | 12 ++++++++++++
 tests/test_paybox.py | 21 ++++++++++++++++++++-
 2 files changed, 32 insertions(+), 1 deletion(-)
eopayment/paybox.py
113 113

  
114 114
PAYBOX_DIRECT_SUCCESS_RESPONSE_CODE = '00000'
115 115

  
116
# payment modes
117
DIRECT_PAYMENT_MODE = 'N'
118
AUTHORIZATION_ONLY_MODE = 'O'
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': DIRECT_PAYMENT_MODE,
247
                'required': False,
248
                'validation': lambda x: x in [DIRECT_PAYMENT_MODE, AUTHORIZATION_ONLY_MODE]
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'] = 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': paybox.DIRECT_PAYMENT_MODE
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'] = paybox.AUTHORIZATION_ONLY_MODE
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
-