私たちは大規模なオンラインストアに取り組んでいます。 そのため、UT(1C Trade Management)からO Ozonの注文を管理する必要がありました。
意味は次のとおりです。PostgreSQLデータベースがあり、1Cはこのデータベースで動作し、注文のデータを入力し、注文のステータスを変更します。 また、サーバー上にあり、3分ごとにクラウンで実行されるPHPスクリプトもあります。 このスクリプトは何をすべきですか?
- 1. ozon APIからトークンを受け取ります。
- 2. Ozonですべての新しい注文を収集します。 受け取った注文で新しいXMLファイルを作成します。
- 3.データベースから特定のステータスの注文を受け取ります。 これらの注文のステータスをOzonに変更します。 データベース内のこれらの注文のステータスを変更します。
- 4. Ozonで特定のステータスの注文をクローズします。 データベース内のこれらの注文のステータスを変更します。
トークンの取得に問題はありませんでした。 file_get_contents()関数を使用して、私が望むものを達成しました。
さらに問題が発生しました。 要求とともに、ヘッダーを送信する必要がありました。 APIの文書化はかなり不十分で、コード例はありません。Googleには例が見つかりませんでした。 私は試行錯誤で働かなければなりませんでした。 私は最初にfile_get_contents()を介して同じ方法で行動しようとしました-無駄に。 私が何をするにしても、チャンネルを作成することができないというエラーを表示します。
その結果、カールを使用しました。 新しく作成された注文のリストを取得するためのコード(jsonおよびxml):
ここでは、xmlファイルの作成とpostgreSQLデータベースの変更に関連する瞬間については説明しません。これは既に余談であるためです。
次に、注文のステータスを変更する必要がありました。 これを行うには、特にPUTリクエストの本文で、新しいステータスを転送する必要がありました(XMLの形式での長い調査で判明しました)。
注文ステータスの変更は次のとおりです。
異なるステータスの場合、異なるXMLデータを使用する必要があります。 利用可能なすべてのステータスのリストは次のとおりです。
<OrderStatesResponse> <OrderStates> <OrderState> <Name></Name> <SysName>ClientOrderStateMerchantCreated</SysName> </OrderState> <OrderState> <Name> </Name> <SysName>ClientOrderStateMerchantAwaitingPayment</SysName> </OrderState> <OrderState> <Name></Name> <SysName>ClientOrderStateMerchantPaymentDone</SysName> </OrderState> <OrderState> <Name> </Name> <SysName>ClientOrderStateMerchantAccepted</SysName> </OrderState> <OrderState> <Name></Name> <SysName>ClientOrderStateMerchantSent</SysName> </OrderState> <OrderState> <Name></Name> <SysName>ClientOrderStateMerchantDone</SysName> </OrderState> <OrderState> <Name></Name> <SysName>ClientOrderStateMerchantCanceled</SysName> </OrderState> </OrderStates> </OrderStatesResponse>
また、注文をキャンセルする必要がある場合もあります。 これを行うには、キャンセルの理由をリクエストボディにXML形式でも指定します。
例を挙げます(理由は次のとおりです:「注文数が利用可能な数を超えています」):
したがって、サイトからオゾンの注文を管理できます。
私の記事が誰かに役立つことを願っています。 ご清聴ありがとうございました!
何らかのドキュメント