b24io / loyalty-php-sdk
B24io.Loyalty: PHP-SDK for bonus cards and loyalty program for Bitrix24
Requires
- php: 7.4.*|8.*
- ext-curl: *
- ext-json: *
- crell/api-problem: ^3.0
- eloquent/enumeration: ^5.1
- fig/http-message-util: 1.*
- giggsey/libphonenumber-for-php: ^8.12
- guzzlehttp/guzzle: 6.*
- moneyphp/money: ^3.3
- monolog/monolog: 1.*
- psr/log: ^1.0
- ramsey/uuid: 4.*
- symfony/http-foundation: 5.4.*
Requires (Dev)
- phpunit/phpunit: 9.*
This package is auto-updated.
Last update: 2024-03-26 07:57:21 UTC
README
Loyalty PHP SDK is a tool for work with REST-API Bitrix24 Application Loyalty Program and bonus cards for Bitrix24 CRM
- Loyalty app adds bonus card for Bitrix24 client profile in CRM
- Loyalty app support transactions for payment and accrual operations
- store percentage of discount
- operations with cards: create, read, delete, block
Documentation
Who uses loyalty PHP SDK
- B2C companies who works with customers and grow they LTV
- HoReCa companies such us fast food or restaurants
How it works
Domain entities
In loyalty-php-sdk available domain entities from application with DTO (data transfer objects).
Cards
Loyalty card object:
number
- card numberbarcode
- card barcodestatus
- card status enumeration (active, blocked or deleted)user
- card owner user idbalance
- card balance with php-money objectpercentage
- card percentagecreated
- card date createmodified
- card date modifieduuid
- card universally unique identifier
Transactions
Transactions - accrual or payment operation with card balance
Transaction object:
value
- transaction amount with php-money objectoperationId
- internal operation id, read onlytype
- payment or accrual transactioncardNumber
- card numbercreated
- transaction date createreason
- transaction reason with comment
Turnovers
Turnover object:
modified
- last operation datetotalPurchasesSum
- total purchases sum for cardtotalPurchasesCount
- total purchases count for card
OperationsJournal
Operations journal with card - it's read only log with card state history
Operation objects implements operation interface:
Uuid
- operation uuidOperationType
- enumeration of operation types ()CardUuid
- card uuidUserId
- user idTimestamp
- operation timestampReason
- operation reason
Operation types
accrual_transaction
- accrual transactionpayment_transaction
- payment transactioncreate_card
- card createblock_card
- block cardunblock_card
- unblock carddelete_card
- delete carddecrement_percent
- decrement percent on cardincrement_percent
- increment percent on cardpurchase
- purchase registrationb24_deal_monetary_discount_payment_trx
- Bitrix24 deal partial payment with monetary discountb24_deal_percentage_discount_payment_trx
- Bitrix24 deal partial payment with percentage discount
Metrics
Metrics describe operational parameters loyalty application
Metric object:
uuid
- metric uuidname
- metric namedescription
- metric descriptioncode
- metric codetype
- metric type enumeration: INTEGER, FLOAT, MONEY, PERCENTAGEcreated
- metric created date time
Bitrix24 Contacts
Bitrix24 Loyalty application do not store contacts, app fetch Bitrix24 contacts in realtime with each API-request.
Contact object:
contactId
- Bitrix24 contact idname
- namesecondName
- second namelastName
- last namebirthday
- contact birthdaycomments
- comments about contactcreated
- contact date createmodified
- contact date modifiedmobilePhone
- contact mobile phoneemail
- contact personal emailaddress
- contact addressoriginId
- origin identifieroriginatorId
- originator identifierutm
- utm labels for contact ads channel trackingsourceDescription
- source description
Installation
Via Composer
$ composer require b24io/loyalty-php-sdk
Requirements
Loyalty PHP SDK works with PHP 7.1 or above, need ext-json
and ext-curl
support
Authentication with admin and user roles
SDK can work with two roles:
admin
- can work with all cards in his Bitrix24 account and loyalty application instanceuser
- can work only with his card
Bitrix24 Application Loyalty Program and bonus cards work with many Bitrix24 accounts, each account has a CLIENT_API_KEY
If you want work in admin role you must use ADMIN_API_KEY
to sign queries.
$token = new SDK\Auth\DTO\Token( SDK\Transport\DTO\Role::initializeByCode('admin'), Uuid::fromString('CLIENT_API_KEY'), Uuid::fromString('ADMIN_API_KEY') );
If you want work with client role in JS you must use CLIENT_API_KEY
and CARD_UUID
as user API key.
Basic Usage
use \Monolog\Logger; use \B24io\Loyalty\SDK; use Ramsey\Uuid\Uuid; use GuzzleHttp\HandlerStack; use GuzzleHttp\Middleware; use GuzzleHttp\MessageFormatter; $log = new Logger('loyalty-php-sdk'); $log->pushHandler(new \Monolog\Handler\StreamHandler('loyalty-php-sdk-example.log', Logger::DEBUG)); $guzzleHandlerStack = HandlerStack::create(); $guzzleHandlerStack->push( Middleware::log( $log, new MessageFormatter(MessageFormatter::SHORT) ) ); $httpClient = new \GuzzleHttp\Client(); $log->info('loyalty.apiClient.start'); $token = new SDK\Auth\DTO\Token( SDK\Transport\DTO\Role::initializeByCode('admin'), Uuid::fromString('CLIENT_API_KEY'), Uuid::fromString('ADMIN_API_KEY') ); $apiClient = new SDK\ApiClient($apiEndpoint, $token, $httpClient, $log); $apiClient->setGuzzleHandlerStack($guzzleHandlerStack); $cardsTransport = SDK\Cards\Transport\Admin\Fabric::getCardTransport($apiClient, $log); $cardResponse = $cardsTransport->getCardByNumber(22222); $decimalMoneyFormatter = new \Money\Formatter\DecimalMoneyFormatter(new \Money\Currencies\ISOCurrencies()); var_dump($cardResponse->getCard()->getNumber()); var_dump($cardResponse->getCard()->getStatus()->getCode()); var_dump($decimalMoneyFormatter->format($cardResponse->getCard()->getBalance())); var_dump($cardResponse->getCard()->getPercentage()->format());
Documentation and examples
More complex examples and use cases you can see in folder examples
Submitting bugs and feature requests
Bugs and feature request are tracked on GitHub
Support
- Telegram chat with developers
- app@b24.io
Security
If you discover any security related issues, please contact us at app@b24.io
License
The MIT License (MIT). Please see License File for more information.