我正在为自己的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"]}}
答案 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)
我在更改订单状态之前遇到了一些问题,后来我解决了,为了摆脱错误你应该处理以下事情。
订单价格应等于或低于订单的确切价格
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捕获尚欠的资金来标记该订单为已付款-或在管理员内部将该订单标记为已付款。