phpbook/payment
Composer 安装命令:
composer require phpbook/payment
包简介
PHP Payment Library For MundiPAGG, PagarMe
README 文档
README
About Payment
- A lightweight Payment Gateway PHP library available for PagarMe and MundiPagg.
Composer Install
composer require phpbook/payment
Declare Configurations
/******************************************** * * Declare Configurations * * ******************************************/ //Driver gateway PagarMe \PHPBook\Payment\Configuration\Payment::setGateway('main', (new \PHPBook\Payment\Configuration\Gateway) ->setName('Main') ->setExceptionCatcher(function(String $message) { //the PHPBook Payment does not throw exceptions, but you can take it here //you can store $message in database or something else }) ->setDriver((new \PHPBook\Payment\Driver\PagarMe)->setKey('key')->setKeyVersion('v2017-08-28')) ); //Driver gateway MundiPagg \PHPBook\Payment\Configuration\Payment::setGateway('backups', (new \PHPBook\Payment\Configuration\Gateway) ->setName('Backups') ->setExceptionCatcher(function(String $message) { //the PHPBook Payment does not throw exceptions, but you can take it here //you can store $message in database or something else }) ->setDriver((new \PHPBook\Payment\Driver\MundiPagg)->setKey('key')) ); //Set default gateway by gateway code \PHPBook\Payment\Configuration\Payment::setDefault('main'); //Getting gateways $gateways = \PHPBook\Payment\Configuration\Payment::getGateways(); foreach($gateways as $code => $gateway) { $gateway->getName(); $gateway->getDriver(); }; ?>
Transactions
/************************************************* * * Create Customer * You cannot update customer here, only create * * ***********************************************/ $customer = (new \PHPBook\Payment\Customer) ->setToken(null) //gateway defines when create ->setName('Jhon Doe') ->setEmail('jhon@email.com') ->setIdentity('16815587002') ->setPhone('999999999') ->setPhoneLocal('47') ->setPhoneCountry('55'); //getting customer attributes $customer->getToken(); $customer->getName(); $customer->getEmail(); $customer->getIdentity(); $customer->getPhone(); $customer->getPhoneLocal(); $customer->getPhoneCountry(); (new \PHPBook\Payment\Transaction\Customer\Create) ->setCustomer($customer) ->create(); //filled when customer is successfully created if ($customer->getToken()) { //$customer }; /************************************************* * * Get Customer By Token * * ***********************************************/ $customerToken = '0001'; $customer = (new \PHPBook\Payment\Transaction\Customer\Get) ->setToken($customerToken) ->get(); //filled with customer if ($customer) { //$customer }; /************************************************* * * Create Card * You cannot update card here, only create * * ***********************************************/ $number = '000000000000'; $cvv = '123'; $name = 'JHON DOE'; $month = '01'; $year = '20'; $cardToken = (new \PHPBook\Payment\Transaction\Card\Create) ->setCustomerToken($customerToken) ->setCard($number, $cvv, $name, $month, $year) ->create(); //filled when card is successfully created if ($cardToken) { //$cardToken }; /************************************************* * * Create Charge * You cannot update charge here, only create * * ***********************************************/ /********************************************************/ /* Create Charge with Created Customer and Created Card */ /********************************************************/ $customerToken = '0001'; $cardToken = '0001'; $chargeMeta = 'billing-10'; $chargePriceCents = 100; $chargeShippingAddressStreet = 'Praça Gov. Irineu Bornhausen'; $chargeShippingAddressNumber = '100'; $chargeShippingAddressNeighborhood = 'Centro'; $chargeShippingAddressZipCode = '88310000'; $chargeShippingAddressCity = 'Itajaí'; $chargeShippingAddressState = 'SC'; $chargeShippingAddressCountry = 'BR'; $customer = (new \PHPBook\Payment\Transaction\Customer\Get) ->setToken($customerToken) ->get(); //if you need you can update customer informations in the gateway $customer->setName('name'); $charge = (new \PHPBook\Payment\Charge) ->setToken(null) //gateway defines when create ->setMeta($chargeMeta) ->setPriceCents($chargePriceCents) ->setShippingAddressStreet($chargeShippingAddressStreet) ->setShippingAddressNumber($chargeShippingAddressNumber) ->setShippingAddressNeighborhood($chargeShippingAddressNeighborhood) ->setShippingAddressZipCode($chargeShippingAddressZipCode) ->setShippingAddressCity($chargeShippingAddressCity) ->setShippingAddressState($chargeShippingAddressState) ->setShippingAddressCountry($chargeShippingAddressCountry); (new \PHPBook\Payment\Transaction\Charge\Create) ->setCustomer($customer) ->setCardToken($cardToken) ->setCharge($charge) ->create(); //filled when charge is successfully created if ($charge->getToken()) { $charge->getStatus(); //filled with new status }; /****************************************************/ /* Create Charge with Created Customer and New Card */ /****************************************************/ $customerToken = '0001'; $cardNumber = '000000000000'; $cardCvv = '123'; $cardName = 'JHON DOE'; $cardMonth = '01'; $cardYear = '20'; $chargeMeta = 'billing-10'; $chargePriceCents = 100; $chargeShippingAddressStreet = 'Praça Gov. Irineu Bornhausen'; $chargeShippingAddressNumber = '100'; $chargeShippingAddressNeighborhood = 'Centro'; $chargeShippingAddressZipCode = '88310000'; $chargeShippingAddressCity = 'Itajaí'; $chargeShippingAddressState = 'SC'; $chargeShippingAddressCountry = 'BR'; $customer = (new \PHPBook\Payment\Transaction\Customer\Get) ->setToken($customerToken) ->get(); $cardToken = (new \PHPBook\Payment\Transaction\Card\Create) ->setCustomerToken($customerToken) ->setCard($cardNumber, $cardCvv, $cardName, $cardMonth, $cardYear) ->create(); //filled when card is successfully created if ($cardToken) { //if you need you can update customer informations in the gateway $customer->setName('name'); $charge = (new \PHPBook\Payment\Charge) ->setToken(null) //gateway defines when create ->setMeta($chargeMeta) ->setPriceCents($chargePriceCents) ->setShippingAddressStreet($chargeShippingAddressStreet) ->setShippingAddressNumber($chargeShippingAddressNumber) ->setShippingAddressNeighborhood($chargeShippingAddressNeighborhood) ->setShippingAddressZipCode($chargeShippingAddressZipCode) ->setShippingAddressCity($chargeShippingAddressCity) ->setShippingAddressState($chargeShippingAddressState) ->setShippingAddressCountry($chargeShippingAddressCountry); (new \PHPBook\Payment\Transaction\Charge\Create) ->setCustomer($customer) ->setCardToken($cardToken) ->setCharge($charge) ->create(); //filled when charge is successfully created if ($charge->getToken()) { $charge->getStatus(); //filled with new status }; }; /************************************************/ /* Create Charge with New Customer and New Card */ /************************************************/ $name = 'Jhon Doe'; $email = 'jhon@email.com'; $identity = '01684848421'; $phone = '999999999999'; $phoneLocal = '47'; $phoneCountry = '55'; $cardNumber = '000000000000'; $cardCvv = '123'; $cardName = 'JHON DOE'; $cardMonth = '01'; $cardYear = '20'; $chargeMeta = 'billing-10'; $chargePriceCents = 100; $chargeShippingAddressStreet = 'Praça Gov. Irineu Bornhausen'; $chargeShippingAddressNumber = '100'; $chargeShippingAddressNeighborhood = 'Centro'; $chargeShippingAddressZipCode = '88310000'; $chargeShippingAddressCity = 'Itajaí'; $chargeShippingAddressState = 'SC'; $chargeShippingAddressCountry = 'BR'; $customer = (new \PHPBook\Payment\Customer) ->setToken(null) //gateway defines when create ->setName($name) ->setEmail($email) ->setIdentity($identity) ->setPhone($phone) ->setPhoneLocal($phoneLocal) ->setPhoneCountry($phoneCountry); (new \PHPBook\Payment\Transaction\Customer\Create) ->setCustomer($customer) ->create(); //filled when customer is successfully created if ($customer->getToken()) { $cardToken = (new \PHPBook\Payment\Transaction\Card\Create) ->setCustomerToken($customer->getToken()) ->setCard($cardNumber, $cardCvv, $cardName, $cardMonth, $cardYear) ->create(); //filled when card is successfully created if ($cardToken) { $charge = (new \PHPBook\Payment\Charge) ->setToken(null) //gateway defines when create ->setMeta($chargeMeta) ->setPriceCents($chargePriceCents) ->setShippingAddressStreet($chargeShippingAddressStreet) ->setShippingAddressNumber($chargeShippingAddressNumber) ->setShippingAddressNeighborhood($chargeShippingAddressNeighborhood) ->setShippingAddressZipCode($chargeShippingAddressZipCode) ->setShippingAddressCity($chargeShippingAddressCity) ->setShippingAddressState($chargeShippingAddressState) ->setShippingAddressCountry($chargeShippingAddressCountry); (new \PHPBook\Payment\Transaction\Charge\Create) ->setCustomer($customer) ->setCardToken($cardToken) ->setCharge($charge) ->create(); //filled when charge is successfully created if ($charge->getToken()) { $charge->getStatus(); //filled with new status }; }; }; /************************************************* * * Working With Charge Attributes and Status * * ***********************************************/ $charge->getToken(); $charge->getMeta(); $charge->getPriceCents(); $charge->getShippingAddressStreet(); $charge->getShippingAddressNumber(); $charge->getShippingAddressNeighborhood(); $charge->getShippingAddressZipCode(); $charge->getShippingAddressCity(); $charge->getShippingAddressState(); $charge->getShippingAddressCountry(); switch($charge->getStatus()) { case \PHPBook\Payment\Charge::$STATUS_COMPLETE: //complete break; case \PHPBook\Payment\Charge::$STATUS_WAITING: //waiting break; case \PHPBook\Payment\Charge::$STATUS_DENY: //deny break; case \PHPBook\Payment\Charge::$STATUS_REFUNDED: //refunded break; case \PHPBook\Payment\Charge::$STATUS_IDLE: //initial status break; }; /************************************************* * * Get Charge By Token * * ***********************************************/ $chargeToken = '00001'; $charge = (new \PHPBook\Payment\Transaction\Charge\Get) ->setToken($chargeToken) ->get(); /************************************************* * * Get List of Charges By Meta * * ***********************************************/ $meta = 'billing-10'; $charges = (new \PHPBook\Payment\Transaction\Charge\Meta\Get) ->setMeta($meta) ->get(); /************************************************* * * Refund Charge * * ***********************************************/ $chargeToken = '00001'; $charge = (new \PHPBook\Payment\Transaction\Charge\Get) ->setToken($chargeToken) ->get(); (new \PHPBook\Payment\Transaction\Charge\Refund) ->setCharge($charge) ->refund(); $charge->getStatus(); //filled with new status. You should expect the refunded status
phpbook/payment 适用场景与选型建议
phpbook/payment 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 13 次下载、GitHub Stars 达 1, 最近一次更新时间为 2018 年 06 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「payment」 「lightweight」 「gateway」 「fast」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 phpbook/payment 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 phpbook/payment 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 phpbook/payment 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Splot Framework. Lightweight, fully featured framework for rapid web development.
Alfabank REST API integration
PHP View Library
PHP Console Library
Simple MVC framework for PHP 7.1.0 and later
PHP SMS Library For NEXMO, PLIVO, TWILIO
统计信息
- 总下载量: 13
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-06-14