php - Woocommerce 订阅:自动创建续订订单并暂停有效订阅
问题描述
我的客户使用 WC 订阅和会员资格。他为客户提供 1 美元的试用会员资格,以试用他的服务 30 天。30 天后,如果客户未选择退出订阅,则将向他们收取全额费用。
这是 PayPal Standard 上发生的情况:
- 客户购买 1 美元试用版并前往 PayPal 付款。成功付款后,他们将返回网站,并在订阅的同时创建试用付费会员。
- 成功交易几分钟后,将自动创建该订阅的单独续订订单(不应该在 30 天之前发生),随后暂停试用付费会员资格。
- 由于续订订单没有收到付款,因此它处于待付款状态,这会影响订阅状态,因为它认为付款到期,但尚未收到付款。
问题是我刚刚在我的 PayPal 沙箱中测试了这个场景,并且一切都正常运行。未生成自动续订订单。谁能帮我理解为什么这个续订订单会自动生成?
谢谢。
解决方案
我遇到了同样的问题。但是,问题是,当订阅自动续订时,那个时候它的MEMBERSHIP状态变为 PAUSED。我开发并应用了以下解决方案,它奏效了!!
/*
* FIXED : Membership got PAUSED everytime at automatic membership renewal
*/
function change_membership_status_active( $subscription , $order ) {
global $wpdb;
if( 'completed' === $order->get_status() ) {
$membership = $wpdb->get_row( "SELECT * FROM wp_postmeta WHERE meta_key = '_subscription_id' AND meta_value = $subscription->ID" );
$mem_id = $membership->post_id;
$status = 'wcm-active';
$update_args = array( 'ID' => $mem_id, 'post_status' => $status );
wp_update_post($update_args);
}
}
add_action( 'woocommerce_subscription_renewal_payment_complete', 'change_membership_status_active', 10, 2 );
推荐阅读
- javascript - window.onload 函数未运行
- angular - Angular 6 在所有 url 前面加上来自服务的值
- android - 如何在imageview中显示图像作为预览?不是完整的图片
- java - 如何生成具有外键属性的通用 CriteriaQuery?
- javascript - 如何将来自webview的数据存储在localdata UWP中
- javascript - 在 mvc 中使用 javascript 计算 CSV 文件中的数字条目
- kubernetes - kubectl label - 如何标记“规范:模板:元数据:标签”
- swift - 需要在 Swift 中找到像“6789”或“abcd”这样的连续序列
- python-3.x - 获取用于函数的所有装饰器的列表
- discord.py - 我可以使用 discord.js 或 discord.py 删除服务器吗?