2016-09-16 111 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); 
}