【问题标题】:PayPal WooCommerce - payment_complete hook to capture email usedPayPal WooCommerce - 用于捕获使用的电子邮件的 payment_complete 挂钩
【发布时间】:2017-01-24 03:23:19
【问题描述】:

我遇到了一个问题,让我对支付完成挂钩非常疯狂,因为它与 PayPal 沙盒完美配合,但在我上线时却不行。

我要求所有新客户验证首次购买时使用的 PayPal 电子邮件。我相信我遇到的问题是钩子和函数在 WordPress 将贝宝电子邮件写入帖子元之前触发。

我无法发布整个功能,但以下是相关内容:

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 没有将电子邮件地址写入帖子元。

如果有人能想到另一种方法来获取贝宝电子邮件地址,以便它与这个钩子一起工作,那将不胜感激。很奇怪它在沙箱中工作而不是实时运行,我不确定是什么导致了延迟。提前致谢。

【问题讨论】:

    标签: php wordpress paypal woocommerce paypal-ipn


    【解决方案1】:

    我无法弄清楚是什么导致延迟发布到 post_meta,但我确实找到了捕获从 PayPal 发回的所有订单和付款详细信息的 IPN 挂钩。只是在 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 );
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2019-12-31
      相关资源
      最近更新 更多