veneliniliev / borica-3ds
Borica 3DS支付网关
2.1.0
2024-07-16 14:28 UTC
Requires
- php: >=5.6
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
- myclabs/php-enum: ^1.0
Requires (Dev)
- phpunit/phpunit: >=5
- squizlabs/php_codesniffer: ^3.5
- victorjonsson/markdowndocs: ^1.3
This package is auto-updated.
Last update: 2024-09-27 12:17:04 UTC
README
要求
- PHP >= 5.6 (包括 8.2)
- ext-mbstring
- ext-openssl
- ext-curl
- ext-json
安装
composer require veneliniliev/borica-3ds
更多方法,请参阅API文档。
证书
生成私钥
# Production key openssl genrsa -out production.key -aes256 2048 # Development key openssl genrsa -out development.key -aes256 2048
生成CSR
重要:在 组织单元名称(例如,部门)
中输入您的终端ID,在 通用名称(例如,完全限定主机名)
中输入您的域名。
# Production csr openssl req -new -key production.key -out VNNNNNNN_YYYYMMDD_P.csr # Development csr openssl req -new -key development.key -out VNNNNNNN_YYYYMMDD_D.csr
文件名按照以下约定创建: VNNNNNNN_YYYYMMDD_T,其中
- VNNNNNNN – 由金融机构提供的终端TID
- YYYYMMDD – 申请日期
- T – 请求证书的类型,值 – D – 开发环境,Р – 生产环境
使用
重要:使用方法切换签名模式MAC_EXTENDED / MAC_ADVANCED / MAC_GENERAL
$saleRequest->setSigningSchemaMacGeneral(); // use MAC_GENERAL $saleRequest->setSigningSchemaMacExtended(); // use MAC_EXTENDED $saleRequest->setSigningSchemaMacAdvanced(); // use MAC_ADVANCED
默认签名模式为 MAC_GENERAL!
销售请求
use VenelinIliev\Borica3ds\SaleRequest; // ... $saleRequest = (new SaleRequest()) ->setAmount(123.32) ->setOrder(123456) ->setDescription('test') ->setMerchantUrl('https://test.com') // optional ->setBackRefUrl('https://test.com/back-ref-url') // optional / required for development ->setTerminalID('<TID - V*******>') ->setMerchantId('<MID - 15 chars>') ->setPrivateKey('\<path to certificate.key>', '<password / or use method from bottom>') ->setMInfo(array( // Mandatory cardholderName and ( email or MobilePhone ) 'email'=>'user@sample.com', 'cardholderName'=>'CARDHOLDER NAME', // Max 45 chars 'mobilePhone'=> array( 'cc'=>'359', // Country code 'subscriber'=>'8939999888', // Subscriber number ), 'threeDSRequestorChallengeInd'=>'04', // Optional for Additional Authentication )) //->setSigningSchemaMacGeneral(); // use MAC_GENERAL //->setSigningSchemaMacExtended(); // use MAC_EXTENDED //->setSigningSchemaMacAdvanced(); // use MAC_ADVANCED ->setPrivateKeyPassword('test'); $formHtml = $saleRequest->generateForm(); // only generate hidden html form with filled inputs // OR $saleRequest->send(); // generate and send form with js
销售响应
从borica在 BACKREF
URL获取响应($saleRequest->setBackRefUrl('<url>'))
use VenelinIliev\Borica3ds\SaleResponse; // .... $isSuccessfulPayment = (new SaleResponse()) ->setPublicKey('<path to public certificate.cer>') ->setResponseData($_POST) //Set POST data from borica response //->setSigningSchemaMacGeneral(); // use MAC_GENERAL //->setSigningSchemaMacExtended(); // use MAC_EXTENDED //->setSigningSchemaMacAdvanced(); // use MAC_ADVANCED ->isSuccessful();
获取响应代码
use VenelinIliev\Borica3ds\SaleResponse; // ... $saleResponse= (new SaleResponse()) ->setPublicKey('<path to public certificate.cer>') //->setSigningSchemaMacGeneral(); // use MAC_GENERAL //->setSigningSchemaMacExtended(); // use MAC_EXTENDED //->setSigningSchemaMacAdvanced(); // use MAC_ADVANCED // ... // automatic fill data from $_POST or can be set by ->setResponseData(<array>) // ... $saleResponse->getResponseCode(); // return RC from response $saleResponse->getVerifiedData('<key from post request ex: RC>'); // return verified data from post by key $saleResponse->isSuccessful(); // RC === 00 and data is verified
响应代码表
交易状态检查
use VenelinIliev\Borica3ds\Enums\TransactionType; use VenelinIliev\Borica3ds\StatusCheckRequest; // ... $statusCheckRequest = (new StatusCheckRequest()) //->inDevelopment() ->setPrivateKey('\<path to certificate.key>', '<password / or use method from bottom>') ->setPublicKey('<path to public certificate.cer>') ->setTerminalID('<TID - V*******>') ->setOrder('<order>') ->setOriginalTransactionType(TransactionType::SALE()) // transaction type //->setSigningSchemaMacGeneral(); // use MAC_GENERAL //->setSigningSchemaMacExtended(); // use MAC_EXTENDED //->setSigningSchemaMacAdvanced(); // use MAC_ADVANCED //send to borica $statusCheckResponse = $statusCheckRequest->send(); // get data from borica response $verifiedResponseData = $statusCheckResponse->getResponseData(); // get field from borica response $statusCheckResponse->getVerifiedData('<field from response. ex: ACTION');
撤销请求
use VenelinIliev\Borica3ds\ReversalRequest; // ... $reversalRequest = (new ReversalRequest()) //->inDevelopment() ->setPrivateKey('\<path to certificate.key>', '<password / or use method from bottom>') ->setPublicKey('<path to public certificate.cer>') ->setTerminalID('<TID - V*******>') ->setAmount(123.32) ->setOrder(123456) ->setDescription('test reversal') ->setMerchantId('<MID - 15 chars>') ->setRrn('<RRN - Original transaction reference (From the sale response data)>') ->setIntRef('<INT_REF - Internal reference (From the sale response data)>') //->setSigningSchemaMacGeneral(); // use MAC_GENERAL //->setSigningSchemaMacExtended(); // use MAC_EXTENDED //->setSigningSchemaMacAdvanced(); // use MAC_ADVANCED //send reversal request to borica $reversalRequestResponse = $reversalRequest->send(); // get data from borica reversal response $verifiedResponseData = $reversalRequestResponse->getResponseData(); // get field from borica reversal response $reversalRequestResponse->getVerifiedData('STATUSMSG');
方法
设置环境
默认环境是 生产!
$saleRequest->setEnvironment(true); // set to production $saleRequest->setEnvironment(false); // set to development $saleRequest->inDevelopment(); // set to development $saleRequest->inProduction(); // set to production $saleRequest->isProduction(); // check is production environment? $saleRequest->isDevelopment(); // check is development environment?
测试用的信用卡
卡
在交易中根据金额获得相应结果的卡
待办事项
- laravel集成