Как да използвате 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

Не можете да създадете транзакция или да промените financial_status на всяка поръчка, създадена чрез Shopify API. Вижте http://docs.shopify.com/api/order, където изрично се казва това.

Така че по същество трябва да подадете financial_status като „paid“, когато създавате поръчката и в случай че плащането ви не е било успешно от шлюза, ИЗТРИЕТЕ поръчката. 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, за да маркирате поръчка като платена. Financial_status е резултат от транзакциите, извършени по поръчка. Така че, ако дадена поръчка financial_status в момента е разрешена, можете да маркирате поръчката като платена, като прихванете всички дължими средства чрез нашия API за транзакции - или като маркирате поръчката като платена в админ.

person Ravi    schedule 23.01.2019