我访问了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。