From 151f9c0ffce7f58344faa6c0282d754ccc4f92ca Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 15 Aug 2018 09:40:26 +0100 Subject: [PATCH] Add post --- ...-commerce-fixing-error-on-user-checkout.md | 82 ++++++++++++++++++ .../commerce-stripe-error/remote-id-table.png | Bin 0 -> 38006 bytes 2 files changed, 82 insertions(+) create mode 100644 source/_posts/2018-08-15-drupal-8-commerce-fixing-error-on-user-checkout.md create mode 100644 source/assets/images/blog/commerce-stripe-error/remote-id-table.png diff --git a/source/_posts/2018-08-15-drupal-8-commerce-fixing-error-on-user-checkout.md b/source/_posts/2018-08-15-drupal-8-commerce-fixing-error-on-user-checkout.md new file mode 100644 index 00000000..3b3cf57a --- /dev/null +++ b/source/_posts/2018-08-15-drupal-8-commerce-fixing-error-on-user-checkout.md @@ -0,0 +1,82 @@ +--- +title: "Drupal 8 Commerce: Fixing 'No Such Customer' error on checkout" +tags: + - drupal + - drupal-8 + - drupal-commerce + - stripe +--- +{% block excerpt %} +Recently I was experiencing an issue on the Drupal 8 website I’m working on, where a small number of users were not able to complete the checkout process and instead got a generic `The site has encountered an unexpected error` message. + +Looking at the log, I was able to see the error being thrown (the customer ID has been redacted): +{% endblock %} + +{% block content %} +> Stripe\Error\InvalidRequest: No such customer: cus_xxxxxxxxxxxxxx in Stripe\ApiRequestor::_specificAPIError() (line 124 of /var/www/vendor/stripe/stripe-php/lib/ApiRequestor.php). + +Logging in to the Stripe account, I was able to confirm that the specified customer ID did not exist. So where was it coming from, and why was Drupal trying to retrieve a non-existent customer? + +## Investigation + +After some investigation, I found a table in the database named `user__commerce_remote_id` which stores the remote customer ID for each payment method (again, the customer ID has been redacted). + +![A screenshot of a row in the user__commerce_remote_id table](/assets/images/blog/commerce-stripe-error/remote-id-table.png){.border.p-1} + +The `entity_id` and `revision_id` values in this case refer to the user that the Stripe customer has been associated with. + +As there was no customer in Stripe with this ID, I think that this must be a customer ID from the test environment (the data from which was deleted before the site went live). + +### Drupal code + +This I believe is the Drupal code where the error was being triggered: + +```language-php +// modules/contrib/commerce_stripe/src/Plugin/Commerce/PaymentGateway/Stripe.php + +public function createPayment(PaymentInterface $payment, $capture = TRUE) { + ... + + $owner = $payment_method->getOwner(); + if ($owner && $owner->isAuthenticated()) { + $transaction_data['customer'] = $this->getRemoteCustomerId($owner); + } + + try { + $result = \Stripe\Charge::create($transaction_data); + ErrorHelper::handleErrors($result); + } + catch (\Stripe\Error\Base $e) { + ErrorHelper::handleException($e); + } + + ... +} +``` + +### Stripe code + +I can also see in the Stripe library where the original error is generated. + +```language-php +private static function _specificAPIError($rbody, $rcode, $rheaders, $resp, $errorData) +{ + $msg = isset($errorData['message']) ? $errorData['message'] : null; + $param = isset($errorData['param']) ? $errorData['param'] : null; + $code = isset($errorData['code']) ? $errorData['code'] : null; + + switch ($rcode) { + ... + + case 404: + return new Error\InvalidRequest($msg, $param, $rcode, $rbody, $resp, $rheaders); + + ... + } +} +``` + +## Solution + +After confirming that it was the correct user ID, simply removing that row from the database allowed the new Stripe customer to be created and for the user to check out successfullly. +{% endblock %} diff --git a/source/assets/images/blog/commerce-stripe-error/remote-id-table.png b/source/assets/images/blog/commerce-stripe-error/remote-id-table.png new file mode 100644 index 0000000000000000000000000000000000000000..708e394ca78c743d19f07fdbba6ba741f9199c4f GIT binary patch literal 38006 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 yrBQ@ z^WrL=ysh(pS?tU2|MLB(?1^$sHvt)mq9))7?V8mN-41VdEjxM&Y4+!ZC8M!G^o7P7 zW{1|T)=Qqiv~jf_3%3$*0&6Y@@Y+@3^J!21-->!>{a2?w5W z72JIJ?AK%~_{hD(dX6{moZP(grwd=ae*051(8?Un#;4Q!PwJM-kUnK`Zu46J88T^vJVR1dG;n`^rv+qwRi zQsGJcJG!@jnE{XU;MHZ)b_Y&TSqbg<(Pcm3$%PGns?Hz%#b|Q2t}E!w{%E^0(YMLQ zs{5Q78i9pXMpMFd{+-V7DXkkRjZ>exo_u=#<#F@(dGF_P&YlxL31l23U^tcmXR#8l zaqq-2kto3V$F1X(Qy@|>qRaz2Z~-UDQnpUe#4$-W8ECx0Rkc(cb8NKMeqbB$n9SCd zHdAm;q|RXoKf<=o>jaL8$`;T><&CT