larium / credit-card
信用卡作为值对象。
2.0.0
2023-04-17 15:06 UTC
Requires
- php: >=8.1
Requires (Dev)
- phpunit/phpunit: ^10.0
README
信用卡作为值对象
安装
您可以使用Composer安装此库
有关如何安装Composer的信息,您可以在这里找到这里
命令行
在项目的根目录下运行控制台
$ composer require "larium/credit-card":"@stable"
Composer.json
在您的composer.json
文件中包含require行
{ "require": { "larium/credit-card": "@stable" } }
并在项目根目录下从控制台运行
$ composer update
之后,您必须从Composer要求自动加载文件。
<?php require_once 'vendor/autoload.php';
用法
创建信用卡对象
<?php use Larium\CreditCard\CreditCard; use Larium\CreditCard\CreditCardValidator; require_once 'vendor/autoload.php'; $data = array( 'holderName'=> 'John Doe', 'month' => 1, 'year' => date('Y') + 1, 'brand' => CreditCard::VISA, 'number' => '4532875311640795', 'cvv' => '123', ); $card = new CreditCard($data); echo $card->getBrand(); # visa //Auto uppercase holder name. echo $card->getHolderName(); # JOHN DOE $card = $card->withNumber('5284911033259148'); echo $card->getBrand(); # master
在信用卡对象中添加令牌
<?php use Larium\CreditCard\CreditCard; use Larium\CreditCard\CreditCardValidator; use Larium\CreditCard\Token; require_once 'vendor/autoload.php'; $data = array( 'holderName' => 'John Doe', 'month' => 1, 'year' => date('Y') + 1, 'brand' => CreditCard::VISA, 'number' => '4532875311640795', 'cvv' => '123', ); $card = new CreditCard($data); # ... use credit card to obtain a token reference from a remote payment gateway. $token = new Token('0123456789'); $card = $card->withToken($token); # Now, credit card will use token for future payments # and will mask any sensitive data as number and cvv. echo $card->getCvv(); # null echo $card->getNumber(); # XXXX-XXXX-XXXX-0795 echo $card->getToken(); # 0123456789
在某些情况下,我们需要使用临时令牌来完成支付。许多支付网关支持有限时间的令牌,它代表一张卡或一种支付方式。
<?php use Larium\CreditCard\Token; require_once 'vendor/autoload.php'; $token = new Token('0123456789', new DateTime('15 minutes')); $token->isExpired() # false $token = new Token('0123456789', new DateTime('15 minutes ago')); $token->isExpired() # true
验证信用卡
use Larium\CreditCard\CreditCard; use Larium\CreditCard\CreditCardValidator; require_once 'vendor/autoload.php'; $data = array( 'holderName'=> 'John Doe', 'month' => 1, 'year' => date('Y') + 1, 'brand' => CreditCard::VISA, 'number' => '4532875311640795', 'cvv' => '123', ); $card = new CreditCard($data); $validator = new CreditCardValidator(); $errors = $validator->validate($card); $valid = count($errors) === 0; # true $card = $card->withNumber('1'); $error = $validator->validate($card); print_r($errors); /* Array ( [number] => not a valid number [brand] => not valid card type ) */
验证信用卡的令牌
<?php use Larium\CreditCard\CreditCard; use Larium\CreditCard\CreditCardValidator; use Larium\CreditCard\Token; require_once 'vendor/autoload.php'; $card = new CreditCard(); $token = new Token('0123456789'); $card = $card->withToken($token); $validator = new CreditCardValidator(CreditCardValidator::CONTEXT_TOKEN); $errors = $validator->validate($card); $valid = count($errors) === 0; # true $token = new Token('0123456789', new DateTime('15 minutes ago')); $card = $card->withToken($token); $validator->setContext(CreditCardValidator::CONTEXT_TOKEN); $validator->validate($card); $validator->getErrors(); /* Array ( [token] => token has been expired ) */