我已访问The official WooCommerce Rest API documentation "Create an Order" section。我正在尝试通过API创建订单,但是当我想使用优惠券创建订单时,我不知道如何制作订单。
当我通过REST API创建订单时,如何将优惠券代码作为折扣传递?
在相关的官方文档中,我找不到任何请求参数来传递优惠券代码或折扣。
请在WooCommerce中通过rest API创建订单时建议如何传递优惠券代码。
答案 0 :(得分:2)
您需要添加数据 '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
数组是所有woocommerce优惠券元数据。这应该有用......
答案 1 :(得分:0)
这是因为用于创建优惠券代码的API与订购API是分开的。您需要使用Coupon API:
定义优惠券 code: '10off',
discount_type: 'percent',
amount: '10',
individual_use: true,
exclude_sale_items: true,
minimum_amount: '100.00'
然后自动计算客户申请的任何优惠券。
答案 2 :(得分:0)
您应按照此处所述,在订单对象中添加“ coupon_lines” Order properties在enter link description here上有详细说明 因此,每个订单都应该有一个“ coupon_lines”数组,其中包含您通过优惠券API验证优惠券时所需的优惠券的“ id”,“代码”,“金额”数组。
'coupon_lines' => [
[
'id' => 32,
'code' => testcoupon,
'amount' => '0.75',
]
]
答案 3 :(得分:0)
如果您没有找到我写和回答的方式,以防万一有人来这里提出与我相同的问题:)。使用rest api创建订单后,您应该按照此处其他人的建议,使用coupon_lines更新该订单。因此,总而言之,请使用rest api创建一个订单,使用它返回的order_id来更新(documentation here)带有coupon_lines的订单以应用用户应用的优惠券。
答案 4 :(得分:0)
我尝试了以下答案
第一步是从woocommerce管理员后端创建一张优惠券,并为该优惠券添加规则(折扣或折扣金额或其他金额的百分比。)
然后根据woocommerce rest api的一部分的订单控制器类,在更新附有优惠券的订单时,您需要包括 ONLY 优惠券代码作为coupon_lines数组的一部分。
这是代码的一部分,它对coupon_lines数组进行验证,并将我们的优惠券代码应用于woocommerce订单
如您所见,它确实验证您没有传递优惠券ID,并且仅在将优惠券代码应用于订单之前传递了优惠券代码。
下面与我合作的用于更新订单的示例JSON
{
"coupon_lines": [
{
"code": "1122"
}
]
}
一旦应用了优惠券代码,订单总额计算并应用优惠券折扣后,订单将与woocommerce填充的所有其他字段一起返回
以下是来自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 );
}
}
}
}
答案 5 :(得分:0)
v2 中不存在通过 API 向订单应用优惠券。使用 v3。