バージョン選択

フォーラム

メニュー

オンライン状況

62 人のユーザが現在オンラインです。 (48 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 61
NSX-R もっと...

サイト内検索

プラグイン > 開発について > EC-CUBE API 受注情報の更新

開発について

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nkk
投稿日時: 2018/4/9 9:49
対応状況: −−−
半人前
登録日: 2018/3/23
居住地:
投稿: 11
EC-CUBE API 受注情報の更新
[EC-CUBE] 3.0.15、新規インストール
[レンタルサーバ] VPS
[OS] Ubuntu16.04LTS
[PHP] 7.0
[データベース] MySQL 5.7
[WEBサーバ] Apache2.4
[ブラウザ] Chrome
[導入プラグインの有無] クローズサイト、ソニーペイメントサービス
[カスタマイズの有無] 無し
[現象]

お世話になっております。

EC-CUBE APIを利用して受注情報を更新しようとしていますが
うまく動作しないのでアドバイスをお願いします。

仕様では 「http(s)://<host>/api/v1/order/{id}」にPUTすることで
該当受注の更新が行われるとあります。

下記コードはGoogleAppsScript(like javascript)によるPUT部分のものです。
内容としては受注ステータスを5:配送済みにするものです。

var headers = {
 'Authorization': 'Bearer ' + getKeyValue('access_token')
};
var payload = {
 'OrderStatus' : {'id': 5},
 'CustomerOrderStatus' : {'id': 5}
};
var params = {
 'method' : 'PUT',
 'headers' : headers,
 'Content-Type': 'application/json',
 'payload': JSON.stringify(payload),
 'muteHttpExceptions' : true,
};

var url = getKeyValue('host') + getKeyValue('order_url') + '/' + id;
var response = UrlFetchApp.fetch(url, params);
var code = response.getResponseCode();


こちらを実行するとレスポンスコードとして204が返ってきます。
仕様ではPOST、PUTでは201が返ってくるようですが、
204はコンテンツなし、つまりは処理するものがないということなのでしょうか?

一方で正しくPUTするためにはpayload部をどのように指定すればよいのでしょうか?


追記:実行ログ
[2018-04-09 15:59:10,092842] eccube.INFO [NULL] [36d79979] [NULL] [RouterListener:onKernelRequest:145] - Matched route "api_operation_put". {"route_parameters":{"_controller":"Plugin\\EccubeApi\\Controller\\EccubeApiCRUDController::update","table":"order","id":"113","_route":"api_operation_put"},"request_uri":"https://<host>/api/v1/order/113"} [PUT, /api/v1/order/113, xxx.xxx.xxx.xxx, NULL, Mozilla/5.0 (compatible; Google-Apps-Script)]
[2018-04-09 15:59:10,093305] eccube.INFO [NULL] [36d79979] [NULL] [AnonymousAuthenticationListener:handle:62] - Populated the TokenStorage with an anonymous Token. [PUT, /api/v1/order/113, xxx.xxx.xxx.xxx, NULL, Mozilla/5.0 (compatible; Google-Apps-Script)]
[2018-04-09 15:59:10,094205] eccube.INFO [b5d06247] [36d79979] [NULL] [LogListener:logRequest:83] - > PUT /api/v1/order/113 [PUT, /api/v1/order/113, xxx.xxx.xxx.xxx, NULL, Mozilla/5.0 (compatible; Google-Apps-Script)]
[2018-04-09 15:59:10,209469] eccube.INFO [b5d06247] [36d79979] [NULL] [LogListener:logResponse:96] - < 204 [PUT, /api/v1/order/113, xxx.xxx.xxx.xxx, NULL, Mozilla/5.0 (compatible; Google-Apps-Script)]
nkk
投稿日時: 2018/4/10 0:32
対応状況: 解決済
半人前
登録日: 2018/3/23
居住地:
投稿: 11
Re: EC-CUBE API 受注情報の更新
自己レスです。


一部ソースの修正とpayloadの変更で更新ができました。

/app/Plugin/EccubeApi/Util/EntityUtil.php
L175
- if (!is_array($srcProperties[$name])) {
+ if (is_null($srcProperties[$name])) {

コメントにはプロパティ名の値が空の時はスキップとあったのでis_nullに変更しました。


また、payload部をstringではなく、バイナリで送ることで認識させることができました。

var headers = {
 "Authorization": "Bearer " + getKeyValue('access_token')
};
var payload = {
 OrderStatus : 5,
 CustomerOrderStatus : 5
};
var params = {
 "method" : "PUT",
 "headers" : headers,
 "Content-Type": "application/json",
 "payload": payload,
 "muteHttpExceptions" : true,
};

var url = getKeyValue('host') + getKeyValue('order_url') + '/' + id;
var response = UrlFetchApp.fetch(url, params);
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

統計情報

総メンバー数は33,204名です
総投稿数は87,771件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1790
4
yuh
1515
5
468
1271
6
red
1178
7
umebius
1007
8
fukap
907
9
shutta
827
10
tsuji
815
11 ramrun 789
12
tao_s
664
13 karin 656
14 sumida 641
15
homan
633
16 DELIGHT 571
17
h_tanaka
571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© LOCKON CO.,LTD. All Rights Reserved.