gullevek / amazon-incentives
Amazon Gift Codes, Gift on Demand, Incentives
Installs: 9 285
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 2
Open Issues: 0
Requires
- php: >=7.4.0
Requires (Dev)
- dg/bypass-finals: dev-master
- gullevek/dotenv: dev-master
- phpstan/phpstan: 2.1.x-dev
- phpstan/phpstan-deprecation-rules: 2.0.x-dev
- phpunit/phpunit: ^9
README
This is a abastract from https://github.com/kamerk22/AmazonGiftCod to be not dependend on Laravel base code.
Amazon Gift Codes On Demand (AGCOD). Integration for Amazon Incentive API.
General Amazon Incentives Documentation
How to install
composer require gullevek/amazon-incentives
_ENV variables needed
Uses .env file to load configuration data
The below keys are searched in the _ENV file for loading
- AWS_GIFT_CARD_KEY
- AWS_GIFT_CARD_SECRET
- AWS_GIFT_CARD_PARTNER_ID
- AWS_GIFT_CARD_ENDPOINT
- AWS_GIFT_CARD_CURRENCY
- AWS_DEBUG (1/0)
How to use
The above _ENV variables must be set (Except AWS_DEBUG, defaults to off).
create gift card
use gullevek\AmazonIncentives\AmazonIncentives; // buy a gift card with a value $value = 500; $aws_gc = AmazonIncentives::make()->buyGiftCard((float)$value); // the two below are need if we want to cancel the card // get gift card id (gcID) $aws_gc->getId(); // get creation request id (creationRequestId) $aws_gc->getCreationRequestId(); // the one below must be printed to the user $aws_gc->getClaimCode(); // check status (SUCCESS/RESEND/FAILURE) $aws_gc->getStatus(); // others: // getAmount, getCurrency
Throttle Rates
Note that you can only send 10 requests per second. On a Throttle Excepion you need to wait about 10s to create another request.
Recommended to pool requests. Or check when last requests where sent and then process them.
On F400 errors
- try again
- if failed run cancel gift card
- if cance ok try create again with different request id
- if 2) failed, wait a view seconds and try again
- if 10s elapse, we need to wait a full day
- if >24h call Amazon
cancel gift card
// use getCreationRequestId() and getId() from request $aws_gc = gullevek\AmazonIncentives\AmazonIncentives::make()->cancelGiftCard($creation_request_id, $gift_card_id); // return is as above
check balance
$aws_gc = gullevek\AmazonIncentives\AmazonIncentives::make()->getAvailableFunds();
Exceptions
If the HTTPS request does not return 220 OK it will throw an exception.
The error code is the curl handler error code. The error message is json encoded array with the layout
Use
$exception_array = gullevek\AmazonIncentives\AmazonIncentives::decodeExceptionMessage($exception_message);
to extract the below array from the thrown exception
[ 'status' => 'AWS Status FAILURE or RESEND', 'code' => 'AWS Error Code Fnnn', 'type' => 'AWS Error info', 'message' => 'AWS long error message', 'log_id' => 'If logging is on the current log id', 'log' => 'The complete log collected over all calls', ]
status
, code
and type
must be checked on a failure.
Other Errors from exceptions
T001
if code is T001 then this is a request flood error: In this case the request has to be resend after a certain waiting period.
E999
if code is E999 some other critical error has happened
E001
if code is E001 if the return create/cancel/check calls is not an array
C001
fif code is C001 curl failed to init
C002
if code is C002 a curl error has happened
J-number
if a JSON error was encountered during some encoding this error will be found. The number is the json error code.
empty error code
any other NON amazon error will have only 'message' set if run through decode
Debugging
If AWS_DEBUG is set to 1 and internal array will be written with debug info.
The gulleek\AmazonIncentives\Debug\AmazonDebug class handles all this.
In the gulleek\AmazonIncentives\AmazonIncentives main class the debugger gets set
- setDebug that turns debugger on/off and if on sets unique id (getId to check)
New entries can be written with
AmazonDebug::writeLog(['foo' => 'bar']);
On sucessful run the log data is accessable with $aws->getLog()
On exception the log data is in the error message json (see exceptions)