php - 在 Woocommerce 中从 Paypal 成功付款的订单状态处理问题
问题描述
我有一个奇怪的问题,有时会发生这种情况,当用户通过贝宝支付课程时,订单状态从待处理变为处理而不是完成。
在这张图片中,收到了 IPIN 通知,但订单仍在处理阶段,可能是什么导致了这个问题。我试图复制这个问题,但它最终没有复制,它有时会发生。
以下是产品信息:
- 产品是虚拟产品
- 库存已禁用
解决方案
如果您只销售虚拟产品,您可以在支付完成功能上强制 Paypal 的订单状态为“已完成”,这样:
add_filter('woocommerce_payment_complete_order_status', 'paypal_payment_complete_order_status', 10, 2 );
function paypal_payment_complete_order_status( $status, $order_id, $order ){
if( $order->get_payment_method() === 'paypal' )
$status = 'completed';
return $status;
}
代码位于您的活动子主题(或活动主题)的 function.php 文件中。测试和工作。
此挂钩仅在成功付款时触发,最初有 2 个可能的订单状态值“处理中”或“已完成” (取决于是否需要“处理”)。所以这个答案代码只是将订单状态强制为“已完成”,目标是 Paypal 支付网关(用于虚拟产品)。这个钩子位于
WC_Order
payment_complete()
方法上。
所有支付网关都使用payment_complete()
成功支付的方法,而贝宝在WC_Gateway_Paypal_Response
Class 上使用它。
推荐阅读
- perl - 如何解码 \u{61}lert 以使用 Perl 发出警报
- python - Coin Flip Streaks Challenge - Al Sweigart 用 python 自动化无聊的东西
- string - 删除文本和变量之间的空格
- javascript - React 或 CRA 是否优化静态语句?如何防止静态语句得到优化?
- javascript - 如何在javascript中聚合2个Promises返回的数据
- jenkins - 使用 Jenkins 在服务器上上传网站的最佳做法是什么?
- sql-server - TSQL“输出”的 Oracle 等效性
- python - 从 Django 中的两个不同的类模型中减去两个数量值
- google-analytics - 谷歌分析事件标签计数没有增加
- reactjs - react .map 不更新数组中的数据