クラス
Create
ソース ソース
ファイル: src/API/CheckoutSession/Create.php
class Create
{
/**
* Key of checkout session ID returned by `createCheckoutSession`
*/
const CHECKOUT_SESSION_ID_KEY = 'checkoutSessionId';
/**
* AmazonPay module object
*
* @var AmazonPay
*/
private $module;
/**
* Redirect URL for checkout review page
*
* @var string
*/
private $checkoutReviewUrl;
/**
* Sets `$module` member var with dependency injection.
*
* @author Evan D Shaw <evandanielshaw@gmail.com>
* @param AmazonPay $module
* @param string $checkoutReviewUrl
* @return void
*/
public function __construct(AmazonPay $module, $checkoutReviewUrl) {
$this->module = $module;
$this->checkoutReviewUrl = $checkoutReviewUrl;
}
/**
* Creates a new checkout session
*
* @see https://amazonpaycheckoutintegrationguide.s3.amazonaws.com/amazon-pay-api-v2/checkout-session.html#create-checkout-session
* @author Evan D Shaw <evandanielshaw@gmail.com>
* @return array
* @throws InvalidArgumentException Thrown by `getAmazonClient`.
*/
public function post() {
$opts = $this->module->getActingOpts();
$payload = [
'webCheckoutDetails' => [
'checkoutReviewReturnUrl' => $this->checkoutReviewUrl,
],
'platformId' => Constants::PLATFORM_ID,
'storeId' => $opts['client_id'],
];
$headers = ['x-amz-pay-Idempotency-Key' => uniqid()];
try {
$client = $this->module->getAmazonClient();
// call `generateButtonSignature` so that an error is thrown if the merchant's
// public/private key pair is not correct
$client->generateButtonSignature($payload);
$result = $client->createCheckoutSession($payload, $headers);
if ($this->module->errors->hasError($result)) {
return $this->module->errors->getAmzErrorResponse($result);
}
} catch (\Exception $e) {
return $this->module->errors->getErrorResponse(
GenericErrorStore::AMAZON_PAY_SDK_CLIENT_EXCEPTION,
[$e->getMessage()]
);
}
return json_decode($result['response'], true)['checkoutSessionId'];
}
}
- __construct — Sets `$module` member var with dependency injection.
- post — Creates a new checkout session