12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Braintree\Model\InstantPurchase\CreditCard;
- use Magento\InstantPurchase\PaymentMethodIntegration\PaymentTokenFormatterInterface;
- use Magento\Vault\Api\Data\PaymentTokenInterface;
- /**
- * Braintree stored credit card formatter.
- */
- class TokenFormatter implements PaymentTokenFormatterInterface
- {
- /**
- * Most used credit card types
- * @var array
- */
- public static $baseCardTypes = [
- 'AE' => 'American Express',
- 'VI' => 'Visa',
- 'MC' => 'MasterCard',
- 'DI' => 'Discover',
- 'JBC' => 'JBC',
- 'CUP' => 'China Union Pay',
- 'MI' => 'Maestro',
- ];
- /**
- * @inheritdoc
- */
- public function formatPaymentToken(PaymentTokenInterface $paymentToken): string
- {
- $details = json_decode($paymentToken->getTokenDetails() ?: '{}', true);
- if (!isset($details['type'], $details['maskedCC'], $details['expirationDate'])) {
- throw new \InvalidArgumentException('Invalid Braintree credit card token details.');
- }
- if (isset(self::$baseCardTypes[$details['type']])) {
- $ccType = self::$baseCardTypes[$details['type']];
- } else {
- $ccType = $details['type'];
- }
- $formatted = sprintf(
- '%s: %s, %s: %s (%s: %s)',
- __('Credit Card'),
- $ccType,
- __('ending'),
- $details['maskedCC'],
- __('expires'),
- $details['expirationDate']
- );
- return $formatted;
- }
- }
|