Woommerce订单其余API:添加优惠券代码



我访问了WooCommerce Rest API官方文档"创建订单"部分。我正试图通过API创建一个订单,但当我想用申请优惠券创建订单时,我不知道如何制作。

当我通过REST API创建订单时,我将如何传递优惠券代码作为折扣?

在相关的官方文档中,我没有找到任何传递优惠券代码或折扣的请求参数。

请建议如何通过WooCommerce中的rest API创建订单时传递优惠券代码。

您应该在数据数组中添加'coupon_lines',比如:

'coupon_lines' => [
[
'code' => 'mycouponcode',
'discount' => '5',
'discount_tax' => '0.75',
'meta_data' => [
[
'key' => 'coupon_data',
'value' => [
'id' => '1234',
'code' => 'mycouponcode',
'amount' => '10',
/* ... and so on ... */
]
]
]
]
]

meta_data数组是所有的wooccommerce优惠券元数据。这应该有效…

我尝试了以下答案

第一步是从wooccommerce管理后台创建优惠券,并添加您的优惠券规则(折扣或折扣金额的百分比或其他…)

然后,根据作为wooccommerce rest api一部分的订单控制器类,当更新订单以附加优惠券时,您需要将优惠券代码作为coupon_lines数组的一部分包含ONLY

控制器的以下链接:https://github.com/woocommerce/woocommerce/blob/master/includes/api/class-wc-rest-orders-controller.php

这是对coupon_lines数组进行验证的代码部分,并将我们的优惠券代码应用于wooccommerce订单

正如你所看到的,它确实验证了你没有传递优惠券id,并且你只在将此代码应用于订单之前传递优惠券代码。

下面的示例JSON与我一起更新订单

{  
"coupon_lines": [
{
"code": "1122"
}
]
}

一旦您的优惠券代码被应用,订单将在进行订单总额计算后返回,并由wooccommerce填充所有其他字段;应用优惠券折扣

以下来自rest api订单控制器的验证代码

foreach ( $request['coupon_lines'] as $item ) {
if ( is_array( $item ) ) {
if ( empty( $item['id'] ) ) {
if ( empty( $item['code'] ) ) {
throw new WC_REST_Exception( 'woocommerce_rest_invalid_coupon', __( 'Coupon code is required.', 'woocommerce' ), 400 );
}
$results = $order->apply_coupon( wc_clean( $item['code'] ) );
if ( is_wp_error( $results ) ) {
throw new WC_REST_Exception( 'woocommerce_rest_' . $results->get_error_code(), $results->get_error_message(), 400 );
}
}
}
}

这是因为创建优惠券代码的API与订购API是分开的。您需要使用优惠券API:定义优惠券

code: '10off',
discount_type: 'percent',
amount: '10',
individual_use: true,
exclude_sale_items: true,
minimum_amount: '100.00'

然后,自动计算客户申请的任何优惠券。

您应该将"coupon_lines"添加到您的订单对象中,如下所述
订单属性在此处详细信息请在此处输入链接描述因此,每个订单都应该有一个包含"id"、"code"、"amount"的"coupon_lines"数组,用于您通过优惠券API验证优惠券时获得的所需优惠券。

'coupon_lines' => [
[
'id' => 32,
'code' => testcoupon,
'amount' => '0.75',
]
]

如果你没有找到我写和回答的方法,以防其他人带着和我一样的问题来这里:)。使用rest api创建订单后,您应该按照其他人的建议,使用coupon_lines更新该订单。因此,总之,使用rest api创建订单,使用它返回的order_id用coupon_lines更新(此处为文档)订单,以应用用户应用的优惠券。

在v2中不存在通过API将优惠券应用于订单。使用v3。

最新更新