Using WooCommerce and the standard PayPal gateway to accept payments. When testing in Sandbox mode, everything works great. When we test live with a real transaction, payment goes through no problem, but within WooCommerce there is a note as follows:
"Validation error: PayPal currencies do not match (code USD). Order status changed from Processing to On Hold."
We do not have multiple currencies in the shop. Everything is set to USD. PayPal is set to accept payments in different currencies and automatically convert them. We do not have a currency conversion plugin installed. We double checked the API settings (they are correct), we've generated new API keys and tried again, we tried it with and without IPN enabled.
The payment goes through via Paypal, but we still get this error inside the order notes, and the status changes to On-Hold instead of "Processing".
We also cannot process a refund via PayPal from within WooCommerce, we get a "Refund Failed" message. Not sure if this is related, but we would like to figure that out as well.
i found temporary fix for this problem
go to “plugins/woocommerce/includes/gateways/paypal/includes/class-wc-gateway-paypal-ipn-handler.php” and comment two lines (line number : 176 and 177 ) like this
//$this->validate_currency( $order, $posted['mc_currency'] );
//$this->validate_amount( $order, $posted['mc_gross'] );
Source : https://www.kapadiya.net/wordpress/woocommerce-paypal-for-inr/
Related
When using the store checkout api i am receiving this error. I can confirm the cod payment method is available? Any idea why this is not working. BTW the other rest apis are working fine.
endpoint:
{{BaseURL}}wp-json/wc/store/v1/checkout
error:
{
"code": "woocommerce_rest_checkout_payment_method_disabled",
"message": "The cod payment gateway is not available.",
"data": {
"status": 400
}
}
tried switch on and off the gateway and using another gateway but same issue.
We are on wp engine hosting i don't think this is a factor but i am trying to provide all relevant info.
Update
so after checking up on the error. Even though we have three payment options. Only one is shown when running this function:
WC()->payment_gateways->get_available_payment_gateways();
I do not see the cash on delivery option or the cheque option even though there are there payment methods enabled in woocommerce payments
I'm trying to test paddle subscriptions on localhost. When I use the product id and vendor id from an example git repo everything works.
When I use my own vendor id and product id (plan id) I get a 400 error:
{"errors":[{"status":400,"code":"validation","details":"The checkout id must be a valid checkout id.","source":{"pointer":"\/checkout_id"}}]}
I have created a subscription on the portal which gives me a'Plan Id'. Is the plan id the wrong id to be using here?
Paddle.Checkout.open({ product: 752932 });
I had the exact same setup and symptoms. I assume you're using the Paddle sandbox since you're testing on localhost. What helped me is that I had to add
Paddle.Environment.set('sandbox')
right above the
Paddle.Setup({ vendor: xxxx })
This did it for me, but annoyingly enough wasn't well documented at all so it took a bunch of digging.
Hope this helps you too!
Generally, this type error occurs when checkout request goes from localhost. I faced the same problem. When I test it on my hosting server, it works fine. The weghook_url should be approved by the paddle. You can set up the web hook here paddle web hook setup.
I installed the Amazon Pay plugin on my WordPress/Woocommerce website, left in in Sanbox mode, created a Sandbox test account and when I run a test transaction, I get a message that states "Invalid Payment Method"
When I go to the Woocommerce log, the error that I find is:
<ErrorResponse xmlns="http://mws.amazonservices.com/schema/OffAmazonPayments/2013-01-01">
<Error>
<Type>Sender</Type>
<Code>InvalidOrderReferenceId</Code>
<Message>The OrderReferenceId S00-0000000-0000000 is invalid.</Message>
</Error>
<RequestId>646d0e3e-b603-420d-8178-ad20690fee41</RequestId>
</ErrorResponse>
Any ideas? Thank you!
Please follow the Integration guide: https://developer.amazon.com/docs/eu/amazon-pay-onetime/intro.html
You would have to use an Amazon Generated Order ID from the Address widget. Please obtain it using the function:
onOrderReferenceCreate: function(orderReference) {
// Here is where you can grab the Order Reference ID.
orderReference.getAmazonOrderReferenceId();
},
You can use the orderReference ID anywhere from this point. Since, you are using WooCommerce SP, you can follow the integration guide too.
Thanks.
I am trying to connect contact form 7 with velocify using the Plugin: "Forms: 3rd-Party Integration". Lead created in velocify but no field data import. I have mapped the fields correctly as per the instructions given. Here is the debug message:
SUBMISSION
Array
(
[timeout] => 60
[body] =>
)
RAW RESPONSE
Array
(
[reason] => Could not locate success clause within response
[safe_message] => Success Clause not found
[clause] => done
[response] => <?xml version="1.0" encoding="UTF-8"?><ImportResults><ImportResult refId="" leadId="0" result="Failure" message="No input data was found" /></ImportResults>
)
Please help me out.
This is a strange place to ask this question, as opposed to:
WP stack exchange site
the plugin support forum
the plugin Github issue tracker
That said, as the plugin author I suggest you read the support forum's sticky post: https://wordpress.org/support/topic/its-not-sending-data-help-read-this-first/
Specifically in your case, the debug email tells you the two problems:
You've configured the service to expect the word 'done' in the response, and it's not finding it
It's not finding it because, as the response indicates 'No input data was found' confirming the empty body of the submission.
The second issue (which is the real problem) is probably that you're not mapping it correctly. But without the full debug (or at least the service configuration section of it) I can't tell you why. Look at the "Post (Form)" section to see what's available to map. If you have done it all correctly it may be a compatibility issue -- make sure you're using the latest versions of all relevant plugins, try turning off other unrelated plugins to see if there's some kind of conflict, and finally if you have FTP access turn on WP_DEBUG mode and check the log file.
I am creating a website, where I will sell computer and calculator programs. When the "buy" button is pressed. I would like the user to be directed to Paypal (whether they stay on the website or not). After they pay, the user would be brought back to my website, and the program would automatically download.
How can i do this to ensure:
The user correctly pays for the program through Paypal
The correct program that they paid for downloads after
There is no direct link to the program so that the user could then download it many times without paying.
Thank you very much in advance!
Paypal PDT (redirecting after payment) and IPN (behind the scenes) is exactly what you are after.
Check this:
https://www.paypal.com/cgi-bin/webscr?cmd=p/xcl/rec/pdt-intro-outside
Here is sample code for the script to get you started instantly:
https://www.paypal.com/us/cgi-bin/?cmd=p/xcl/rec/pdt-code-outside
Some additional Tips for security:
Verify amount, currency and product-id with your database's data to make the download available. Open a paypal sandbox account.
To don't reveal the download location:
Use the order-id verified by pdt as a unique download-identifier. You have to use a script like this: redirect the user in the pdt-script here or include it in pdt if payment verrified:
<?
$orderid = $_GET['orderid'];
$productid = $_GET['productid'];
$time = $_GET['time_from_paypal']; // when the purchase was made
$fn = "files/".$productid.".mp3";
($time =here your conditional)?$do==true:$do==false;
if ($do==true){
header('Content-Disposition: attachment; filename=' . basename($fn));
readfile($fn);
} else {.....
?>
the part "here your conditional" can be anything. you could restrict them to download within the following x seconds after the payment was made. usually the processing from paypal takes a maximum of 20 seconds. so if you want the download to be made only once check if the payment_time and the actual time divergent less than 30 seconds. because of the redirect the user gets the download instantly after payment is veriffied.
wrote but not tested