Как использовать Shopify API для изменения статуса оплаты заказов?

Я создаю приложение iOS для своего собственного магазина Shopify. Я создал частное приложение и использовал ключ 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"]}}

person Evan Huang    schedule 21.06.2014    source источник


Ответы (4)


Всего несколько вещей, чтобы попробовать:

Я заметил, что в документе транзакции есть кавычки вокруг суммы, которой у вас нет. в вашем коде (например, попробуйте "50.00" вместо 50):

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

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

Кроме того, видели ли вы это обсуждение на форумах Shopify?

...похоже, это работает, пока сумма транзакции не превышает общий непогашенный остаток по заказу. Из того, что я понял, вы не можете взимать плату или создавать транзакцию на сумму, превышающую начальную сумму продажи заказа...

person Steph Sharp    schedule 21.06.2014

Вы не можете создать транзакцию или изменить финансовый_статус любого заказа, созданного через API Shopify. Обратитесь к http://docs.shopify.com/api/order, где это прямо указано.

Таким образом, вам нужно передать финансовый_статус как «оплаченный» при создании заказа, и в случае, если ваш платеж не прошел через шлюз, УДАЛИТЕ заказ. http://docs.shopify.com/api/order.html#destroy

person Akshay Agarwal    schedule 04.11.2014

У меня возникла проблема с изменением статуса заказа ранее, позже я решил, чтобы избавиться от ошибки, вы должны позаботиться о следующих вещах.

Цена заказа должна быть равна или меньше точной цены заказа

  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);
		
		}

person Shah Faisal    schedule 11.05.2015

Вы не можете написать в поле Financial_Status, чтобы отметить заказ как оплаченный. Финансовый_статус — это результат транзакций, выполненных по заказу. Таким образом, если заказ финансовый_статус в настоящее время авторизован, вы можете пометить заказ как оплаченный, зафиксировав все средства, которые все еще должны, с помощью нашей API транзакций - или пометив заказ как оплаченный в админке.

person Ravi    schedule 23.01.2019