php - WooCommerce REST API v3 远程订购和支付并将所有数据发送到 WP
问题描述
我开始创建一个程序,我们可以在其中按类别浏览产品。将商品添加到我们的购物车(在 Messenger 中)并更新购物车等。
我们已经将 Stripe / PayPal 连接到我们的应用程序,并希望在我们的应用程序中处理所有事情。然后,当订单完成时,将整个订单作为数据数组发送到 WP。
有几个问题,因为我被卡住了。
我会使用 API 文档中的这一部分: https ://woocommerce.github.io/woocommerce-rest-api-docs/?php#create-an-order
<?php
$data = [
'payment_method' => 'bacs',
'payment_method_title' => 'Direct Bank Transfer',
'set_paid' => true,
'billing' => [
'first_name' => 'John',
'last_name' => 'Doe',
'address_1' => '969 Market',
'address_2' => '',
'city' => 'San Francisco',
'state' => 'CA',
'postcode' => '94103',
'country' => 'US',
'email' => 'john.doe@example.com',
'phone' => '(555) 555-5555'
],
'shipping' => [
'first_name' => 'John',
'last_name' => 'Doe',
'address_1' => '969 Market',
'address_2' => '',
'city' => 'San Francisco',
'state' => 'CA',
'postcode' => '94103',
'country' => 'US'
],
'line_items' => [
[
'product_id' => 93,
'quantity' => 2
],
[
'product_id' => 22,
'variation_id' => 23,
'quantity' => 1
]
],
'shipping_lines' => [
[
'method_id' => 'flat_rate',
'method_title' => 'Flat Rate',
'total' => 10
]
]
];
print_r($woocommerce->post('orders', $data));
不过,我对此有一些问题。我还没有测试它,因为我们在现场商店中使用它,但我想知道一些在任何地方都没有提到的东西。除了使用我们不想要的 3rd 方插件时。我们只想使用原生、干净的 WooCommerce 插件。
• 是否可以使用付款方式作为参考,即使它在 WP 本身中不存在?因此,如果我们使用 Stripe 在 messenger 中创建并支付订单,即使 Stripe 本身并没有在我们的商店中使用,我们仍然可以将其作为 $data 数组中的支付参考推送:
'payment_method' => 'stripe',
'payment_method_title' => 'Offsite Payment Method',
我读到,如果您想获取付款令牌,您需要先正常创建订单,然后在付款后更新状态,但由于我们在异地进行整个订购和付款处理(仅使用 WooCommerce 目录)并且想要在WP之外成功下单后下单,我有点疑惑。
除非您使用 cocart 之类的东西,否则可以找到很多关于缺少购物车功能的信息,这是我们不想要的,因为我们不能要求客户全部安装另一个才能使用我们的工具。
有人遇到过类似的用例吗?
解决方案
是否可以使用付款方式作为参考,即使它在 WP 本身中不存在?
是的,它们基本上是字符串,您可以传递任何字符串类型的数据,不管它是否存在于 wp 中
正如您所说“如果要获取付款令牌,您需要先正常创建订单,然后在付款后更新状态”
这是真的,首先你需要创建订单..
为什么 ?
因为在大多数支付网关中,都会有一个名为 orderId 的字段来将订单 ID 与该交易绑定并保持使用它的清洁......所以在创建订单时需要先创建订单,然后再设置状态待处理。然后您将获得 orderId 现在将用户重定向到支付网关。一旦用户再次返回,如果成功,则将订单状态更新为处理;如果失败,则更新为失败
推荐阅读
- sql - 当 datetime 字段期望满足删除条件时,为什么 SQL Server 不删除条目?
- typescript - 我需要从 ion-datetime 中选择的值中获取特定参数(日期、月份、年份)
- windows - 如何从笔记本安全地访问我的网站?(刚刚重新安装了windows7)
- firebase - E/FirebaseInstanceId(5789):主题同步或令牌检索因硬故障异常而失败:AUTHENTICATION_FAILED。不会重试操作
- rust - 如何处理被标记为包含特洛伊木马的箱子?
- r - 数据表包在 R 中是否支持超过 2^31 行的数据表?
- json - JSON 模式帮助,对象数组
- python - 这个分词实现的复杂性的时间和空间是多少?
- sql - 按平均评分排序,但也按总评论数排序
- r - 通过交互手动调整 ggplot 中的颜色和线型