使用WooCommerce REST API v2,我成功地在待处理的未付款状态下创建订单 .
我可以看到我可以将 order.payment_details.paid
字段设置为 true
,这将在已完成状态下创建订单并发送已完成的订单电子邮件,但它实际上并不处理付款 .
使用REST API v2创建订单并让WooCommerce使用支付网关处理付款的正确方法是什么?
或者我是否需要在服务器端向API添加插件挂钩? (我认同)
这是我尝试过的
curl -X POST https://example.com/wc-api/v2/orders \
-u consumer_key:consumer_secret \
-H "Content-Type: application/json" \
-d '{
"order": {
"customer_id": 2,
"payment_details": {
"method_id": "da_big_bank",
"method_title": "StackOverflow Money Laundering, Inc.",
"paid":true
},
"line_items": [
{
"product_id": 341,
"quantity": 1
}
]
}
}'
正如我所说,它在完成状态下生成订单,但实际上并没有用我的网关处理任何钱(这不是“StackOverflow Money Laundering,Inc . ”并且是使用我们的WooCommerce网站时可以正常工作的合法网关)
2 回答
由于helgatheviking同意,目前还没有办法使用WooCommerce REST API处理订单付款 .
我最终在
woocommerce_api_create_order
过滤器中写了一个钩子,它在创建订单时立即处理付款订单 . 如果处理失败,则将错误添加到order->post->post_excerpt
字段,使其在JSON响应中显示为order->note
.为此,我还必须扩展支付网关,以便其
process_payment()
方法接受$user_id
作为输入 . 这是因为它是开箱即用的,可以对当前登录的用户进行操作,在我的情况下,在大多数情况下,可能是REST客户端登录的系统用户,而不是实际用户进行购买 .扩展网关的另一个好处是,现在可以返回错误而不是写入
wc_add_notice()
. 由于这是一个REST服务,所以没有看到wc_add_notice()
的输出谢谢你给我的方向 .
我做了一些改动和简化的步骤 .
如下:
我希望这可以帮助别人 . 经过大量的反复试验,这是一项艰苦的工作 .