python-redsys 2.0.0__py3-none-any.whl → 2.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
redsys/api/__init__.py CHANGED
@@ -1 +1 @@
1
- """Constant tables of RedSys parameter values: currencies, languages, transaction types, COF and SCA codes."""
1
+ """Constant tables of RedSys values, one module per parameter or code family."""
redsys/api/bizum.py ADDED
@@ -0,0 +1,71 @@
1
+ """Bizum Request-to-Pay values: ``Ds_RtpStatus`` and the ``Ds_RtpResponse`` codes.
2
+
3
+ ``redsys.codes.describe()`` gives the meaning of each code.
4
+ """
5
+
6
+ RTP_OK = 'OK'
7
+ """``Ds_RtpStatus``: the customer can receive a payment request, or the backup step succeeded."""
8
+
9
+ RTP_KO = 'KO'
10
+ """``Ds_RtpStatus``: it cannot or did not; ``Ds_RtpResponse`` says why."""
11
+
12
+ RTP_STATUSES = (RTP_OK, RTP_KO)
13
+
14
+ REQUEST_PROCESSED = 'BIZ00000'
15
+ """Request processed successfully."""
16
+
17
+ MISSING_PARAMETER = 'BIZ00001'
18
+ """A required input parameter is missing."""
19
+
20
+ INVALID_PARAMETER_FORMAT = 'BIZ00002'
21
+ """An input parameter has an invalid format."""
22
+
23
+ NOT_FOUND = 'BIZ00003'
24
+ """The requested item was not found."""
25
+
26
+ INTERNAL_FAILURE = 'BIZ00005'
27
+ """Internal system failure."""
28
+
29
+ SECURITY_CHECK_FAILED = 'BIZ00006'
30
+ """Security check failed (3DES / MAC X9.19)."""
31
+
32
+ OPERATION_NOT_ALLOWED = 'BIZ00007'
33
+ """Operation not allowed."""
34
+
35
+ PAYEE_NOT_FOUND = 'BIZ00008'
36
+ """Payee not found."""
37
+
38
+ PAYER_NOT_FOUND = 'BIZ00009'
39
+ """Payer not found (customer has no Bizum)."""
40
+
41
+ FEATURE_NOT_AVAILABLE = 'BIZ00202'
42
+ """Feature not implemented yet (seen when the customer lacks RTP)."""
43
+
44
+ REQUEST_AUTHENTICATION_FAILED = 'BIZ00213'
45
+ """Authentication of the incoming request failed (security sequence)."""
46
+
47
+ ISSUER_REJECTED_RTP_AUTHENTICATION = 'BIZ00224'
48
+ """Issuer answered KO to the RTP authentication."""
49
+
50
+ RTP_AUTHENTICATION_FAILED = 'BIZ00225'
51
+ """RTP authentication did not complete successfully."""
52
+
53
+ BACKUP_AVAILABLE = 'BIZ00233'
54
+ """Authentication failed but the operation can be backed up (respaldo)."""
55
+
56
+ RTP_RESPONSES = (
57
+ REQUEST_PROCESSED,
58
+ MISSING_PARAMETER,
59
+ INVALID_PARAMETER_FORMAT,
60
+ NOT_FOUND,
61
+ INTERNAL_FAILURE,
62
+ SECURITY_CHECK_FAILED,
63
+ OPERATION_NOT_ALLOWED,
64
+ PAYEE_NOT_FOUND,
65
+ PAYER_NOT_FOUND,
66
+ FEATURE_NOT_AVAILABLE,
67
+ REQUEST_AUTHENTICATION_FAILED,
68
+ ISSUER_REJECTED_RTP_AUTHENTICATION,
69
+ RTP_AUTHENTICATION_FAILED,
70
+ BACKUP_AVAILABLE,
71
+ )
redsys/api/cards.py ADDED
@@ -0,0 +1,50 @@
1
+ """Card values in responses: ``Ds_Card_Type``, ``Ds_Card_Brand`` and ``Ds_Card_PSD2``.
2
+
3
+ Strings, as the response fields carry them.
4
+ """
5
+
6
+ CREDIT = 'C'
7
+ """``Ds_Card_Type``: credit card."""
8
+
9
+ DEBIT = 'D'
10
+ """``Ds_Card_Type``: debit card."""
11
+
12
+ VOUCHER = 'V'
13
+ """``Ds_Card_Type``: prepaid voucher."""
14
+
15
+ MIXED = 'X'
16
+ """``Ds_Card_Type``: mixed card."""
17
+
18
+ CARD_TYPES = (CREDIT, DEBIT, VOUCHER, MIXED)
19
+
20
+ VISA = '1'
21
+ """``Ds_Card_Brand``: Visa."""
22
+
23
+ MASTERCARD = '2'
24
+ """``Ds_Card_Brand``: Mastercard."""
25
+
26
+ DINERS = '6'
27
+ """``Ds_Card_Brand``: Diners."""
28
+
29
+ PRIVATE_LABEL = '7'
30
+ """``Ds_Card_Brand``: private label card."""
31
+
32
+ AMEX = '8'
33
+ """``Ds_Card_Brand``: American Express."""
34
+
35
+ JCB = '9'
36
+ """``Ds_Card_Brand``: JCB."""
37
+
38
+ UPI = '22'
39
+ """``Ds_Card_Brand``: UnionPay (UPI, also listed as CUP)."""
40
+
41
+ BRANDS = (VISA, MASTERCARD, DINERS, PRIVATE_LABEL, AMEX, JCB, UPI)
42
+ """The documented brands; RedSys may return others."""
43
+
44
+ PSD2 = 'Y'
45
+ """``Ds_Card_PSD2``: the card falls under PSD2 strong customer authentication."""
46
+
47
+ NOT_PSD2 = 'N'
48
+ """``Ds_Card_PSD2``: it does not."""
49
+
50
+ PSD2_VALUES = (PSD2, NOT_PSD2)
redsys/api/currencies.py CHANGED
@@ -1,47 +1,49 @@
1
+ """ISO 4217 numeric codes for ``Ds_Merchant_Currency``."""
2
+
1
3
  EUR = 978
2
- """Euro"""
4
+ """Euro."""
3
5
 
4
6
  USD = 840
5
- """United States dollar"""
7
+ """United States dollar."""
6
8
 
7
9
  GBP = 826
8
- """Pound sterling"""
10
+ """Pound sterling."""
9
11
 
10
12
  JPY = 392
11
- """Japanese yen"""
13
+ """Japanese yen."""
12
14
 
13
15
  ARS = 32
14
- """Argentine peso"""
16
+ """Argentine peso."""
15
17
 
16
18
  CAD = 124
17
- """Canadian dollar"""
19
+ """Canadian dollar."""
18
20
 
19
21
  CLP = 152
20
- """Chilean Peso"""
22
+ """Chilean peso."""
21
23
 
22
24
  COP = 170
23
- """Colombian peso"""
25
+ """Colombian peso."""
24
26
 
25
27
  INR = 356
26
- """Indian rupee"""
28
+ """Indian rupee."""
27
29
 
28
30
  MXN = 484
29
- """Mexican peso"""
31
+ """Mexican peso."""
30
32
 
31
33
  PEN = 604
32
- """Peruvian Sol"""
34
+ """Peruvian sol."""
33
35
 
34
36
  CHF = 756
35
- """Swiss franc"""
37
+ """Swiss franc."""
36
38
 
37
39
  BRL = 986
38
- """Brazilian real"""
40
+ """Brazilian real."""
39
41
 
40
42
  VEF = 937
41
- """Venezuelan bolivar"""
43
+ """Venezuelan bolivar."""
42
44
 
43
45
  TRY = 949
44
- """Turkish lira"""
46
+ """Turkish lira."""
45
47
 
46
48
  CURRENCIES = (
47
49
  EUR,
@@ -62,9 +64,7 @@ CURRENCIES = (
62
64
  )
63
65
 
64
66
 
65
- # Minor-unit exponent per ISO 4217 (number of decimal places); used to scale
66
- # Ds_Merchant_Amount. Unlisted currencies default to 2. The scaling factor is
67
- # derived from this table in redsys.models (minor_units_factor).
67
+ # ISO 4217 minor-unit exponent: the decimals of ``amount`` on the wire; 2 for a currency not listed.
68
68
  CURRENCY_DECIMALS = {
69
69
  EUR: 2,
70
70
  USD: 2,
redsys/api/emv3ds.py ADDED
@@ -0,0 +1,99 @@
1
+ """Values inside the ``Ds_Merchant_EMV3DS`` request object and the ``Ds_EMV3DS`` response object."""
2
+
3
+ CARD_DATA = 'CardData'
4
+ """Request ``threeDSInfo``: the 3DS initialization asks for the card's 3DS data."""
5
+
6
+ AUTHENTICATION_DATA = 'AuthenticationData'
7
+ """Request ``threeDSInfo``: authentication with the browser data."""
8
+
9
+ CHALLENGE_RESPONSE = 'ChallengeResponse'
10
+ """Request ``threeDSInfo``: the step after a challenge, with ``cres``."""
11
+
12
+ RECURRING_3RI = '3RI-Recurring'
13
+ """Request ``threeDSInfo``: 3DS requestor initiated recurring payment."""
14
+
15
+ OTA_3RI = '3RI-OTA'
16
+ """Request ``threeDSInfo``: 3DS requestor initiated online travel agency operation."""
17
+
18
+ REQUEST_INFOS = (CARD_DATA, AUTHENTICATION_DATA, CHALLENGE_RESPONSE, RECURRING_3RI, OTA_3RI)
19
+
20
+ CARD_CONFIGURATION = 'CardConfiguration'
21
+ """Response ``threeDSInfo``: the answer of the 3DS initialization."""
22
+
23
+ CHALLENGE_REQUEST = 'ChallengeRequest'
24
+ """Response ``threeDSInfo``: the issuer requires a challenge (``acsURL`` and ``creq``)."""
25
+
26
+ RESPONSE_INFOS = (CARD_CONFIGURATION, CHALLENGE_REQUEST)
27
+
28
+ PROTOCOL_1_0_2 = '1.0.2'
29
+ """``protocolVersion`` 1.0.2."""
30
+
31
+ PROTOCOL_2_1_0 = '2.1.0'
32
+ """``protocolVersion`` 2.1.0."""
33
+
34
+ PROTOCOL_2_2_0 = '2.2.0'
35
+ """``protocolVersion`` 2.2.0."""
36
+
37
+ NO_3DS_V2 = 'NO_3DS_V2'
38
+ """Response ``protocolVersion``: the card has no 3-D Secure v2."""
39
+
40
+ PROTOCOL_VERSIONS = (PROTOCOL_1_0_2, PROTOCOL_2_1_0, PROTOCOL_2_2_0, NO_3DS_V2)
41
+
42
+ METHOD_COMPLETED = 'Y'
43
+ """``threeDSCompInd``: the 3DS Method finished."""
44
+
45
+ METHOD_FAILED = 'N'
46
+ """``threeDSCompInd``: the 3DS Method failed, timed out after 10 seconds, or the card has no method URL."""
47
+
48
+ METHOD_NOT_RUN = 'U'
49
+ """``threeDSCompInd``: the 3DS Method did not run."""
50
+
51
+ METHOD_COMPLETION_INDICATORS = (METHOD_COMPLETED, METHOD_FAILED, METHOD_NOT_RUN)
52
+
53
+ WINDOW_250X400 = '01'
54
+ """``challengeWindowSize``: 250 by 400 pixels."""
55
+
56
+ WINDOW_390X400 = '02'
57
+ """``challengeWindowSize``: 390 by 400 pixels."""
58
+
59
+ WINDOW_500X600 = '03'
60
+ """``challengeWindowSize``: 500 by 600 pixels."""
61
+
62
+ WINDOW_600X400 = '04'
63
+ """``challengeWindowSize``: 600 by 400 pixels."""
64
+
65
+ WINDOW_FULL_SCREEN = '05'
66
+ """``challengeWindowSize``: full screen, the default."""
67
+
68
+ CHALLENGE_WINDOW_SIZES = (WINDOW_250X400, WINDOW_390X400, WINDOW_500X600, WINDOW_600X400, WINDOW_FULL_SCREEN)
69
+
70
+ CHALLENGE_REQUESTED = '03'
71
+ """``threeDSRequestorChallengeInd``: the merchant asks for strong customer authentication."""
72
+
73
+ CHALLENGE_MANDATED = '04'
74
+ """``threeDSRequestorChallengeInd``: a mandate requires it, as after a ``0195`` soft decline."""
75
+
76
+ CHALLENGE_INDICATORS = (CHALLENGE_REQUESTED, CHALLENGE_MANDATED)
77
+
78
+ WHITELIST_NOT_LISTED = 'N'
79
+ """Response ``whiteListStatus``: the merchant is not on the customer's trusted list."""
80
+
81
+ WHITELIST_NOT_ELIGIBLE = 'E'
82
+ """Response ``whiteListStatus``: the customer has no trusted list."""
83
+
84
+ WHITELIST_PENDING = 'P'
85
+ """Response ``whiteListStatus``: enrollment pending."""
86
+
87
+ WHITELIST_REJECTED = 'R'
88
+ """Response ``whiteListStatus``: the customer refused."""
89
+
90
+ WHITELIST_UNKNOWN = 'U'
91
+ """Response ``whiteListStatus``: unknown."""
92
+
93
+ WHITELIST_STATUSES = (
94
+ WHITELIST_NOT_LISTED,
95
+ WHITELIST_NOT_ELIGIBLE,
96
+ WHITELIST_PENDING,
97
+ WHITELIST_REJECTED,
98
+ WHITELIST_UNKNOWN,
99
+ )
@@ -0,0 +1,41 @@
1
+ """RedSys environments and their hosts."""
2
+
3
+ DESA = 'DESA'
4
+ """Development."""
5
+
6
+ INTE = 'INTE'
7
+ """Integration."""
8
+
9
+ TEST = 'TEST'
10
+ """Test."""
11
+
12
+ PROD = 'PROD'
13
+ """Production."""
14
+
15
+ HOSTS = {
16
+ DESA: 'https://sis-d.redsys.es',
17
+ INTE: 'https://sis-i.redsys.es:25443',
18
+ TEST: 'https://sis-t.redsys.es:25443',
19
+ PROD: 'https://sis.redsys.es',
20
+ }
21
+
22
+ REDIRECT_PATH = '/sis/realizarPago'
23
+ """Redirect connection."""
24
+
25
+ INICIA_PATH = '/sis/rest/iniciaPeticionREST'
26
+ """Direct connection: 3-D Secure initialization."""
27
+
28
+ TRATA_PATH = '/sis/rest/trataPeticionREST'
29
+ """Direct connection: operations."""
30
+
31
+ RTP_CHECK_PATH = '/sis/rest/RTP/checkRtpUsuario'
32
+ """Bizum Request-to-Pay: whether the customer can receive a payment request."""
33
+
34
+ RTP_TRATA_PATH = '/sis/rest/RTP/trataPeticionREST'
35
+ """Bizum Request-to-Pay: payment (types 0 and 7) and refund without original (type 34)."""
36
+
37
+ RTP_BACKUP_PATH = '/sis/rest/RTP/respaldarUsuarioRTP'
38
+ """Bizum Request-to-Pay backup: starts it and sends the customer a one-time password."""
39
+
40
+ RTP_BACKUP_VALIDATION_PATH = '/sis/rest/RTP/validarRespaldoUsuarioRTP'
41
+ """Bizum Request-to-Pay backup: validates the one-time password."""
redsys/api/languages.py CHANGED
@@ -1,3 +1,5 @@
1
+ """Values of ``Ds_Merchant_ConsumerLanguage``; ``DEFAULT`` leaves the language undetermined."""
2
+
1
3
  DEFAULT = 0
2
4
  SPANISH = 1
3
5
  ENGLISH = 2
@@ -12,7 +14,7 @@ VALENCIAN = 10
12
14
  POLISH = 11
13
15
  GALICIAN = 12
14
16
  EUSKERA = 13
15
- BULGARIAN = 14
17
+ BULGARIAN = 100
16
18
  CHINESE = 156
17
19
  CROATIAN = 191
18
20
  CZECH = 203
@@ -21,12 +23,15 @@ ESTONIAN = 233
21
23
  FINNISH = 246
22
24
  GREEK = 300
23
25
  HUNGARIAN = 348
26
+ HINDI = 356
24
27
  JAPANESE = 392
28
+ KOREAN = 410
25
29
  LATVIAN = 428
26
30
  LITHUANIAN = 440
27
31
  MALTESE = 470
28
32
  ROMANIAN = 642
29
33
  RUSSIAN = 643
34
+ ARABIC = 682
30
35
  SLOVAK = 703
31
36
  SLOVENIAN = 705
32
37
  TURKISH = 792
@@ -55,12 +60,15 @@ LANGUAGES = (
55
60
  FINNISH,
56
61
  GREEK,
57
62
  HUNGARIAN,
63
+ HINDI,
58
64
  JAPANESE,
65
+ KOREAN,
59
66
  LATVIAN,
60
67
  LITHUANIAN,
61
68
  MALTESE,
62
69
  ROMANIAN,
63
70
  RUSSIAN,
71
+ ARABIC,
64
72
  SLOVAK,
65
73
  SLOVENIAN,
66
74
  TURKISH,
redsys/api/options.py ADDED
@@ -0,0 +1,31 @@
1
+ """Values of request options with a closed set: direct payment, DCC, OTA, financing and PayPal shipping address."""
2
+
3
+ DIRECT_PAYMENT = 'true'
4
+ """``Ds_Merchant_DirectPayment``: skip authentication; required for MIT, ignored for cards under PSD2."""
5
+
6
+ MOTO = 'moto'
7
+ """``Ds_Merchant_DirectPayment``: a mail or telephone order (MOTO)."""
8
+
9
+ DIRECT_PAYMENTS = (DIRECT_PAYMENT, MOTO)
10
+
11
+ DCC_QUERY = 'Y'
12
+ """``Ds_Merchant_DCC`` on the 3DS initialization: asks for a currency conversion offer."""
13
+
14
+ NO_DCC_QUERY = 'N'
15
+ """``Ds_Merchant_DCC`` on the 3DS initialization: asks for none."""
16
+
17
+ DCC_QUERIES = (DCC_QUERY, NO_DCC_QUERY)
18
+
19
+ OTA_INITIAL = 'S'
20
+ """``Ds_Merchant_OTA``: the initial operation of an online travel agency (OTA) authentication."""
21
+
22
+ FINANCING_QUERY = 'Y'
23
+ """``Ds_Merchant_Financing`` on the 3DS initialization: asks which financing options apply."""
24
+
25
+ SHIPPING_ADDRESS = 'S'
26
+ """``Ds_Merchant_ShippingAddressPyP``: the response carries the PayPal account's shipping address."""
27
+
28
+ NO_SHIPPING_ADDRESS = 'N'
29
+ """``Ds_Merchant_ShippingAddressPyP``: the response leaves the shipping address out."""
30
+
31
+ SHIPPING_ADDRESS_OPTIONS = (SHIPPING_ADDRESS, NO_SHIPPING_ADDRESS)
@@ -0,0 +1,25 @@
1
+ """Values of ``Ds_Merchant_PayMethods``: the payment methods offered on the RedSys payment page.
2
+
3
+ RedSys publishes no closed table; these are the values its guides use. On a PayGold link
4
+ several letters can go together (for example ``CzP``).
5
+ """
6
+
7
+ BIZUM = 'z'
8
+ """Bizum (Bizum guide 2.6, PayGold guide 1.8.2)."""
9
+
10
+ CARD = 'C'
11
+ """Card only (PayGold guide 1.8.2)."""
12
+
13
+ BANK_TRANSFER = 'R'
14
+ """Bank transfer (PayGold guide 1.8.2)."""
15
+
16
+ PAYPAL = 'P'
17
+ """PayPal (PayGold guide 1.8.2)."""
18
+
19
+ XPAY = 'xpay'
20
+ """Only the Google Pay and Apple Pay buttons (Google Pay guide 1.9, Apple Pay guide 3.2)."""
21
+
22
+ GOOGLE_PAY = 'google'
23
+ """Straight to Google Pay (Google Pay guide 1.9)."""
24
+
25
+ PAY_METHODS = (BIZUM, CARD, BANK_TRANSFER, PAYPAL, XPAY, GOOGLE_PAY)
redsys/api/paygold.py ADDED
@@ -0,0 +1,33 @@
1
+ """PayGold (payment by link) values: SMS placeholders and e-mail XML tags.
2
+
3
+ The link is created with ``pay_gold()`` (type 15) and its expiry changed with
4
+ ``pay_gold_expiry_change()`` (type 51).
5
+ """
6
+
7
+ SMS_MERCHANT = '@COMERCIO@'
8
+ """Placeholder in ``customer_sms_text`` for the merchant name."""
9
+
10
+ SMS_AMOUNT = '@IMPORTE@'
11
+ """Placeholder in ``customer_sms_text`` for the amount."""
12
+
13
+ SMS_CURRENCY = '@MONEDA@'
14
+ """Placeholder in ``customer_sms_text`` for the currency."""
15
+
16
+ SMS_URL = '@URL@'
17
+ """Placeholder in ``customer_sms_text`` for the payment link; required."""
18
+
19
+ SMS_PLACEHOLDERS = (SMS_MERCHANT, SMS_AMOUNT, SMS_CURRENCY, SMS_URL)
20
+
21
+ XML_BUYER_NAME = 'nombreComprador'
22
+ """Tag in ``p2f_xml_data`` for the buyer's name."""
23
+
24
+ XML_BUYER_ADDRESS = 'direccionComprador'
25
+ """Tag in ``p2f_xml_data`` for the buyer's address (parameters table)."""
26
+
27
+ XML_FREE_TEXT = 'textoLibre1'
28
+ """Tag in ``p2f_xml_data`` for the purchase description."""
29
+
30
+ XML_MAIL_SUBJECT = 'subjectMailCliente'
31
+ """Tag in ``p2f_xml_data`` for the e-mail subject (PayGold guide example)."""
32
+
33
+ XML_TAGS = (XML_BUYER_NAME, XML_BUYER_ADDRESS, XML_FREE_TEXT, XML_MAIL_SUBJECT)
@@ -0,0 +1,207 @@
1
+ """Values of ``Ds_ProcessedPayMethod``: the method an operation was processed with, as strings.
2
+
3
+ RedSys may add values; compare against these without rejecting others.
4
+ """
5
+
6
+ VISA_SECURE = '1'
7
+ """Visa Secure."""
8
+
9
+ TRADITIONAL_WORLDWIDE = '3'
10
+ """Traditional payment, worldwide."""
11
+
12
+ FINANET = '5'
13
+ """Finanet."""
14
+
15
+ FINANET_CAPABLE = '11'
16
+ """Finanet capable."""
17
+
18
+ VISA_SECURE_CAPABLE = '13'
19
+ """Visa Secure capable."""
20
+
21
+ TRADITIONAL_EU = '14'
22
+ """Traditional payment, European Union."""
23
+
24
+ MASTERCARD_IDENTITY_CHECK = '22'
25
+ """Mastercard Identity Check."""
26
+
27
+ IDENTITY_CHECK_CAPABLE = '23'
28
+ """Identity Check capable."""
29
+
30
+ AMEX = '24'
31
+ """American Express payment."""
32
+
33
+ MOTO = '25'
34
+ """Mail or telephone order (MOTO) payment."""
35
+
36
+ JCB = '28'
37
+ """JCB payment."""
38
+
39
+ DINERS = '31'
40
+ """Diners payment."""
41
+
42
+ JCB_J_SECURE = '39'
43
+ """JCB J/Secure."""
44
+
45
+ J_SECURE_CAPABLE = '40'
46
+ """J/Secure capable."""
47
+
48
+ DIRECT_DEBIT = '41'
49
+ """Direct debit."""
50
+
51
+ BANK_TRANSFER = '42'
52
+ """Bank transfer."""
53
+
54
+ PAYPAL = '54'
55
+ """PayPal."""
56
+
57
+ AMEX_SAFEKEY = '57'
58
+ """American Express SafeKey."""
59
+
60
+ SAFEKEY_CAPABLE = '58'
61
+ """SafeKey capable."""
62
+
63
+ MASTERPASS = '59'
64
+ """Masterpass wallet."""
65
+
66
+ BIZUM = '68'
67
+ """Bizum."""
68
+
69
+ UPI_EXPRESSPAY = '70'
70
+ """UPI ExpressPay."""
71
+
72
+ GOOGLE_PAY = '71'
73
+ """Google Pay."""
74
+
75
+ APPLE_PAY = '72'
76
+ """Apple Pay."""
77
+
78
+ UPI_SECUREPLUS = '73'
79
+ """UPI SecurePlus."""
80
+
81
+ DISCOVER_CAPABLE = '74'
82
+ """Discover capable."""
83
+
84
+ DISCOVER_PROTECTBUY = '75'
85
+ """Discover ProtectBuy."""
86
+
87
+ DISCOVER = '76'
88
+ """Discover."""
89
+
90
+ AMAZON_PAY = '77'
91
+ """Amazon Pay."""
92
+
93
+ VISA_CHALLENGE = '78'
94
+ """Visa, with challenge."""
95
+
96
+ MASTERCARD_CHALLENGE = '79'
97
+ """Mastercard, with challenge."""
98
+
99
+ VISA_FRICTIONLESS = '80'
100
+ """Visa, frictionless."""
101
+
102
+ MASTERCARD_FRICTIONLESS = '81'
103
+ """Mastercard, frictionless."""
104
+
105
+ VISA_ATTEMPT = '82'
106
+ """Visa, authentication attempt."""
107
+
108
+ MASTERCARD_ATTEMPT = '83'
109
+ """Mastercard, authentication attempt."""
110
+
111
+ AMEX_CHALLENGE = '85'
112
+ """American Express, with challenge."""
113
+
114
+ DISCOVER_CHALLENGE = '86'
115
+ """Discover, with challenge."""
116
+
117
+ AMEX_FRICTIONLESS = '87'
118
+ """American Express, frictionless."""
119
+
120
+ DISCOVER_FRICTIONLESS = '88'
121
+ """Discover, frictionless."""
122
+
123
+ AMEX_ATTEMPT = '89'
124
+ """American Express, authentication attempt."""
125
+
126
+ DISCOVER_ATTEMPT = '90'
127
+ """Discover, authentication attempt."""
128
+
129
+ DINERS_PROTECTBUY = '92'
130
+ """Diners ProtectBuy payment."""
131
+
132
+ DINERS_PROTECTBUY_CHALLENGE = '93'
133
+ """Diners ProtectBuy, with challenge."""
134
+
135
+ DINERS_PROTECTBUY_FRICTIONLESS = '94'
136
+ """Diners ProtectBuy, frictionless."""
137
+
138
+ DINERS_PROTECTBUY_ATTEMPT = '95'
139
+ """Diners ProtectBuy, authentication attempt."""
140
+
141
+ JCB_CHALLENGE = '96'
142
+ """JCB, with challenge."""
143
+
144
+ JCB_FRICTIONLESS = '97'
145
+ """JCB, frictionless."""
146
+
147
+ JCB_ATTEMPT = '98'
148
+ """JCB, authentication attempt."""
149
+
150
+ SAMSUNG_PAY = '106'
151
+ """Samsung Pay."""
152
+
153
+ PAY_BY_ACCOUNT = '107'
154
+ """Pay by account."""
155
+
156
+ PROCESSED_PAY_METHODS = (
157
+ VISA_SECURE,
158
+ TRADITIONAL_WORLDWIDE,
159
+ FINANET,
160
+ FINANET_CAPABLE,
161
+ VISA_SECURE_CAPABLE,
162
+ TRADITIONAL_EU,
163
+ MASTERCARD_IDENTITY_CHECK,
164
+ IDENTITY_CHECK_CAPABLE,
165
+ AMEX,
166
+ MOTO,
167
+ JCB,
168
+ DINERS,
169
+ JCB_J_SECURE,
170
+ J_SECURE_CAPABLE,
171
+ DIRECT_DEBIT,
172
+ BANK_TRANSFER,
173
+ PAYPAL,
174
+ AMEX_SAFEKEY,
175
+ SAFEKEY_CAPABLE,
176
+ MASTERPASS,
177
+ BIZUM,
178
+ UPI_EXPRESSPAY,
179
+ GOOGLE_PAY,
180
+ APPLE_PAY,
181
+ UPI_SECUREPLUS,
182
+ DISCOVER_CAPABLE,
183
+ DISCOVER_PROTECTBUY,
184
+ DISCOVER,
185
+ AMAZON_PAY,
186
+ VISA_CHALLENGE,
187
+ MASTERCARD_CHALLENGE,
188
+ VISA_FRICTIONLESS,
189
+ MASTERCARD_FRICTIONLESS,
190
+ VISA_ATTEMPT,
191
+ MASTERCARD_ATTEMPT,
192
+ AMEX_CHALLENGE,
193
+ DISCOVER_CHALLENGE,
194
+ AMEX_FRICTIONLESS,
195
+ DISCOVER_FRICTIONLESS,
196
+ AMEX_ATTEMPT,
197
+ DISCOVER_ATTEMPT,
198
+ DINERS_PROTECTBUY,
199
+ DINERS_PROTECTBUY_CHALLENGE,
200
+ DINERS_PROTECTBUY_FRICTIONLESS,
201
+ DINERS_PROTECTBUY_ATTEMPT,
202
+ JCB_CHALLENGE,
203
+ JCB_FRICTIONLESS,
204
+ JCB_ATTEMPT,
205
+ SAMSUNG_PAY,
206
+ PAY_BY_ACCOUNT,
207
+ )