Braintree Payment Gateway is enabled, but the force SSL option is disabled; your checkout may not be secure! Please enable SSL and ensure your server has a valid SSL certificate
- the plug-ins Enable this payment gateway option is off
- the plug-in is in Production mode (ie. Enable Sandbox mode is off) AND WooCommerce > Checkout > Force secure checkout option is set AND you are using HTTP instead HTTPs while on Checkout page. This situation should never happen, though.
- either the Braintree Merchant Id, the Public or the Private key are not set
For Drop-in/Hosted Fields UI we have found an workaround: when this is happening we intentionally select the first payment method (like Direct Bank Transfer) that is not (1) Braintree and (2) already selected. By doing that we force the buyer to select again its preferred payment method as soon as he/she is finishing editing the checkout form. A general workaround is to manually select another payment method and then select back this payment method.
Please note this is only a workaround until we find a way to cope with WooCommerce. Obviously we can override the WooCommerce behaviour but probably this is not the right way of doing it so until we find a safe method we go like this 🙁
Oops!… The payment gateway is not available
- invalid Braintree merchant Id and/or the public/private keys (make sure you use the Production keys on Production mode and Sandbox keys on Sandbox mode and not vice-versa)
- the plug-in is set on Production mode AND you are not using SSL AND Force Secure Checkout is set on the WooCommerce Checkout Options page (check also this)
The following request received without
payment_method_nonce
field. This should never happen! Try to clear your browser’s cache and see if that helps. This should never happen!
Why is that and how to fix it?
When your customer clicks the “Place Order” button within the Checkout page the plug-in sends, besides the order amount and other order details, that payment_method_nonce
field. Without this payment_method_nonce
field the Braintree Payment Gateway doesn’t know what card your customer are using for the current payment. Read how it works.
The request for the payment_method_nonce
field is done by using a JavaScript Client SDK library developed and provided by Braintree. The only logical reason for that field to not exist is when the JavaScript call either does not take place or generates an error on client’s browser. In order to debug what is going on please check that:
- there is no JavaScript error shown on the browser’s Console
- the following JavaScripts scripts are loaded within the client browser:
- woo-mynix-braintree-gateway-
VER
.js - woo-mynix-braintree-gateway-
VER
–UITYPE
.js whereVER
can be empty or pro andUITYPE
can be one of custom, paypal or hosted
- woo-mynix-braintree-gateway-
If for any reason (1) does not verify then check to see the source of the JavaScript errors. There might be other WordPress plug-ins and/or themes with broken code which might trigger these errors and thus might break the normal execution flow.
If for any reason (2) does not verify it means that one|all of the plug-in scripts is|are not loaded and|or executed and therefore Request received without payment_method_nonce field
error message. This might happen if you are using a CDN caching provider (like CloudFlare CDN) or some other caching plug-in. If that’s the case then try to disable the caching provider|plug-in for the Checkout page URL (or entirely) then check if that does the trick.
The order does not support PayPal button payment method.
Why is that and how to fix it?
The long answer (rather for the webshop merchant than for its customer) should start by saying that the above situation may only happen in relation with an Sandbox account
, the PayPal button
enabled and, eventually, some additional merchant IDs
defined.
First, make sure that the order currency is within the PayPal supported currencies. If the order currency is not supported then perhaps you should disable the the PayPal button or change your shop working currency. However, in the PRO version you may choose the PayPal conversion option which will convert transparently the order amount to a Braintree-Paypal supported currency. That way your webshop customer might be able to use the PayPal button payment method even with a PayPal not-supported currency.
Sometimes it happens that, originally, when your Sandbox was created, there was only your default merchant account around so the automated setup of the Sandbox naturally setup PayPal for that merchant account (also the default one, like USD). This means that unless you use the one or any other that is setup to accept your currency via PayPal you are likely to see that error.
The solution is to contact the Braintree Support and to explain them the following:
you are trying to make a payment on your
Sandbox
account viaPayPal button
using aX currency
AND the Braintree Merchant Account namedY
but the plugin that is sending the API call to the Braintree server returns a generic error message likethe payment method is not supported
which the plugin got it while it initializes the Braintree client JavaScript SDK.
They will trace the payment call that was rejected and will tell you exactly the thing I explained above. Nonetheless they might even setup the Sandbox account for you such that you may test those kind of payments.
Please note that this error should normally never happen in Production (where you have full-access), unless you have not configured well the PayPal and the additional merchant IDs.
To make sure the above is true then here is what you can do:
- check that your Production account is setup well
- switch the plugin into Production mode
- go to your Checkout page: does the error still appear?
- if NO then it means I was right
- if it still persists then check one more time (1)
- if it still persists then please report the error to the plug-in developer:
- for the free version (available at WordPress.org) use the WP Support Forum
- for the Pro version use our Support Forum after reading How to submit an incident report
- if it still persists then please report the error to the plug-in developer:
Sorry we cannot connect to PayPal. Please try again in a few minutes. Try Again.
What does it mean and how to fix this?
The long answer is that, probably, your Braintree Sandbox account is not setup to accept payments for any other currency than US Dollar. So, for instance, if your order amount is given in SEK (Swedish Krona) and your Sandbox account is configured to accept only PayPal USD then you will get that message instead of a PayPal login screen or alike.
What you should do is to contact the Braintree Support and to explain them exactly the situation (you are testing your Sandbox with PayPal for whatever currency and you get that message). They will certainly help you by correcting your Braintree Sandbox settings, which will allow you to test the PayPal with the respective currency.
If you want to test the PayPal button without having to wait for their reply then just change TEMPORARILY your webshop currency to USD and it should work like a charm (your Sandbox is PayPal USD enabled by default).
Please note that this situation might even appear while working on the Production environment, if the circumstances are exactly the same.
To make this possible we have to inter-connect three different ends:
- the WooCommerce web shop, which is the front door for the entire thing
- the Braintree, which will bill the payer on behalf you
- the plug-in, which acts as a bridge between the WooCommerce and Braintree
Setup your system – Step By Step
- In the WooCommerce web shop you must define a product/service the customers may buy and pay in monthly increments (like a subscription, the monthly payments you do for your car, house, etc). Let’s note that product SKU with X, ie. `SKU=X`
- In the Braintree dashboard -> Recurring Billing -> Plans add a `New` billing plan which will be the Braintree’s equivalent of your WooCommerce SKU=X product. Here it is called Billing Plan and have many options that let you define how the recurrent payment has to be made.
- when the both steps above are done, go in the plug-in Settings -> Recurring then map a (WooCommerce) SKU to a (Braintree) billing plan. You will be able to choose from your defined Braintree’s billing plans then you enter manually the WooCommerce SKU that matches the specified billing plan. This is what I call a “mapping”, thus `Map a SKU to a recurrent plan ID` option.
How it works
- The customer buys a recurrent billing product/service from your website and proceeds with the payment in the Checkout page
- our payment plug-in finds what order items has a mapping defined as on step 3 above
- for each such item it does the following (using the product SKU – billing plan ID mapping):
- adds the new customer (with its address, payment method details, etc) into the Braintree Vault
- creates a Braintree subscription for that customer and the given product (ie. billing plan)
- the order is done! – the Braintree will charge the customer periodically (using its Vault stored payment method), at the interval defined per Recurring Billing Plan
The order shipping address was updated using the PayPal specified shipping address. This might require you to re-authenticate to your PayPal account.
Why?
However, when you are re-authenticating you would normally specify the same address again. Obviously by using again the same address there would be no further shipping address changes, therefore no re-authentication would be required.
It sucks, I know 🙁 . Unfortunately there is nothing we can do about it.
Payment cannot be processed. Order currency (`XXX`) is not available for the selected payment method (`YYY`). This is rather a merchant plugin miss-configuration (`N`).
What should I do?
In this message the `XXX` and respectively `YYY` may indicate a currency code (eg. USD) and the `N` represents a numerical error code, as following:
- (1) this code indicates that the `XXX` currency is not supported by the payment gateway
- if that’s true then the merchant should either configure its eCommerce webshop to a payment gateway supported currency or it can use a currency converter plugin
- In case of a PayPal payment method it could enabled the plugin’s `PayPal amount conversion` option.
- (2) this code indicates that the order currency `XXX` is different than the `YYY` currency of the merchant account chosen for that payment
- in this case the merchant should either set its eCommerce webshop currency to `YYY` or setup an additional Braintree merchant account that supports its `XXX` webshop currency
If you are using the PRO version of the plugin then check the following:
- check the WooCommerce currency for your webshop (let’s note that with `A`)
- check the plugin setting (`Enhanced` tab) for the `Additional Merchant IDs`. Is there any merchant account which currency would match the `A` noted above?
- if YES then make sure that that additional merchant account ID supports PayPal (check within your Braintree setup)
- if NO then the only logical explanation is that your Braintree setup does not enabled PayPal
Your card is not 3D-Secure eligible. Please use a 3D-Secure enrolled card or choose other payment method.
error message. Why?
- the `Allow only 3D-Secure cards` option is ON
- If the card is eligible for 3D-Secure authentication but the user fails the authentication for whatever reason, by using the `Ignore 3D-Secure if AVS` option we will relay on the AVS rules. If the AVS rules match then, despite of the previous 3DS failure, the transaction would succeed.
- However, if the card is not eligible for 3D-Secure authentication then the `Ignore 3D-Secure if AVS` option is ignored completely. That’s because the system is set to `Allow only 3D-Secure cards`.
- the `Allow only 3D-Secure cards` option is OFF
- The above error message should never be thrown in this case. Instead, a different error message should be provided, one which should also specify the exact cause of error.
What it is good for?
- test a list of fake valid payment method nonces (eg. VISA, Maestro, etc)
- test a list of fake valid nonces with card info (eg. cards valid within US/Canada only)
- test a list of fake alternate payment method nonces (eg. Android Pay, Apple Pay, etc)
- test a list of fake payment processor rejected nonces
- test a list of fake payment gateway rejected nonces (eg. fraud)
- test a list of so called Test amounts which will get various responses from the payment gateway
In order to address that, starting with v0.2-22 we introduced a new option, the `Prevent Checkout updates` option. It basically tells the WooCommerce not to refresh some fragments after each key stroke. That’s all it takes. So, while using this option, by changing the billing Country, the State or Postal Code the payment form won’t refresh after each keystroke. However, if you choose some other payment option (like BACS, CASH, etc) or if you would deselect this option, the WooCommerce will work as designed.