如何使用Shopify API更改订单的付款状态?

时间:2014-06-21 10:05:34

标签: shopify

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

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

当我尝试使用API​​对订单进行付款状态更改时出现问题。 (我可以毫无问题地创建新订单)。我找不到任何用于更改订单财务状况的API。我不能通过修改订单来改变财务状况,或者我甚至不能通过API进行任何交易,无论" kind"交易是:"授权","捕获"或"销售"。

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

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

被叫对象:

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

请求:

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

响应:

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

4 个答案:

答案 0 :(得分:1)

只需要尝试几件事:

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

POST /admin/orders/#{id}/transactions.json

{
  "transaction": {
    "amount": "10.00",
    "kind": "capture"
  }
}

另外,你有没有在Shopify论坛上看到this discussion

  

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

答案 1 :(得分:1)

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

基本上,您需要将financial_status传递给付费'在创建订单时,如果您的付款未从网关成功,请删除订单。 http://docs.shopify.com/api/order.html#destroy

答案 2 :(得分:1)

我在更改订单状态之前遇到了一些问题,后来我解决了,为了摆脱错误你应该处理以下事情。

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

  1. 价格<确切的订单价格,订单将被标记为部分付费
  2. 价格=确切的订单价格,订单将标记为付费
  3. 付费价格>确切的订单价格,您将收到错误
  4. 订单状态已付,您将收到更改状态的错误 付款
  5. 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);
    		
    		}

答案 3 :(得分:0)

您无法写入financial_status字段将订单标记为已付款。 financial_status是订单上交易的结果。因此,如果当前已授权某个订单financial_status,则可以通过Transaction API捕获尚欠的资金来标记该订单为已付款-或在管理员内部将该订单标记为已付款。