我正在编写一个处理WooCommerce订阅的支付网关。这是处理续订的示例代码:
public function mcc_subscription_renewal($amount, $order) {
$tid = 123;
$order->payment_complete( $tid );
$order->update_status( 'completed' );
WC_Subscriptions_Manager::process_subscription_payments_on_order( $order );
}
这是一个简单的订阅,每年向客户收取固定费用。当我手动运行续订过程时,会成功创建新订单和计划的操作,但是日期不会更新到下一年。我想念什么?为什么未成功完成的续订订单会更新订阅的到期日期?
答案 0 :(得分:1)
假设您还没有找到答案,请注意以下几点。您是在编写网关还是在编写网关和订阅过程?
Woocommerce有一个名为Woocommerce订阅的插件。它会将所有费用记入网关,目前仅是Stripe / PayPal。如果您正在编写新的网关并添加woocommerce订阅,则只需查看订阅ID和下一个付款日期:
public function mcc_subscription_renewal($amount, $order)
{
$order = new WC_Order( $order );
$OrderNumber = $order->parent_id;
$ParentOrder = new WC_Order( $OrderNumber ); // ORDER NUMBER
$SubscriptionNumber = $order->get_order_number();
$PaymentDate = $order->get_date_created()->format ('Y-m-d');
$items = $order->get_items();
foreach( $items as $item_id => $product )
{
$ProductName = $product->get_name();
$ProductId = $product->get_product_id();
$ExpireDate = WC_Subscriptions_Order::get_next_payment_date ( $ParentOrder, $ProductId );
}
}
您无需执行其他任何操作。如果您正在编写自己的订阅软件包,则需要编写电话并存储购买的商品,然后计算您自己的到期日期。
woocommerce订阅,时间长度和续订时间均在产品定义下设置。