sunaoka / amazon-pay-api-sdk-php-laravel
Amazon Pay API SDK (PHP) for Laravel
Installs: 3 420
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: ^7.2 || ^8.0
- ext-json: *
- amzn/amazon-pay-api-sdk-php: ^2.0
- illuminate/support: ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0
Requires (Dev)
- orchestra/testbench: ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0
- phpstan/phpstan: ^1.9
This package is auto-updated.
Last update: 2024-11-03 02:09:03 UTC
README
This library is The Laravel Framework binding for amazon-pay-api-sdk-php.
Installation
composer require sunaoka/amazon-pay-api-sdk-php-laravel
Configurations
php artisan vendor:publish --tag=amazon-pay-config
The settings can be found in the generated config/amazon-pay.php
configuration file.
<?php return [ 'sandbox' => (bool)env('AMAZON_PAY_SANDBOX', true), 'merchant_id' => env('AMAZON_PAY_MERCHANT_ID'), 'store_id' => env('AMAZON_PAY_STORE_ID'), 'public_key_id' => env('AMAZON_PAY_PUBLIC_KEY_ID'), 'private_key' => env('AMAZON_PAY_PRIVATE_KEY'), 'region' => env('AMAZON_PAY_REGION'), 'language' => env('AMAZON_PAY_LANGUAGE'), 'currency_code' => env('AMAZON_PAY_CURRENCY_CODE'), 'algorithm' => env('AMAZON_PAY_ALGORITHM'), 'override_service_url' => env('AMAZON_PAY_OVERRIDE_SERVICE_URL'), 'proxy' => !empty(env('AMAZON_PAY_PROXY_HOST')) ? [ 'host' => env('AMAZON_PAY_PROXY_HOST'), 'port' => env('AMAZON_PAY_PROXY_PORT'), 'username' => env('AMAZON_PAY_PROXY_USERNAME'), 'password' => env('AMAZON_PAY_PROXY_PASSWORD'), ] : null, ];
Usage
# .env AMAZON_PAY_SANDBOX=true AMAZON_PAY_MERCHANT_ID=ABC123DEF456XY AMAZON_PAY_STORE_ID=amzn1.application-oa2-client.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx AMAZON_PAY_PUBLIC_KEY_ID=ABC123DEF456XYZ789IJK000 AMAZON_PAY_PRIVATE_KEY=keys/private.pem AMAZON_PAY_REGION=us AMAZON_PAY_LANGUAGE=en_US AMAZON_PAY_CURRENCY_CODE=USD
<?php $payload = [ 'storeId' => config('amazon-pay.store_id'), 'webCheckoutDetails' => [ 'checkoutReviewReturnUrl' => 'http://localhost/checkout/review', 'checkoutResultReturnUrl' => 'http://localhost/checkout/result', 'checkoutCancelUrl' => 'http://localhost/checkout/cancel', ], ]; $signature = \AmazonPay::generateButtonSignature($payload); $button = [ 'merchantId' => config('amazon-pay.merchant_id'), 'ledgerCurrency' => config('amazon-pay.currency_code'), 'sandbox' => config('amazon-pay.sandbox'), 'checkoutLanguage' => config('amazon-pay.language'), 'productType' => 'PayAndShip', 'placement' => 'Cart', 'createCheckoutSessionConfig' => [ 'payloadJSON' => $payload, 'signature' => $signature, 'publicKeyId' => config('amazon-pay.public_key_id'), 'algorithm' => config('amazon-pay.algorithm'), ], ];
<body> <div id="AmazonPayButton"></div> <script src="{{ \AmazonPay::getAmazonPayScript() }}"></script> <script type="text/javascript" charset="utf-8"> amazon.Pay.renderButton('#AmazonPayButton', @json($button)); </script> </body>
Testing
You may use the AmazonPay
facade's fake
method to apply the mock response.
<?php \AmazonPay::fake([ 'refundId' => 'S01-5105180-3221187-R022311', 'chargeId' => 'S01-5105180-3221187-C056351', 'refundAmount' => [ 'amount' => '14.00', 'currencyCode' => 'USD' ], 'softDescriptor' => 'Descriptor', 'creationTimestamp' => '20190714T155300Z', 'statusDetails' => [ 'state' => 'RefundInitiated', 'reasonCode' => null, 'reasonDescription' => null, 'lastUpdatedTimestamp' => '20190714T155300Z' ], 'releaseEnvironment' => 'Sandbox', ]); $payload = [ 'chargeId' => 'S01-5105180-3221187-C056351', 'refundAmount' => [ 'amount' => '14.00', 'currencyCode' => 'USD', ], 'softDescriptor' => 'Descriptor', ]; $response = \AmazonPay::createRefund($payload, []); $result = json_decode($response['response'], true); echo $result['refundId']; // S01-5105180-3221187-R022311