Den*_*zil 3 php wordpress woocommerce
我试图通过访问浏览器中的回调 URL http://localhost:90/wordpress-payment-demo/wc-api/callback_handler/来测试我的回调函数是否工作,但我一直得到 -1。这是我的回调函数。
$this->id = 'paymentplugin';
add_action( 'woocommerce_api_wc_' . $this->id , array( $this, 'callback_handler' ) );
function callback_handler() {
header( 'HTTP/1.1 200 OK' );
echo "callback";
die();
}
Run Code Online (Sandbox Code Playgroud)
我还尝试使用 Postman 发布到 URL,但得到 400 个错误请求的状态代码。
这看起来像是自定义 WooCommerce 支付网关的 webhook。在这种情况下你可能并不需要_wc_的add_action功能。
例子:
$this->id = 'paymentplugin';
add_action( 'woocommerce_api_' . $this->id , array( $this, 'webhook' ) );
function webhook() {
header( 'HTTP/1.1 200 OK' );
echo "callback";
die();
}
Run Code Online (Sandbox Code Playgroud)
您也不需要结束执行,因为这是由 WooCommerce 完成的,因此您可能希望删除该die()功能:
$this->id = 'paymentplugin';
add_action( 'woocommerce_api_' . $this->id , array( $this, 'webhook' ) );
function webhook() {
header( 'HTTP/1.1 200 OK' );
echo "callback";
}
Run Code Online (Sandbox Code Playgroud)
另一件要考虑的事情是headers。我不知道是否需要发送它们,但我最近创建了一个自定义网关,它在 webhook 中只包含此代码,并且运行良好:
function webhook() {
$order_id = isset($_GET['order_id']) ? $_GET['order_id'] : null;
$order = wc_get_order( $order_id );
$order->payment_complete();
wc_reduce_stock_levels($order_id);
}
Run Code Online (Sandbox Code Playgroud)
支付提供商基本上会发送一个包含我之前发送的订单 ID 的 IPN,因此我可以确认订单已支付。
这是我最近创建的自定义网关的链接,希望它可以帮助:
https://github.com/usainicola/weldpay-woocommerce
| 归档时间: |
|
| 查看次数: |
3571 次 |
| 最近记录: |