【问题标题】:How to use the Shopify API to change the payment status of orders?如何使用 Shopify API 更改订单的支付状态?
【发布时间】:2014-06-21 10:05:34
【问题描述】:

我正在为我自己的 Shopify 商店构建一个 iOS 应用。我创建了一个私有应用程序并使用 API 密钥和密码调用 API,格式如下:

https://apikey:password@hostname/admin/resource.json

当我尝试使用 API 更改订单的付款状态时出现问题。 (我可以毫无问题地创建新订单)。我没有找到任何用于更改订单财务状态的 API。我无法通过修改订单来更改财务状况,甚至无法通过 API 进行任何交易,无论交易的“种类”是:“授权”、“捕获”或“销售”。

那么如何使用 API 更改订单的财务状态?

以下是使用 API 的请求和响应示例:

对象调用:

/admin/orders/#{order_id}/transactions.json

请求:

{
    "transaction": {
        "amount": 50, 
        "test":true,
        "kind": "sale"
    }
}

回复:

{"errors":{"kind":["sale is not a valid transaction"]}}

【问题讨论】:

    标签: shopify


    【解决方案1】:

    只需尝试几件事:

    我注意到在 Transaction doco 中有引号,而您的代码中没有这些引号(例如,尝试“50.00”而不是 50):

    POST /admin/orders/#{id}/transactions.json
    
    {
      "transaction": {
        "amount": "10.00",
        "kind": "capture"
      }
    }
    

    另外,您是否在 Shopify 论坛上看到过 this discussion

    ...只要交易金额不超过订单的总未结余额,它似乎就可以工作。根据我收集到的信息,您不能收取或创建超过订单初始销售额的交易...

    【讨论】:

      【解决方案2】:

      您无法创建交易或修改通过 Shopify API 创建的任何订单的财务状态。请参阅http://docs.shopify.com/api/order,其中明确说明了这一点。

      因此,本质上,您需要在创建订单时将财务状态传递为“已付款”,如果您的付款未从网关成功,请删除该订单。 http://docs.shopify.com/api/order.html#destroy

      【讨论】:

        【解决方案3】:

        我之前更改订单状态时遇到了一些问题,后来我解决了,为了摆脱错误,您应该注意以下事项。

        订单的价格应该等于或低于订单的确切价格

        1. 价格
        2. 价格 = 准确的订单价格,订单将被标记为已付款
        3. 支付价格>准确的订单价格,你会得到错误
        4. 状态已付款的订单,更改状态时会出错 付款

        POST /admin/orders/#{id}/transactions.json
        
        {
          "transaction": {
            "amount": "10.00",
            "kind": "capture"
          }
        }

        $order_get	= $shopify('GET', '/admin/orders/'.$order_id.'.json' );
        		
        		$total_price = $order_get['total_price'];
        		
        		if( $order_get['financial_status'] != 'paid' ){
        		
        		
        				$arguments	= array( "order" => array(
        									'note' => 'Paid'
        									)
        							);
        				
        				$order_put = $shopify('PUT', '/admin/orders/'.$order_id.'.json', $arguments);
        				
        				
        				$arg  = array( "transaction" => array(
        								"amount" => $total_price,
        								"kind"   => "capture"
        								)
        						);
        				
        				$order_put = $shopify('POST', '/admin/orders/'.$order_id.'/transactions.json', $arg);
        		
        		}

        【讨论】:

          【解决方案4】:

          您无法写入 Financial_status 字段以将订单标记为已付款。财务状态是订单上发生的交易的结果。因此,如果当前已授权订单金融状态,您可以通过我们的Transaction API 捕获任何仍欠的资金来将订单标记为已付款 - 或在管理员中将订单标记为已付款。

          【讨论】:

            猜你喜欢
            • 2016-12-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-01-10
            • 2019-08-27
            • 1970-01-01
            • 1970-01-01
            • 2021-07-26
            相关资源
            最近更新 更多