'array', ]; protected $fillable = [ 'shopping_payment_id', 'request', 'txid', 'userid', 'status', 'key', 'txaction', 'transmitted_data', 'errorcode', 'errormessage', 'customermessage', 'mode', ]; public function shopping_payment() { return $this->belongsTo('App\Models\ShoppingPayment', 'shopping_payment_id'); } /** * Returns a human-readable description for known PAYONE error codes. * * @return array */ public static function payoneErrorDescriptions(): array { return [ 2 => 'Allgemeiner Fehler', 4 => 'Karte gesperrt', 5 => 'Zahlung abgelehnt', 12 => 'Ungültige Kartennummer', 14 => 'Ungültige Kartendaten', 33 => 'Karte abgelaufen', 34 => 'Karte gesperrt/gestohlen', 55 => 'Falsche PIN', 56 => 'Kunde hat abgebrochen', 58 => 'Transaktion nicht erlaubt', 62 => 'Karte für internationale Transaktionen nicht zugelassen', 104 => 'Karte für Online-Zahlungen nicht erlaubt', 105 => 'Karte ungültig', 120 => 'Falsche Prüfziffer (CVV)', 130 => 'Limit überschritten', 131 => 'Währung nicht unterstützt', 135 => 'Bank antwortet nicht', 136 => 'Bank nicht gefunden', 137 => 'Betrag stimmt nicht überein', 900 => '3D-Secure Authentifizierung fehlgeschlagen', 902 => 'Bank hat abgelehnt', 970 => 'Keine Antwort (Timeout)', 4218 => 'Karte unter Betrugsverdacht', 4219 => 'Transaktion von Kartenaussteller abgelehnt', ]; } public function getErrorDescriptionAttribute(): ?string { if (! $this->errorcode) { return null; } return self::payoneErrorDescriptions()[(int) $this->errorcode] ?? null; } }