Checkout error
-
There’s a problem with checkout, whenever a user types in an unsuported CC brand info the checkout quicky loads but won’t process and there’s no error message nor log.
I’m using version 5.3.0
The page I need help with: [log in to see the link]
-
Hi there!
In this case, what happens exactly at the checkout? It just doesn’t load at all when you press the option for placing the order?
Also, can you confirm which is the credit card issuer that you are referring to as unsupported?
Apart from that, I would appreciate it if you could share your current System Status Report. You can get it by navigating to WP Admin > WooCommerce > Status. Once there, click on the “Get system report” button and then copy it by clicking on the “Copy for support” button.
Ok, i’m pasting the status report bellow this message.
Also here’s a video showing this behavior, i had to blur CC number to protect my customer data: https://www.youtube.com/watch?v=-z7PDoZP_NAThis behavior happend with these card brands: Hiper, Elo and Discover (on video)
### WordPress Environment ### WordPress address (URL): https://cursos.agromaislean.com.br Site address (URL): https://cursos.agromaislean.com.br WC Version: 5.5.2 REST API Version: ? 5.5.2 WC Blocks Version: ? 5.3.3 Action Scheduler Version: ? 3.2.1 WC Admin Version: ? 2.4.4 Log Directory Writable: ? WP Version: ? 5.7.2 - Há uma nova vers?o do WordPress disponível (5.8) WP Multisite: – WP Memory Limit: 512 MB WP Debug Mode: – WP Cron: ? Language: pt_BR External object cache: – ### Server Environment ### Server Info: LiteSpeed PHP Version: 7.4.16 PHP Post Max Size: 128 MB PHP Time Limit: 0 PHP Max Input Vars: 32132131 cURL Version: 7.71.0 OpenSSL/1.1.1d SUHOSIN Installed: – MySQL Version: 5.5.5-10.4.18-MariaDB-cll-lve Max Upload Size: 128 MB Default Timezone is UTC: ? fsockopen/cURL: ? SoapClient: ? DOMDocument: ? GZip: ? Multibyte String: ? Remote Post: ? Remote Get: ? ### Database ### WC Database Version: 5.5.2 WC Database Prefix: wp_ Tamanho total do banco de dados: 17.93MB Tamanho dos dados do banco de dados: 13.68MB Tamanho do índice do banco de dado: 4.25MB wp_woocommerce_sessions: Dados: 0.08MB + índex: 0.02MB + mecanismo InnoDB wp_woocommerce_api_keys: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_woocommerce_attribute_taxonomies: Dados: 0.02MB + índex: 0.02MB + mecanismo InnoDB wp_woocommerce_downloadable_product_permissions: Dados: 0.02MB + índex: 0.17MB + mecanismo InnoDB wp_woocommerce_order_items: Dados: 0.05MB + índex: 0.02MB + mecanismo InnoDB wp_woocommerce_order_itemmeta: Dados: 0.27MB + índex: 0.19MB + mecanismo InnoDB wp_woocommerce_tax_rates: Dados: 0.02MB + índex: 0.08MB + mecanismo InnoDB wp_woocommerce_tax_rate_locations: Dados: 0.02MB + índex: 0.05MB + mecanismo InnoDB wp_woocommerce_shipping_zones: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_woocommerce_shipping_zone_locations: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_woocommerce_shipping_zone_methods: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_woocommerce_payment_tokens: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_woocommerce_payment_tokenmeta: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_woocommerce_log: Dados: 0.02MB + índex: 0.02MB + mecanismo InnoDB wp_actionscheduler_actions: Dados: 0.28MB + índex: 0.39MB + mecanismo InnoDB wp_actionscheduler_claims: Dados: 0.02MB + índex: 0.02MB + mecanismo InnoDB wp_actionscheduler_groups: Dados: 0.02MB + índex: 0.02MB + mecanismo InnoDB wp_actionscheduler_logs: Dados: 0.20MB + índex: 0.14MB + mecanismo InnoDB wp_aioseo_notifications: Dados: 0.02MB + índex: 0.06MB + mecanismo InnoDB wp_aioseo_posts: Dados: 0.02MB + índex: 0.02MB + mecanismo InnoDB wp_commentmeta: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_comments: Dados: 0.09MB + índex: 0.09MB + mecanismo InnoDB wp_correios_postcodes: Dados: 0.02MB + índex: 0.02MB + mecanismo InnoDB wp_learndash_pro_quiz_category: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_learndash_pro_quiz_form: Dados: 0.02MB + índex: 0.02MB + mecanismo InnoDB wp_learndash_pro_quiz_lock: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_learndash_pro_quiz_master: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_learndash_pro_quiz_prerequisite: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_learndash_pro_quiz_question: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_learndash_pro_quiz_statistic: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_learndash_pro_quiz_statistic_ref: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_learndash_pro_quiz_template: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_learndash_pro_quiz_toplist: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_learndash_user_activity: Dados: 0.09MB + índex: 0.31MB + mecanismo InnoDB wp_learndash_user_activity_meta: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_links: Dados: 0.02MB + índex: 0.02MB + mecanismo InnoDB wp_ms_snippets: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_options: Dados: 4.27MB + índex: 0.16MB + mecanismo InnoDB wp_postmeta: Dados: 2.52MB + índex: 0.86MB + mecanismo InnoDB wp_posts: Dados: 1.52MB + índex: 0.13MB + mecanismo InnoDB wp_snippets: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_termmeta: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_terms: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_term_relationships: Dados: 0.02MB + índex: 0.02MB + mecanismo InnoDB wp_term_taxonomy: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_usermeta: Dados: 0.48MB + índex: 0.33MB + mecanismo InnoDB wp_users: Dados: 0.06MB + índex: 0.05MB + mecanismo InnoDB wp_vxc_sales_accounts: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_vxc_sales_log: Dados: 0.02MB + índex: 0.02MB + mecanismo InnoDB wp_wc_admin_notes: Dados: 0.05MB + índex: 0.00MB + mecanismo InnoDB wp_wc_admin_note_actions: Dados: 0.02MB + índex: 0.02MB + mecanismo InnoDB wp_wc_category_lookup: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_wc_customer_lookup: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_wc_download_log: Dados: 0.02MB + índex: 0.05MB + mecanismo InnoDB wp_wc_order_coupon_lookup: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_wc_order_product_lookup: Dados: 0.02MB + índex: 0.11MB + mecanismo InnoDB wp_wc_order_stats: Dados: 0.02MB + índex: 0.08MB + mecanismo InnoDB wp_wc_order_tax_lookup: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_wc_product_meta_lookup: Dados: 0.02MB + índex: 0.09MB + mecanismo InnoDB wp_wc_reserved_stock: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_wc_tax_rate_classes: Dados: 0.02MB + índex: 0.02MB + mecanismo InnoDB wp_wc_webhooks: Dados: 0.02MB + índex: 0.03MB + mecanismo InnoDB wp_woocommerce_exported_csv_items: Dados: 2.52MB + índex: 0.08MB + mecanismo InnoDB wp_wpforms_tasks_meta: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_wswebinars_chats: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_wswebinars_email_queue: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_wswebinars_notifications: Dados: 0.02MB + índex: 0.02MB + mecanismo InnoDB wp_wswebinars_questions: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_wswebinars_subscribers: Dados: 0.02MB + índex: 0.08MB + mecanismo InnoDB wp_wswebinars_unsubscribe: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_wt_iew_action_history: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_wt_iew_cron: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_wt_iew_ftp: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB wp_wt_iew_mapping_template: Dados: 0.02MB + índex: 0.00MB + mecanismo InnoDB ### Post Type Counts ### attachment: 40 custom_css: 1 customize_changeset: 25 elementor_library: 2 groups: 20 ldgr_group_code: 2 nav_menu_item: 3 page: 12 post: 8 product: 17 revision: 289 sfwd-assignment: 73 sfwd-courses: 6 sfwd-lessons: 20 sfwd-question: 2 sfwd-quiz: 4 sfwd-topic: 17 shop_coupon: 21 shop_order: 118 shop_order_refund: 4 shop_subscription: 46 wcp_ruleset: 2 wpws_page: 2 wswebinars: 1 ### Security ### Secure connection (HTTPS): ? Hide errors from visitors: ? ### Active Plugins (29) ### Advanced Custom Fields: por Delicious Brains – 5.9.9 Change WordPress Login Logo: por Boopathi Rajan – 1.1.6 Code Snippets: por Code Snippets Pro – 2.14.1 Conditional Payments for WooCommerce: por Lauri Karisola / WooElements.com – 2.2.3 Duplicate Page: por mndpsingh287 – 4.4.1 Elementor: por Elementor.com – 3.3.1 Envato Market: por Envato – 2.0.6 Import and export users and customers: por codection – 1.17.8.1 RD Station: por RD Station – 5.1.1 JetElements For Elementor: por Crocoblock – 2.5.8 Jupiter X Core: por Artbees – 1.22.2 LearnDash Group Registration: por WisdmLabs – 4.2.1 Learndash LMS - Lista de Cursos: por LearnDash – 1.7.0 LearnDash LMS - WooCommerce Integration: por LearnDash – 1.9.2 LiteSpeed Cache: por LiteSpeed Technologies – 3.6.4 WooCommerce maxiPago!: por maxiPago Smart Payments – 0.3.15 PDF Embedder: por Lever Technology LLC – 4.6.2 Really Simple SSL: por Really Simple Plugins – 5.0.6 LearnDash LMS: por LearnDash – 3.4.2.1 Video Conferencing with Zoom: por Deepen Bajracharya – 3.8.8 WooCommerce Salesforce Integration: por CRM Perks. – 1.5.7 Editor de campo de compra do WooCommerce: por WooCommerce – 1.6.0 Claudio Sanches - Correios for WooCommerce: por Claudio Sanches – 3.8.0 WooCommerce Customer/Order/Coupon Export: por SkyVerge – 5.3.2 Brazilian Market on WooCommerce: por Claudio Sanches – 3.7.2 Portal do Stripe para WooCommerce: por WooCommerce – 5.3.0 Pagar.me para WooCommerce: por Pagar.me Claudio Sanches – 2.5.0 WooCommerce Subscriptions: por WooCommerce – 3.1.3 WooCommerce: por Automattic – 5.5.2 ### Inactive Plugins (0) ### ### Settings ### API Enabled: – Force SSL: – Currency: BRL (R$) Currency Position: left Thousand Separator: , Decimal Separator: . Number of Decimals: 2 Taxonomies: Product Types: course (course) external (external) grouped (grouped) simple (simple) subscription (subscription) variable (variable) variable subscription (variable-subscription) Taxonomies: Product Visibility: exclude-from-catalog (exclude-from-catalog) exclude-from-search (exclude-from-search) featured (featured) outofstock (outofstock) rated-1 (rated-1) rated-2 (rated-2) rated-3 (rated-3) rated-4 (rated-4) rated-5 (rated-5) Connected to WooCommerce.com: – ### WC Pages ### Base da loja: #179 - /loja/ Carrinho: #180 - /carrinho/ Finalizar compra: #181 - /finalizar-compra/ Minha conta: #182 - /minha-conta/ Termos e condi??es: #3 - /termos-de-uso/ ### Theme ### Name: JupiterX Version: 1.25.1 Author URL: https://artbees.net/ Child Theme: ? – Recomendamos você utilizar um tema filho no caso de você estiver personalizando o WooCommerce em um tema ascendente. Veja como criar um tema filho WooCommerce Support: ? ### Templates ### Overrides: jupiterx/lib/templates/woocommerce/cart/cart.php jupiterx/lib/templates/woocommerce/checkout/payment-method.php jupiterx/lib/templates/woocommerce/checkout/payment.php jupiterx/lib/templates/woocommerce/checkout/thankyou.php jupiterx/lib/templates/woocommerce/content-product.php jupiterx/lib/templates/woocommerce/loop/rating.php jupiterx/lib/templates/woocommerce/order/order-details-item.php jupiterx/lib/templates/woocommerce/single-product/add-to-cart/grouped.php jupiterx/lib/templates/woocommerce/single-product/add-to-cart/simple.php jupiterx/lib/templates/woocommerce/single-product/add-to-cart/variable.php jupiterx/lib/templates/woocommerce/single-product/add-to-cart/variation-add-to-cart-button.php jupiterx/lib/templates/woocommerce/single-product/meta.php ### Assinaturas ### WCS_DEBUG: ? N?o Subscriptions Mode: ? Modo ao vivo Subscriptions Live URL: https://cursos.agromaislean.com.br Subscription Statuses: wc-active: 32 wc-pending-cancel: 1 wc-pending: 5 wc-on-hold: 4 wc-cancelled: 4 WooCommerce Account Connected: ? No Report Cache Enabled: ? Sim Cache Update Failures: ? 0 com falhas ### Configura??o da loja ### Country / State: Brasil — S?o Paulo ### Assinaturas por meio de gateways de pagamento ### other: wc-pending: 1 Stripe: wc-active: 21 wc-cancelled: 4 wc-on-hold: 4 wc-pending: 4 wc-pending-cancel: 1 ### Suporte ao gateway de pagamento ### Stripe: products refunds tokenization add_payment_method subscriptions subscription_cancellation subscription_suspension subscription_reactivation subscription_amount_changes subscription_date_changes subscription_payment_method_change subscription_payment_method_change_customer subscription_payment_method_change_admin multiple_subscriptions pre-orders ### WooCommerce Customer/Order/Coupon Export ### Automated exports: 1 Custom formats: 2 Next export: Scheduled on 4 de August de 2021 06:22 ### Action Scheduler ### Concluído: 907 Oldest: 2021-07-20 13:04:09 -0300 Newest: 2021-08-03 19:39:51 -0300 Pendente: 49 Oldest: 2021-08-04 01:21:51 -0300 Newest: 2021-12-02 15:04:12 -0300 ### Status report information ### Generated at: 2021-08-03 19:45:39 -03:00
- This reply was modified 3 years, 3 months ago by 3X Web Desenvolvimento Digital. Reason: missing info
Hi,
It looks like the payment plugin that is currently active on your live site is
WooCommerce maxiPago!: por maxiPago Smart PaymentsI am able to see that plugin give a proper error if I use a fake card detail. It is likely you have now enabled this plugin instead of Stripe, since it is a live website.
It sounds like a staging site would be a good idea to test things out without disturbing your live website. If your host doesn’t offer that option, we recommend WP Staging for quickly spinning up a new test site. On that site please enable only the Stripe plugin, and see if you are able to replicate the error.
Please enable logs on the site too, for Stripe plugin, and then share the logs you get there here for us to check what is going wrong.
Those are logs for 4 different days, we had at least one case of this reported error.
@nagpai first off, i would not be able to make such test with a customer card, second i’d hope you would recognize your own plugin checkout layout.
The plugin was disabled since it’s not working as intended, i can assure you that you won’t find anything registered on those logs, as i stated on my first message on this topic.
It seems it’s an error on front-end as your plugins does some checkout validations on a .js file, so it would probably log onto console.
As i do not have access to the customer console, i can only provide this much information.
Also a staging website won’t help, because i can only test on sandbox and can’t require or use a customer card info for legal reasons.
Hi @3xweb. Thanks for the logs. Looking through them, I’m seeing some errors for suspected fraud and insufficient funds, but those are fairly normal errors and wouldn’t be due to an unsupported card type. If you look in your Stripe dashboard (dashboard.stripe.com) and look at your failed transactions, do you see anything about unsupported card types there?
Hello @apmwebdev. Actually there’s are none, the plugin does not process the payment at all.
I’ve read your code for a while, i see there’s a helper funcion called get_supported_card_brands() inside class-wc-stripe-helper.php:326, but i cannot find any other call to this function beyond get_icon(), i’m not sure if this was supposed to wait for API response from Stripe to check for supported brands.
I would say you should validate the card brand before calling API for (i’m guessing) createSource().
I’ve checked Stripe Docs and i’m making a wild guess here, i see there’s support for a few as in the array bellow:
var brandClass = { 'visa': 'stripe-visa-brand', 'mastercard': 'stripe-mastercard-brand', 'amex': 'stripe-amex-brand', 'discover': 'stripe-discover-brand', 'diners': 'stripe-diners-brand', 'jcb': 'stripe-jcb-brand', 'unknown': 'stripe-credit-card-brand' };
When a certain unsupported brand is typed, an ‘unknown’ card is sent to validation inside the card object on “brand” string, then stripe’s validates this card (cc number + CVC + expire date) thus not returning an ‘card_error’ type error, and this may be causing this weird behavior.
What do you think?
- This reply was modified 3 years, 3 months ago by 3X Web Desenvolvimento Digital. Reason: formatting code
Hi there,
Card validation happens in Stripe. To avoid this issue, I’d recommend letting your customers know to use only cards that are supported in Stripe.
Feel free to get back to us in case you have any additional questions!
@thup90 are you telling me that your plugin which allows a customer to type in a unsupported card brand, as i show in the provided video, and is throwing and unknown and undocumented error solution is to warn my customers about it?
How does this logic works!? Did you read that before posting?
How about the few thousand BRL we have lost, and about the thousands other users of this plugin may be losing every day without knowing about this error?
Have you guys not heard about error preventing or usability heuristics at all?
I need support, this is the second attempt to close the thread with a shallow and ‘technical’ answer you guys should be ashamed of this disservice, i’m reporting this to woocommerce, automaticc and stripe directly, no wonder this is one of the worst evaluated plugins by woocommerce.
- This reply was modified 3 years, 3 months ago by 3X Web Desenvolvimento Digital. Reason: typo
Hi @3xweb
I appreciate the effort you’ve taken so far with providing so much detail, I hear you on the last comment, the error message should be presented from our plugin.
I’d like to summarise quickly so we’re not off track:
* You are (were) using oru Stripe payment gateway plugin to accept payments on your site.
* Customers are attempting to pay using a card brand that isn’t supported by Stripe
* “This behavior happend with these card brands: Hiper, Elo and Discover (on video)”
* The customer isn’t seeing any error message that the card isn’t supported
* Supported card brands can be found here – https://stripe.com/docs/payments/cards/supported-card-brands#card-brand-capabilitiesThe core of your query sounds like how handling of an unsupported card brand should show the customer, do I have that correct?
How about the few thousand BRL we have lost, and about the thousands other users of this plugin may be losing every day without knowing about this error?
Can you clarify how you are losing money? Do you mean lost revenue due to the transaction not being successful?
Thanks,
Hello @dougaitken,
Thank your for carefully reading this thread.
The core of your query sounds like how handling of an unsupported card brand should show the customer, do I have that correct?
Yes you are correct, it needs an error to inform customers about this, preventing them from proceeding with checkout, or at least presenting an error.
I’m also trying to inform about this problem, since it must been affecting other users as well, as in:
https://www.ads-software.com/support/topic/stripe-not-loading-in-strange-conditions/
And many others who are not yet aware.Can you clarify how you are losing money? Do you mean lost revenue due to the transaction not being successful?
A few customers reported this checkout behavior and gave up from buying on our store. Our products range from R$ 500 to R$ 3900.
@3xweb I archived your post with the Google drive links.
You are exposing your customer emails and other sensitive data. That can get you into trouble. The post is archived but deleted the Google drive copies.
Hi @3xweb,
I had a look at the log files and see the following reasons for payments that did not succeed:
[network_status] => declined_by_network
[reason] => insufficient_funds
[seller_message] => The bank returned the decline codeinsufficient_funds
.
[type] => issuer_declined[network_status] => not_sent_to_network
[reason] => highest_risk_level
[risk_level] => highest
[rule] => block_if_high_risk
[seller_message] => Stripe blocked this payment as too risky.
[type] => blockedDo these declines appear as an error at the top of the checkout page? It would look like this: https://d.pr/i/iCExXe
You can test these kinds of declines by placing the Stripe extension in Test Mode and using one of Stripe’s cards for declinations.
If an error doesn’t appear for these, a good next step is to do a conflict test to determine why that’s happening.
I know the problem you’ve described is an issue with the brand availability based on country, but Stripe doesn’t make that specific testing scenario available in their testing documentation, so it’s not something very easy to troubleshoot. I would expect at least a generic error to be presented to the customer in a red banner in that situation, even without specific text. I don’t see that in your video at all.
This is so tiresome.
I would expect at least a generic error to be presented to the customer in a red banner in that situation, even without specific text. I don’t see that in your video at all.
@tijosh sir, this is exactly the problem i’m reporting.
You can test these kinds of declines by placing the Stripe extension in Test Mode and using one of Stripe’s cards for declinations.
That would be great, but i don’t have any of these cards to test, and it’s a issue with production. Would you, as a customer, borrow your card data for some tests? Think about it.
If an error doesn’t appear for these, a good next step is to do a conflict test to determine why that’s happening.
The plugin works in all conditions except the one i’m describing, it’s not a compatibility issue.
I know the problem you’ve described is an issue with the brand availability based on country, but Stripe doesn’t make that specific testing scenario available in their testing documentation, so it’s not something very easy to troubleshoot. I would expect at least a generic error to be presented to the customer in a red banner in that situation, even without specific text. I don’t see that in your video at all.
Again, this is not what i’m reporting. There’s an untreated error happening, it returns nothing, the checkout just loads a bit and stop, as show in the video.
Hi @3xweb
I’m sorry this is taking a bit of time to work through. I’ll try and explain as best I can.
That would be great, but i don’t have any of these cards to test, and it’s a issue with production. Would you, as a customer, borrow your card data for some tests? Think about it.
When your gateway is in test mode, you can only use Stripe test card numbers to test it. For example,
4242 4242 4242 4242
is a test Visa card number, which will work correctly with and expiry date in the future, and any three digit CVV.Using the card number
4000000000000002
will return a declined card, while4000000000009995
will behave like a card with insufficient funds. The full list of stripe test cards can be found here.These include card numbers for successful international billing scenarios, and cards from different providers.
Regarding the lack of an error: if there is an error generated, it will be added to the checkout, unless there is a conflict with an existing plugin, or possibly the theme. To test whether this is the case, you should try disabling all plugins except WooCommerce and Stripe, and test checkout while using the Storefront Theme.
- The topic ‘Checkout error’ is closed to new replies.