質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

3回答

4742閲覧

楽楽精算のAPI連携をPHPで

ruta0317

総合スコア1

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2020/09/28 05:25

編集2020/09/28 05:46

業務で楽楽精算を使っていて、マスタ取込を自動化したいため、
楽楽精算のAPI連携を利用してみました。
製品サポートから頂いたサンプルプログラムはJavaでしたが、
事情により社内サーバにJavaがインストールできず、PHPで実装中です。
PHPでWebAPIの利用ははじめてでありトラブルが連続しています。

パラメータ指定、uploadファイル指定の基本的な部分で恐縮ですが
サンプルもしくは対応方法をご教示いただけないでしょうか。

発生している問題・エラーメッセージ

製品サポートにて下記エラーメッセージを確認いただいたところ、
パラメータが指定されていないとの返答あり。
(url部は、一部マスクしています)

{"status":"error","code":"500","url":"https://xxxxxx.rakurakuseisan.jp/xxxxxxxxxxx/api/v1/csvimport","query":{},"errors":{"code":"999","msg":"内部エラーが発生しました。","description":[]},"version":"v1","accessTime":"2020-09-28 14:05:12 +0900"}"

該当のソースコード

※パラメータ指定部分のみ抜粋

//---CURL初期化 $curl = curl_init(); //---パラメータ指定 $data2_ary = [ "masterId" => $master, "duplicateKey" => 1, "sendPasswordEmail" => 0, "createCategory" => 1, ]; //---POSTデータ形式に変換 $json_data2 = json_encode($data2_ary); //---curl_setopt設定 curl_setopt($curl, CURLOPT_POSTFIELDS, $data_json2); //---接続実行 $result = curl_exec($curl); //---結果確認 var_dump($result);

試したこと

curl_setoptのマニュアル参照や各種Webサイト参照の上、
パラメータ設定方法を試行錯誤しています。

Pythonの情報なども参考にしましたが現状うまくいかずです。
https://qiita.com/q_masa/items/8ebcda9ff016d60e9143
※当方Pythonに関しては無知です。

補足情報(FW/ツールのバージョンなど)

Widows環境にて実行
php バージョン 7.3.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/09/28 05:35

コードはマークダウンのcode機能を利用してご提示ください。
ruta0317

2020/09/28 05:51

質問文修正しました。 作法がなっておらず失礼いたしました。
m.ts10806

2020/09/28 06:03 編集

「ヘルプ」(特に「質問するときのヒント」)にざっと目を通せばよいかと思います。説明書なので。
ruta0317

2020/09/28 06:27

御丁寧にありがとうございます。
guest

回答3

0

ベストアンサー

楽々精算のAPI仕様を読んではいませんが

ぱっと見

PHP

1$data2_ary = [ 2"masterId : {$master}", 3"duplicateKey:1", 4"sendPasswordEmail:0", 5"createCategory : 1", 6];

この部分はかなり不自然と言うか、その後のjson_encode()と整合性が取れていません

多分こうなんじゃないでしょうか。

PHP

1$data2_ary = [ 2"masterId" => $master, 3"duplicateKey" => 1, 4"sendPasswordEmail" => 0, 5"createCategory" => 1, 6];

いきなり全部動かそうとしてもデバッグすらおぼつかないと思うので、

  • 理想的なJSONを固定値で用意してcurl_exec()で送信してみる
  • JSONを動的に生成してみて、curl_exec()で送る前に表示してみて理想通りになっているか確認する

など、一歩一歩進めていくことをお勧めします。

投稿2020/09/28 05:34

tanat

総合スコア18727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ruta0317

2020/09/28 05:47

早々の御回答ありがとうございます。一歩一歩進めてみます。
guest

0

参考サイトを見た感じですと

Python

1 data_obj = {'json': json.dumps(payload)}

となっているのでおそらく

PHP

1$data2_ary = array("json" => 2array( 3"masterId" => $master, 4"duplicateKey" => 1, 5"sendPasswordEmail" => 0, 6"createCategory" => 1, 7) 8);

ではないでしょうか。

投稿2020/09/28 05:48

gogoweb_ikeda

総合スコア1426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ruta0317

2020/09/28 23:02

御回答ありがとうございます。いただいたコーディング内容は試していませんでした。 ただ、試行したところ同様のエラーとなってしまい現状解決には至っておりません。
guest

0

参考サイトからですが
ここはされているという事ですよね?

headers = { 'X-RS-apitoken' => API_TOKEN }

ここの$masterが追加先のID?

payload = { "masterId" => $master, "duplicateKey" => 1, "sendPasswordEmail" => 0, "createCategory" => 1, }

参考サイトのPythonでの処理ですと

Python

1 files = {'uploadFile': (filename, csvfile, 'text/csv')}

POSTするパラメータに
'uploadFile' => csvfileの内容
がある

Python

1 data_obj = {'json': json.dumps(payload)}

'json' => payload

Python

1 response = requests.post(url=url, 2 headers=headers, 3 files=files, 4 data=data_obj 5 )

URLのパラメータに
・(headers)
・files
・data
があると読めるんですが...
この辺りの処理が「該当のソースコード」には無いように見受けられますが...
こういう時はブラウザから直でAPIコマンド実行して試されるのが一番早いかと思います。

投稿2020/09/28 06:59

kuma_kuma_

総合スコア2506

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ruta0317

2020/09/28 22:58

御回答ありがとうございます。 ひとまずパラメータ(data)の部分だけを確認したく、抜粋でソースコード記述したためわかりにくくなってしまっていました。申し訳ございません。 現状、headerとurl部分はクリアできており、filesとdata部分が課題となっています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問