2016-09-16 107 views
-1

我有一个问题,导致我完全疯狂的付款完整的钩子,因为它完全与PayPal沙箱,但不是当我上线。PayPal WooCommerce - payment_complete挂钩来捕获使用的电子邮件

我要求所有新客户验证第一次购买时使用的PayPal电子邮件。我相信我遇到的问题是,在WordPress将postpal电子邮件写入post meta之前,钩子和函数正在触发。

我不能发布全功能,但这里有什么相关:

add_action('woocommerce_payment_complete', 'preapproved_api_order', 10, 1); 

function preapproved_api_order($order_id){ 
if (! empty($gateway->id) && 'paypal' == $gateway->id) { 

$order = new WC_Order($order_id); 
    $user_id = $order->get_user_id(); 
    $gateway = wc_get_payment_gateway_by_order($order); 

     $paypal_email = get_post_meta( $order_id, 'Payer PayPal address', true); 
     $error = 'paypal email used for payment '.$paypal_email; 
    send_test_mail($error); 
    } 

我加了一些快速的错误检查和电子邮件被弄不包括电子邮件地址,这就是为什么我想送WP尚未将邮件地址写入邮件元。

如果任何人都可以想到另一种方式来获得贝宝的电子邮件地址,以便它与这个钩子一起工作,将不胜感激。非常奇怪的是,它在沙箱中工作,并没有生活,我不知道什么可能导致延迟。提前致谢。

回答

0

我无法弄清楚是什么导致延迟发布到post_meta,但我确实发现了IPN钩子,它捕获了从PayPal发回的所有订单和付款细节。在WooCommerce中为PayPal完成付款的一种替代方法。希望它可以帮助其他人经历同样的问题:

add_action('valid-paypal-standard-ipn-request', 'preapproved_api_order', 10, 1); 
function preapproved_api_order($details){ 
    global $woocommerce, $wpdb; 

    $order_id = $details['item_number1']; 
    $order = new WC_Order($order_id); 
}