1use serde::{Deserialize, Serialize};
2
3#[derive(Copy, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
5pub enum ResponseCode {
6 #[serde(rename = "0000")]
7 Approved,
8 #[serde(rename = "0100")]
9 REFERRAL,
10 #[serde(rename = "0800")]
11 BadResponseReversalRequired,
12 #[serde(rename = "1000")]
13 PartialAuthorization,
14 #[serde(rename = "1300")]
15 InvalidDataFormat,
16 #[serde(rename = "1310")]
17 InvalidAmount,
18 #[serde(rename = "1312")]
19 InvalidTransactionCardIssuerAcquirer,
20 #[serde(rename = "1317")]
21 InvalidCaptureDate,
22 #[serde(rename = "1320")]
23 InvalidCurrencyCode,
24 #[serde(rename = "1330")]
25 InvalidAccount,
26 #[serde(rename = "1335")]
27 InvalidAccountRecurring,
28 #[serde(rename = "1340")]
29 InvalidTerminal,
30 #[serde(rename = "1350")]
31 InvalidMerchant,
32 #[serde(rename = "1360")]
33 BadProcessingCode,
34 #[serde(rename = "1370")]
35 InvalidMcc,
36 #[serde(rename = "1380")]
37 InvalidExpiration,
38 #[serde(rename = "1382")]
39 InvalidCardVerificationValue,
40 #[serde(rename = "1384")]
41 InvalidLifeCycleOfTransaction,
42 #[serde(rename = "1390")]
43 InvalidOrder,
44 #[serde(rename = "1393")]
45 TransactionCannotBeCompleted,
46 #[serde(rename = "0500")]
47 DoNotHonor,
48 #[serde(rename = "5100")]
49 GenericDecline,
50 #[serde(rename = "5110")]
51 CVV2Failure,
52 #[serde(rename = "5120")]
53 InsufficientFunds,
54 #[serde(rename = "5130")]
55 InvalidPin,
56 #[serde(rename = "5140")]
57 CardClosed,
58 #[serde(rename = "5150")]
59 PickupCardSpecialConditions,
60 #[serde(rename = "5160")]
61 UnauthorizedUser,
62 #[serde(rename = "5170")]
63 AVSFailure,
64 #[serde(rename = "5180")]
65 InvalidOrRestrictedCard,
66 #[serde(rename = "5190")]
67 SoftAvs,
68 #[serde(rename = "5200")]
69 DuplicateTransaction,
70 #[serde(rename = "5210")]
71 InvalidTransaction,
72 #[serde(rename = "5400")]
73 ExpiredCard,
74 #[serde(rename = "5500")]
75 IncorrectPinReentered,
76 #[serde(rename = "5700")]
77 TransactionNotPermitted,
78 #[serde(rename = "5800")]
79 ReversalRejected,
80 #[serde(rename = "5900")]
81 InvalidIssue,
82 #[serde(rename = "5910")]
83 IssuerNotAvailableNotRetriable,
84 #[serde(rename = "5920")]
85 IssuerNotAvailableRetriable,
86 #[serde(rename = "6300")]
87 AccountNotOnFile,
88 #[serde(rename = "7600")]
89 ApprovedNonCapture,
90 #[serde(rename = "7700")]
91 Error3DS,
92 #[serde(rename = "7710")]
93 AuthenticationFailed,
94 #[serde(rename = "7800")]
95 BinError,
96 #[serde(rename = "7900")]
97 PinError,
98 #[serde(rename = "8000")]
99 ProcessorSystemError,
100 #[serde(rename = "8010")]
101 HostKeyError,
102 #[serde(rename = "8020")]
103 ConfigurationError,
104 #[serde(rename = "8030")]
105 UnsupportedTransaction,
106 #[serde(rename = "8100")]
107 FatalCommunicationError,
108 #[serde(rename = "8110")]
109 RetriableCommunicationError,
110 #[serde(rename = "8220")]
111 SystemUnavailable,
112 #[serde(rename = "9100")]
113 DeclinedPleaseRetry,
114 #[serde(rename = "9500")]
115 SuspectedFraud,
116 #[serde(rename = "9510")]
117 SecurityViolation,
118 #[serde(rename = "9520")]
119 LostOrStolen,
120 #[serde(rename = "9530")]
121 HoldCallCenter,
122 #[serde(rename = "9540")]
123 RefusedCard,
124 #[serde(rename = "9600")]
125 UnrecognizedResponseCode,
126 #[serde(rename = "5930")]
127 CardNotActivated,
128 #[serde(rename = "PPMD")]
129 ProMidUndefined,
130 #[serde(rename = "PPCE")]
131 CeRegistrationIncomplete,
132 #[serde(rename = "PPNT")]
133 NetworkError,
134 #[serde(rename = "PPCN")]
135 ConnectionError,
136 #[serde(rename = "PPCT")]
137 CardTypeUnsupported,
138 #[serde(rename = "PPTT")]
139 TransactionTypeUnsupported,
140 #[serde(rename = "PPCU")]
141 CurrencyUsedInvalid,
142 #[serde(rename = "PPQC")]
143 QuasiCashUnsupported,
144 #[serde(rename = "PPVE")]
145 ValidationError,
146 #[serde(rename = "PPVT")]
147 VirtualTerminalUnsupported,
148 #[serde(rename = "PPDC")]
149 DccUnsupported,
150 #[serde(rename = "PPER")]
151 InternalSystemError,
152 #[serde(rename = "PPIM")]
153 IdMismatch,
154 #[serde(rename = "PPH1")]
155 H1Error,
156 #[serde(rename = "PPSD")]
157 StatusDescription,
158 #[serde(rename = "PPAG")]
159 AdultGamingUnsupported,
160 #[serde(rename = "PPLS")]
161 LargeStatusCode,
162 #[serde(rename = "PPCO")]
163 Country,
164 #[serde(rename = "PPAD")]
165 BillingAddress,
166 #[serde(rename = "PPAU")]
167 MCCCode,
168 #[serde(rename = "PPUC")]
169 CurrencyCodeUnsupported,
170 #[serde(rename = "PPUR")]
171 UnsupportedReversal,
172 #[serde(rename = "PPVC")]
173 ValidateCurrency,
174 #[serde(rename = "PPS0")]
175 BankAuthRowMismatch,
176 #[serde(rename = "PPS1")]
177 BankAuthRowNotFound,
178 #[serde(rename = "PPS2")]
179 BankAuthRowVoided,
180 #[serde(rename = "PPS3")]
181 BankAuthExpired,
182 #[serde(rename = "PPS4")]
183 CurrencyMismatch,
184 #[serde(rename = "PPS5")]
185 CreditCardMismatch,
186 #[serde(rename = "PPS6")]
187 AmountMismatch,
188 #[serde(rename = "PPRF")]
189 InvalidParentTransactionStatus,
190 #[serde(rename = "PPEX")]
191 ExpiryDate,
192 #[serde(rename = "PPAX")]
193 AmountExceeded,
194 #[serde(rename = "PPDV")]
195 AuthMessage,
196 #[serde(rename = "PPDI")]
197 DinersReject,
198 #[serde(rename = "PPAR")]
199 AuthResult,
200 #[serde(rename = "PPBG")]
201 BadGaming,
202 #[serde(rename = "PPGR")]
203 GamingRefundError,
204 #[serde(rename = "PPCR")]
205 CreditError,
206 #[serde(rename = "PPAI")]
207 AmountIncompatible,
208 #[serde(rename = "PPIF")]
209 IdempotencyFailure,
210 #[serde(rename = "PPMC")]
211 BlockedMastercard,
212 #[serde(rename = "PPAE")]
213 AmexDisabled,
214 #[serde(rename = "PPFV")]
215 FieldValidationFailed,
216 #[serde(rename = "PPII")]
217 InvalidInputFailure,
218 #[serde(rename = "PPPM")]
219 InvalidPaymentMethod,
220 #[serde(rename = "PPUA")]
221 UserNotAuthorized,
222 #[serde(rename = "PPFI")]
223 InvalidFundingInstrument,
224 #[serde(rename = "PPEF")]
225 ExpiredFundingInstrument,
226 #[serde(rename = "PPFR")]
227 RestrictedFundingInstrument,
228 #[serde(rename = "PPEL")]
229 ExceedsFrequencyLimit,
230 #[serde(rename = "PCVV")]
231 CVVFailure,
232 #[serde(rename = "PPTV")]
233 InvalidVerificationToken,
234 #[serde(rename = "PPTE")]
235 VerificationTokenExpired,
236 #[serde(rename = "PPPI")]
237 InvalidProduct,
238 #[serde(rename = "PPIT")]
239 InvalidTraceId,
240 #[serde(rename = "PPTF")]
241 InvalidTraceReference,
242 #[serde(rename = "PPFE")]
243 FundingSourceAlreadyExists,
244 #[serde(rename = "PPTR")]
245 VerificationTokenRevoked,
246 #[serde(rename = "PPTI")]
247 InvalidTransactionId,
248 #[serde(rename = "PPD3")]
249 SecureError3DS,
250 #[serde(rename = "PPPH")]
251 NoPhoneForDCCTransaction,
252 #[serde(rename = "PPAV")]
253 ArcAvs,
254 #[serde(rename = "PPC2")]
255 ArcCvv,
256 #[serde(rename = "PPDB")]
257 NoDobPresent,
258 #[serde(rename = "PPLR")]
259 LateReversal,
260 #[serde(rename = "PPNC")]
261 NotSupportedNrc,
262 #[serde(rename = "PPRR")]
263 MerchantNotRegistered,
264 #[serde(rename = "PPSC")]
265 ArcScore,
266 #[serde(rename = "PPSE")]
267 AmexDenied,
268 #[serde(rename = "PPUE")]
269 UnsupportEntity,
270 #[serde(rename = "PPUP")]
271 UnsupportPosFlag,
272 #[serde(rename = "PPRE")]
273 UnsupportRefundOnPendingBc,
274}
275
276impl ResponseCode {
277 pub const fn as_str(self) -> &'static str {
278 match self {
279 Self::Approved => "0000",
280 Self::REFERRAL => "0100",
281 Self::BadResponseReversalRequired => "0800",
282 Self::PartialAuthorization => "1000",
283 Self::InvalidDataFormat => "1300",
284 Self::InvalidAmount => "1310",
285 Self::InvalidTransactionCardIssuerAcquirer => "1312",
286 Self::InvalidCaptureDate => "1317",
287 Self::InvalidCurrencyCode => "1320",
288 Self::InvalidAccount => "1330",
289 Self::InvalidAccountRecurring => "1335",
290 Self::InvalidTerminal => "1340",
291 Self::InvalidMerchant => "1350",
292 Self::BadProcessingCode => "1360",
293 Self::InvalidMcc => "1370",
294 Self::InvalidExpiration => "1380",
295 Self::InvalidCardVerificationValue => "1382",
296 Self::InvalidLifeCycleOfTransaction => "1384",
297 Self::InvalidOrder => "1390",
298 Self::TransactionCannotBeCompleted => "1393",
299 Self::DoNotHonor => "0500",
300 Self::GenericDecline => "5100",
301 Self::CVV2Failure => "5110",
302 Self::InsufficientFunds => "5120",
303 Self::InvalidPin => "5130",
304 Self::CardClosed => "5140",
305 Self::PickupCardSpecialConditions => "5150",
306 Self::UnauthorizedUser => "5160",
307 Self::AVSFailure => "5170",
308 Self::InvalidOrRestrictedCard => "5180",
309 Self::SoftAvs => "5190",
310 Self::DuplicateTransaction => "5200",
311 Self::InvalidTransaction => "5210",
312 Self::ExpiredCard => "5400",
313 Self::IncorrectPinReentered => "5500",
314 Self::TransactionNotPermitted => "5700",
315 Self::ReversalRejected => "5800",
316 Self::InvalidIssue => "5900",
317 Self::IssuerNotAvailableNotRetriable => "5910",
318 Self::IssuerNotAvailableRetriable => "5920",
319 Self::AccountNotOnFile => "6300",
320 Self::ApprovedNonCapture => "7600",
321 Self::Error3DS => "7700",
322 Self::AuthenticationFailed => "7710",
323 Self::BinError => "7800",
324 Self::PinError => "7900",
325 Self::ProcessorSystemError => "8000",
326 Self::HostKeyError => "8010",
327 Self::ConfigurationError => "8020",
328 Self::UnsupportedTransaction => "8030",
329 Self::FatalCommunicationError => "8100",
330 Self::RetriableCommunicationError => "8110",
331 Self::SystemUnavailable => "8220",
332 Self::DeclinedPleaseRetry => "9100",
333 Self::SuspectedFraud => "9500",
334 Self::SecurityViolation => "9510",
335 Self::LostOrStolen => "9520",
336 Self::HoldCallCenter => "9530",
337 Self::RefusedCard => "9540",
338 Self::UnrecognizedResponseCode => "9600",
339 Self::CardNotActivated => "5930",
340 Self::ProMidUndefined => "PPMD",
341 Self::CeRegistrationIncomplete => "PPCE",
342 Self::NetworkError => "PPNT",
343 Self::ConnectionError => "PPCN",
344 Self::CardTypeUnsupported => "PPCT",
345 Self::TransactionTypeUnsupported => "PPTT",
346 Self::CurrencyUsedInvalid => "PPCU",
347 Self::QuasiCashUnsupported => "PPQC",
348 Self::ValidationError => "PPVE",
349 Self::VirtualTerminalUnsupported => "PPVT",
350 Self::DccUnsupported => "PPDC",
351 Self::InternalSystemError => "PPER",
352 Self::IdMismatch => "PPIM",
353 Self::H1Error => "PPH1",
354 Self::StatusDescription => "PPSD",
355 Self::AdultGamingUnsupported => "PPAG",
356 Self::LargeStatusCode => "PPLS",
357 Self::Country => "PPCO",
358 Self::BillingAddress => "PPAD",
359 Self::MCCCode => "PPAU",
360 Self::CurrencyCodeUnsupported => "PPUC",
361 Self::UnsupportedReversal => "PPUR",
362 Self::ValidateCurrency => "PPVC",
363 Self::BankAuthRowMismatch => "PPS0",
364 Self::BankAuthRowNotFound => "PPS1",
365 Self::BankAuthRowVoided => "PPS2",
366 Self::BankAuthExpired => "PPS3",
367 Self::CurrencyMismatch => "PPS4",
368 Self::CreditCardMismatch => "PPS5",
369 Self::AmountMismatch => "PPS6",
370 Self::InvalidParentTransactionStatus => "PPRF",
371 Self::ExpiryDate => "PPEX",
372 Self::AmountExceeded => "PPAX",
373 Self::AuthMessage => "PPDV",
374 Self::DinersReject => "PPDI",
375 Self::AuthResult => "PPAR",
376 Self::BadGaming => "PPBG",
377 Self::GamingRefundError => "PPGR",
378 Self::CreditError => "PPCR",
379 Self::AmountIncompatible => "PPAI",
380 Self::IdempotencyFailure => "PPIF",
381 Self::BlockedMastercard => "PPMC",
382 Self::AmexDisabled => "PPAE",
383 Self::FieldValidationFailed => "PPFV",
384 Self::InvalidInputFailure => "PPII",
385 Self::InvalidPaymentMethod => "PPPM",
386 Self::UserNotAuthorized => "PPUA",
387 Self::InvalidFundingInstrument => "PPFI",
388 Self::ExpiredFundingInstrument => "PPEF",
389 Self::RestrictedFundingInstrument => "PPFR",
390 Self::ExceedsFrequencyLimit => "PPEL",
391 Self::CVVFailure => "PCVV",
392 Self::InvalidVerificationToken => "PPTV",
393 Self::VerificationTokenExpired => "PPTE",
394 Self::InvalidProduct => "PPPI",
395 Self::InvalidTraceId => "PPIT",
396 Self::InvalidTraceReference => "PPTF",
397 Self::FundingSourceAlreadyExists => "PPFE",
398 Self::VerificationTokenRevoked => "PPTR",
399 Self::InvalidTransactionId => "PPTI",
400 Self::SecureError3DS => "PPD3",
401 Self::NoPhoneForDCCTransaction => "PPPH",
402 Self::ArcAvs => "PPAV",
403 Self::ArcCvv => "PPC2",
404 Self::NoDobPresent => "PPDB",
405 Self::LateReversal => "PPLR",
406 Self::NotSupportedNrc => "PPNC",
407 Self::MerchantNotRegistered => "PPRR",
408 Self::ArcScore => "PPSC",
409 Self::AmexDenied => "PPSE",
410 Self::UnsupportEntity => "PPUE",
411 Self::UnsupportPosFlag => "PPUP",
412 Self::UnsupportRefundOnPendingBc => "PPRE",
413 }
414 }
415}
416
417impl AsRef<str> for ResponseCode {
418 fn as_ref(&self) -> &str {
419 self.as_str()
420 }
421}
422
423impl std::fmt::Display for ResponseCode {
424 fn fmt(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
425 self.as_str().fmt(formatter)
426 }
427}