PayPal WooCommerce - payment_complete 用于捕获电子邮件的挂钩
PayPal WooCommerce - payment_complete hook to capture email used
我遇到了一个问题,这个问题让我对支付完成挂钩感到非常疯狂,因为它与 PayPal 沙盒完美配合,但在我上线时却没有。
我要求所有新客户验证他们在首次购买时使用的 PayPal 电子邮件。我相信我遇到的问题是挂钩和函数在 WordPress 将贝宝电子邮件写入 post meta.
之前被触发
我无法 post 整个函数,但这是相关的:
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 没有将电子邮件地址写入 post 元。
如果有人能想出另一种方法来获取贝宝电子邮件地址,以便它与此挂钩一起使用,我们将不胜感激。很奇怪,它在沙盒中运行而不是实时运行,我不确定是什么导致了延迟。提前致谢。
我无法弄清楚是什么导致延迟发布到 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 );
}
我遇到了一个问题,这个问题让我对支付完成挂钩感到非常疯狂,因为它与 PayPal 沙盒完美配合,但在我上线时却没有。
我要求所有新客户验证他们在首次购买时使用的 PayPal 电子邮件。我相信我遇到的问题是挂钩和函数在 WordPress 将贝宝电子邮件写入 post meta.
之前被触发我无法 post 整个函数,但这是相关的:
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 没有将电子邮件地址写入 post 元。
如果有人能想出另一种方法来获取贝宝电子邮件地址,以便它与此挂钩一起使用,我们将不胜感激。很奇怪,它在沙盒中运行而不是实时运行,我不确定是什么导致了延迟。提前致谢。
我无法弄清楚是什么导致延迟发布到 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 );
}