私はワードプレスのプラグインを作った。それはクレジットカードで新しい支払いゲートウェイを処理します。成功した取引の後、私は注文を締め切りますが、電子メールは送信できません。私はすべてを試みた。私は、initにメーラーを呼び出そうとしましたが、それはerror.logファイルに失敗します。支払いゲートウェイのプラグインでwordpress/woocommerceの電子メールを起動するには?
PHP Fatal error: Call to a member function get_order_number() on boolean in ....../wp-content/plugins/woocommerce/includes/emails/class-wc-email-customer-processing-order.php on line 58
私はinitのnew WC_simplepay();
を作ってみました、それが見つからないクラスで失敗します。
新しい機能を持つクラスで同じメールを送信しようとしましたが、$this->functionname();
でコンストラクタから呼び出しました。メールが送信されましたが、支払いプロバイダ(または私)はURLから呼び出すことができませんリクエストのパラメータ)は、あなたがチェックアウトページにいるときだけクラスがロードされるためです。
私はグローバル$woocommerce
...などのソリューションを試しましたが、initパートでは動作しませんでした。クラス内でのみ動作しました。プラグインコードの
開始:
add_action('plugins_loaded', 'woocommerce_simplepay_init', 0);
function woocommerce_simplepay_init(){
if(!class_exists('WC_Payment_Gateway')) return;
if ($_REQUEST['REFNOEXT']!='')
{
/* .... here are some code regarding the gateway provider ,logging, etc... fully working */
$order_id = explode('_',$_REQUEST['REFNOEXT']);
$order = new WC_Order($order_id[0]);
$order->update_status('processing');
WC()->mailer()->emails['WC_Email_Customer_Processing_Order']->trigger($order_id[0]); // this is generating the error
}
class WC_simplepay extends WC_Payment_Gateway{
public function __construct(){
...
だから、基本的に、私は順番を閉じ、顧客に電子メールを送信し、リモートのURL呼び出しを使用して、このクラスでプロバイダ鮫を扱うことができますか?
ありがとう。問題は、プロバイダーがhttp://domain.com/?REFNOEXT=samevalue で私たちのサイトに電話をかけ、支払いが完了したときにのみフックが起動することです。私は注文を締め切り、支払い後に電話をするときにメールを送る必要があります。それはバックグラウンドで起こります。 – MCS
それで、あなたは確認ページでそれをしたいですか?または任意のページで? – Skatox
任意のページです。私はプロバイダの管理者にこのURLを設定する必要があります。その後、トランザクションが完了すると、ポストデータでこのURLを呼び出すことができます。ユーザーがサイトで支払いをした後、1分ほどで発生します。 – MCS