The Raffle Ticket Generator creates the raffle tickets when the order is paid. In WooCommerce, the order status tells us whether an order has been paid. WooCommerce “processing” status tells the plugin that it is time to generate a ticket. Pending or on-hold tells us that the order has not been paid for. This is important because most of the support issues we see are regarding these order status. When an order is placed and the status is properly set to a “paid” status, the tickets will show up in the order confirmation and the email confirmation.
A Note About PayPal and Paytriot:
Many charities use PayPal for their donations and for fundraising. Using Paypal with the Raffle Ticket Generator has a few issues. PayPal lists Charitable Raffles as an expressly prohibited transaction in their Terms and Conditions. Second, there are technical challenges with PayPal and WooCommerce. This is not an issue with our plugin, but most of the PayPal payment gateways return a “pending” order status. In WooCommerce, that means that the order has not been paid. As developers we have been torn about this and after polling hundreds of customers, the decision was made to only generate Raffle Tickets for PAID orders. So, when a PayPal order returns to WooCommerce as a “pending” status, we do not generate a ticket. The site or store admin, will need to manually change the order status to “processing” In some cases, a few PayPal plugins return a “pending” or a “processing” status and then some IPN info and then the WooCommerce hook is NOT TRIGGERED. When that happens our plugin does not get told the order is paid. You may need to switch the order to “on-hold” and then update the order, then to “processing” and then update the order to generate the tickets.
Paytriot in the UK has a similar issue – The Paytriot plugin for payment does not follow the WooCommerce standard of using hooks and filters to trigger an event. They only change the status in the db. Our plugin does not search the db for many reasons. The main one is we chose to follow the WooCommerce standards and minimize overhead. We also have many customers with tens of thousands or hundred of thousands of orders – by ignoring the hook and searching the db for new orders, it can create massive unnecessary server overhead. We have offered to try and help Paytriot fix their plugin, but we are in America and they will not work with an American company. As a result and because we have so many UK customers – we have written an add on plugin to search orders and issues the order hooks and triggers. https://online.wpraffle.com/product/raffle-ticket-generator-order-processing-cron/
There are some automatic order status management plugins that will change the order status in bulk. While a great idea in concept, all of them that we have tested simply are changing the order status in the database. They do not trigger the order status hook. Since we look for the WooCommerce order status as a trigger, if the bulk status manager never issue the trigger, the Raffle Ticket Generator plugin is never told that order is now paid.
A Note About Payment Options:
We get a lot of questions regarding payment processors. We like and recommend Stripe. It works perfectly and is easy to setup. As for the currency or do we work with this processor or that processor. Our plugin is simply an add-on to WooCommerce. We generate based on the WooCommerce order status. The Raffle Ticket Generator plugin does not care about pricing or payment other than we have to know the order is paid.
Using Batch Order Processing Plugins
A lot of customers are using batch order status plugins. So far we have yet to see one that works properly that uses the proper WooCommerce hooks. They all seem to change the order status in the database but do not actually change the order status via WooCommerce. We generate the tickets upon WooCommerce “telling” us that an order has been paid for. If you are using a batch order status plugin and the tickets are not generating, try to MANUALLY change the order status to “on-hold” and then save it. Then MANUALLY change it to “processing” and save it. If the tickets are generating, the plugin is functioning as it is supposed to and the problem is with your batch processor.