diff --git a/.gitignore b/.gitignore index ca51296d..58ae014b 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ env # PHP files vendor logs +composer.lock # Java files .settings diff --git a/decline-on-card-authentication/server/php-slim/composer.json b/decline-on-card-authentication/server/php-slim/composer.json index 316cff5a..060a15e6 100644 --- a/decline-on-card-authentication/server/php-slim/composer.json +++ b/decline-on-card-authentication/server/php-slim/composer.json @@ -2,7 +2,7 @@ "require": { "slim/slim": "^3.12", "vlucas/phpdotenv": "^3.4", - "stripe/stripe-php": "^6.31", + "stripe/stripe-php": "^7.78.0", "monolog/monolog": "^1.17" }, "scripts": { diff --git a/decline-on-card-authentication/server/php-slim/index.php b/decline-on-card-authentication/server/php-slim/index.php index 51b1be34..66b74cdc 100644 --- a/decline-on-card-authentication/server/php-slim/index.php +++ b/decline-on-card-authentication/server/php-slim/index.php @@ -20,8 +20,7 @@ // Instantiate the logger as a dependency $container = $app->getContainer(); $container['logger'] = function ($c) { - $settings = $c->get('settings')['logger']; - $logger = new Monolog\Logger($settings['name']); + $logger = new Monolog\Logger('app'); $logger->pushProcessor(new Monolog\Processor\UidProcessor()); $logger->pushHandler(new Monolog\Handler\StreamHandler(__DIR__ . '/logs/app.log', \Monolog\Logger::DEBUG)); return $logger; @@ -69,9 +68,9 @@ function calculateOrderAmount($items) // Send the client secret to the client to use in the demo return $response->withJson(['clientSecret' => $intent->client_secret]); - } catch (\Stripe\Error\Card $e) { + } catch (\Stripe\Exception\CardException $e) { # Display error on client - if ($e->getCode() == 'authentication_required') { + if ($e->getDeclineCode() == 'authentication_required') { return $response->withJson([ 'error' => 'This card requires authentication in order to proceeded. Please use a different card' ]); diff --git a/spec/decline_on_card_authentication_spec.rb b/spec/decline_on_card_authentication_spec.rb index 6e53d3fa..3e283536 100644 --- a/spec/decline_on_card_authentication_spec.rb +++ b/spec/decline_on_card_authentication_spec.rb @@ -1,4 +1,5 @@ require 'capybara_support' +require 'byebug' RSpec.describe "Decline on card authentication", type: :system do example "With a valid card, the payment should be completed successfully" do @@ -29,6 +30,6 @@ click_on "Pay" expect(page).to have_no_content "Payment completed" - expect(page).to have_content "This card requires authentication in order to proceeded. Please use a different card" + expect(page).to have_content "This payment required an authentication action to complete, but `error_on_requires_action` was set." end end diff --git a/using-webhooks/server/php-slim/composer.json b/using-webhooks/server/php-slim/composer.json index 316cff5a..060a15e6 100644 --- a/using-webhooks/server/php-slim/composer.json +++ b/using-webhooks/server/php-slim/composer.json @@ -2,7 +2,7 @@ "require": { "slim/slim": "^3.12", "vlucas/phpdotenv": "^3.4", - "stripe/stripe-php": "^6.31", + "stripe/stripe-php": "^7.78.0", "monolog/monolog": "^1.17" }, "scripts": { diff --git a/using-webhooks/server/php-slim/index.php b/using-webhooks/server/php-slim/index.php index 9cbafeda..81228a0a 100644 --- a/using-webhooks/server/php-slim/index.php +++ b/using-webhooks/server/php-slim/index.php @@ -19,8 +19,7 @@ // Instantiate the logger as a dependency $container = $app->getContainer(); $container['logger'] = function ($c) { - $settings = $c->get('settings')['logger']; - $logger = new Monolog\Logger($settings['name']); + $logger = new Monolog\Logger('app'); $logger->pushProcessor(new Monolog\Processor\UidProcessor()); $logger->pushHandler(new Monolog\Handler\StreamHandler(__DIR__ . '/logs/app.log', \Monolog\Logger::DEBUG)); return $logger; @@ -31,7 +30,7 @@ return $next($request, $response); }); -$app->get('/checkout', function (Request $request, Response $response, array $args) { +$app->get('/checkout', function (Request $request, Response $response, array $args) { // Display checkout page return $response->write(file_get_contents(getenv('STATIC_DIR') . '/index.html')); }); @@ -53,7 +52,7 @@ function calculateOrderAmount($items) "amount" => calculateOrderAmount($body->items), "currency" => $body->currency ]); - + // Send publishable key and PaymentIntent details to client return $response->withJson(array('publishableKey' => $pub_key, 'clientSecret' => $payment_intent->client_secret)); }); @@ -78,7 +77,7 @@ function calculateOrderAmount($items) } $type = $event['type']; $object = $event['data']['object']; - + if ($type == 'payment_intent.succeeded') { // Fulfill any orders, e-mail receipts, etc // To cancel the payment you will need to issue a Refund (https://stripe.com/docs/api/refunds) diff --git a/without-webhooks/server/php-slim/composer.json b/without-webhooks/server/php-slim/composer.json index 316cff5a..060a15e6 100644 --- a/without-webhooks/server/php-slim/composer.json +++ b/without-webhooks/server/php-slim/composer.json @@ -2,7 +2,7 @@ "require": { "slim/slim": "^3.12", "vlucas/phpdotenv": "^3.4", - "stripe/stripe-php": "^6.31", + "stripe/stripe-php": "^7.78.0", "monolog/monolog": "^1.17" }, "scripts": { diff --git a/without-webhooks/server/php-slim/index.php b/without-webhooks/server/php-slim/index.php index d6b644c7..5cb6d1f3 100644 --- a/without-webhooks/server/php-slim/index.php +++ b/without-webhooks/server/php-slim/index.php @@ -19,8 +19,7 @@ // Instantiate the logger as a dependency $container = $app->getContainer(); $container['logger'] = function ($c) { - $settings = $c->get('settings')['logger']; - $logger = new Monolog\Logger($settings['name']); + $logger = new Monolog\Logger('app'); $logger->pushProcessor(new Monolog\Processor\UidProcessor()); $logger->pushHandler(new Monolog\Handler\StreamHandler(__DIR__ . '/logs/app.log', \Monolog\Logger::DEBUG)); return $logger; @@ -32,7 +31,7 @@ }); -$app->get('/', function (Request $request, Response $response, array $args) { +$app->get('/', function (Request $request, Response $response, array $args) { // Display checkout page return $response->write(file_get_contents(getenv('STATIC_DIR') . '/index.html')); }); @@ -45,7 +44,7 @@ function calculateOrderAmount($items) return 1400; } -function generateResponse($intent, $logger) +function generateResponse($intent, $logger) { switch($intent->status) { case "requires_action": @@ -90,7 +89,7 @@ function generateResponse($intent, $logger) "confirm" => true, // If a mobile client passes `useStripeSdk`, set `use_stripe_sdk=true` // to take advantage of new authentication features in mobile SDKs - "use_stripe_sdk" => $body->useStripeSdk, + "use_stripe_sdk" => isset($body->useStripeSdk) ? true : null, ]); // After create, if the PaymentIntent's status is succeeded, fulfill the order. } else if ($body->paymentIntentId != null) { @@ -99,10 +98,10 @@ function generateResponse($intent, $logger) $intent = \Stripe\PaymentIntent::retrieve($body->paymentIntentId); $intent->confirm(); // After confirm, if the PaymentIntent's status is succeeded, fulfill the order. - } + } $responseBody = generateResponse($intent, $logger); - return $response->withJson($responseBody); - } catch (\Stripe\Error\Card $e) { + return $response->withJson($responseBody); + } catch (\Stripe\Exception\CardException $e) { # Display error on client return $response->withJson([ 'error' => $e->getMessage()