Php Woocommerce Orders Rest API:添加优惠券代码

Php Woocommerce Orders Rest API:添加优惠券代码,php,woocommerce,orders,woocommerce-rest-api,coupon,Php,Woocommerce,Orders,Woocommerce Rest Api,Coupon,我去过。我正试图通过API创建订单,但当我想用apply优惠券创建订单时,我不知道如何创建 当我通过RESTAPI创建订单时,如何将优惠券代码作为折扣传递 在相关的官方文档中,我没有找到任何传递优惠券代码或折扣的请求参数 请建议在WooCommerce中通过rest API创建订单时如何传递优惠券代码。这是因为用于创建优惠券代码的API与订单API是分开的。您需要使用以下命令定义优惠券: 然后自动计算客户申请的任何优惠券。您应该需要在数据数组中添加“优惠券行”,例如: 'coupon_l

我去过。我正试图通过API创建订单,但当我想用apply优惠券创建订单时,我不知道如何创建

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

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


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

这是因为用于创建优惠券代码的API与订单API是分开的。您需要使用以下命令定义优惠券:


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

您应该需要在数据数组中添加“优惠券行”,例如:

    '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 ... */
                    ]
                ]
            ]
        ]
    ]
元数据
数组是所有元数据。这应该有效…

您应该在订单对象中添加“优惠券行”,如下所述
这里有更详细的说明 因此,每个订单都应该有和“优惠券行”数组,其中包含所需优惠券的“id”、“代码”、“金额”,当您通过优惠券API验证优惠券时,您会得到这些优惠券

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

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

我尝试了以下答案

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

然后,根据woocommerce rest api中的order controller类,在更新订单以附加优惠券时,您只需要将优惠券代码作为优惠券线数组的一部分

控制器的以下链接:

这是对优惠券行数组进行验证并将优惠券代码应用于商业订单的代码部分

如您所见,它确实验证您没有传递优惠券id,并且在将此代码应用于订单之前只传递优惠券代码

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

 {  
    "coupon_lines": [
        {
            "code": "1122"
        }
     ]
 }
应用优惠券代码后,在进行订单总额计算和应用优惠券折扣后,订单将与woocommerce填充的所有其他字段一起返回

下面是RESTAPI订单控制器的验证代码

foreach($request['优惠券行]]作为$item){
if(is_数组($item)){
if(空($item['id'])){
if(空($item['code'])){
抛出新的WC_REST_异常('woocommerce_REST_无效的_优惠券','woocommerce',400);
}
$results=$order->apply_优惠券(wc_clean($item['code']);
如果(是错误($results)){
抛出新的WC_REST_异常('woocommerce_REST_'.$results->get_error_code(),$results->get_error_message(),400);
}
}
}
}

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

Hello@Derek Brown,感谢您的快速响应。但是我没有从RESTAPI创建优惠券。我将仅从WordPress后端创建优惠券,因此我的问题是在创建订单时如何传递优惠券代码,与WooCommerce中的结帐页面相同。因此,您希望在下单时自动添加优惠券吗?是的,我只想在rest API中发送优惠券代码以及发货和计费详细信息。我可以通过传递“优惠券行”得到答案吗:{id:coupon\u id,code:coupon\u code}因为我对这个答案进行了深入研究,发现这不是一个正确的答案,也不是正确的方法,这就是我删除它的原因。有什么问题吗?是的,当没有解释的时候……我的答案示例直接来自官方Rest Api文档,因此这意味着该文档也不正确……请提供WooCommerce的官方链接,以便在下单时应用优惠券代码。这个代码应该和你的一样,也需要很好地工作。如果你也需要的话,我可以和你分享我的眼镜…@SamarthAgarwal不,对不起,我没有找到方法…只是想说这个解决方案对我有效。这是最简单的一个,并且更新了。
 {  
    "coupon_lines": [
        {
            "code": "1122"
        }
     ]
 }