brown-paper-tickets / bpt-api
A library for interacting with the Brown Paper Tickets API
Requires
- psr/log: ^1.0
Requires (Dev)
- monolog/monolog: 1.14.0
This package is not auto-updated.
Last update: 2024-11-09 17:55:58 UTC
README
The BptAPI library consists of a set of classes that enable you to easily interact with the Brown Paper Tickets API.
Since this library is still in early development, method names will possibly change. See CHANGELOG for more information on any breaking changes.
Install
Via Composer:
$ composer require brown-paper-tickets/bpt-api
.
(This will also install Monolog\Monolog as a dev dependency, if you don't need Monolog, add the --no-dev
flag to composer.)
Usage
See Usage.md for a brief intro. You can also checkout the api-example app for a more complete example.
Options
Currently there are three options that you can set: debug
, logErrors
and logger
.
You can set them either by passing in an $options
array as the second argument when you instantiate the classes or by using the setOption()
method.`
For example:
$logger = new \Monolog\Logger('logger'); $logger->pushHandler(new \Monolog\Handler\StreamHandler(__DIR__ . '/app.log', $logger::DEBUG)); $options = array( 'logger' => $logger, 'debug' => true, 'logErrors' => true, ); $info = new EventInfo(DEV_ID, $options);
$info->setOption('logger', $logger);
The Classes and Methods
The library contains the following classes:
AccountInfo
The AccountInfo class has a single method that will return info about the specified user.
getAccount($username)
Authorization Required: Yes
Returns This will return an array with the following fields:
CartInfo
Documentation Coming (View Source!)
EventInfo
Authorization Required: No The EventInfo class provides methods that allow you to obtain event data.
#####getEvents
Returns
This method returns an array of event arrays that contain the following fields:
ManageCart
Some methods will return a results array with two fields. The first is success
which is a bolean indicating whether or not it failed and a message
field explaining why.
initCart($cartID = null, $createdAt = null)
Starts a new cart session with Brown Paper Tickets. You can also pass in an existing cartID
and the time it was createdAt
. If the cart has expired it will return a results array with success
set to false
.
If successful, it will return a results array with success
set to true
as well as a cartID
and cartCreatedAt
field.
Returns
The newly created cartID
. This cart will expire after 15 minutes.
isExpired()
Determines whether or not the cartID
has expired.
getCartId()
Returns
The cartID
.
setAffiliateID($affiliateID)
Pass your affiliate ID if you want to earn a commission on the sale.
setPrices($prices)
Set the prices to send to the cart. Will return the set prices.
This does not update the actual cart (use sendPrices()
for that).
This will throw out any prices with an invalid shipping method and will determine whether or not will call names need to be required when adding shipping info.
Pass in an array of prices IDs. Each Price ID value should be set to an array with the following fields:
- Shipping Methods 1 for Physical, 2 for Will Call, 3 for Print at Home.
$prices = array( '12345' => array( 'shippingMethod' => 1, 'quantity' => 2, ), '12346' => array( 'shippingMethod' => 3, 'quantity' => 3 ) );
Returns an array of the set prices.
removePrices($prices)
Pass in an array of price IDs and it will remove the price IDs passed from the set prices. This does not update the actual cart (use sendPrices()
for that).
Returns An array of the set prices.
sendPrices()
Send the prices to the cart via the API.
Returns the results array.
getPrices()
Returns the prices set.
getValue()
Returns the current value of the cart as it was set when adding prices.
Note: When the class sets the value, it will determine whether or not certain fields are required for the billing info. See setShipping()
for more info.
setShipping($shipping)
Pass in an array of shipping information.
If you have selected tickets that require Will Call names, you can pass in a different name using the willCallFirstName
and willCallLastName
fields. Otherwise it will default to using the first and last name fields for will call names.
setBilling($billing)
Pass in an array of billing information.
Always pass these fields:
When the cart's value is greater than 0, you must also include the following fields. If you do not, then the cart will return the results array with the message ""
Returns a results array.
sendBilling(Array $ccInfo)
Sends the billing information to the cart.
When the cart's value is greater than 0, you must include the cc info array:
Once this has been called and is successful, you will no longer be able to sendPrices()
, sendShipping()
or sendBilling()
.
Returns a results array with the following fields:
getReceipt()
Returns the results received by the sendBilling()
method.
SalesInfo
Documentation Coming (View Source!)
Latest Changes
(See CHANGELOG for full set of changes)
v0.15.2
-
Added .gitattributes to prevent tests and other crap from being downloaded with packagist.
-
Breaking Changes
- The ManageCart class no longer saves the credit card info to the object. You must now pass in the credit card info array to
MangeCart::sendBilling
method rather thanManageCart::setBilling
as was done before.
- The ManageCart class no longer saves the credit card info to the object. You must now pass in the credit card info array to
v0.15.1
- Fixed
__construct
logger option
v0.15.0
- Added ability to capture all requests sent to the API and the raw response. Add
'debug' => true
to theoptions
arrays upon instantiation or usesetOption('debug', true)
. - Added
setLogger()
method that accepts a PSR-3 compatible logger (i.e. Monolog). You can also pass it in in theoptions
array when instantiating.
v0.14.2
- Fixed issue with the order field in getPrices.
License
The MIT License (MIT)
Copyright (c) 2015 Brown Paper Tickets
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.