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

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

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

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

PHP

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

解決済

【cURL】ターミナルでは成功するのにPHPでは失敗する

k_koichi
k_koichi

総合スコア13

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

PHP

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

2回答

0評価

4クリップ

13228閲覧

投稿2016/03/12 14:47

k_koichiと申します。
Rubyで似たような質問をされている方がおりましたが、その方法ではうまくいかなかった為質問させて頂きます。

決済サービスのSPIKEにてAPIでのやりとりを実現しようとしておりますが、
コンソールではうまくいくのですが、PHPでは失敗してしまいます。

[コンソール] curl "https://api.spike.cc/v1/tokens" \ -u "sk_test_apikey:" \ -d "card[number]=4444333322221111" \ -d "card[exp_month]=3" \ -d "card[exp_year]=2017" \ -d "card[cvc]=111" \ -d "card[name]=TARO SPIKE" \ -d "currency=JPY" \ -d "email=foo@example.com"

PHP

<?php include(dirname(__FILE__).'/../const.php'); // 問い合わせ先 $host = API_URL . 'tokens'; // APIキー $key = API_KEY; // ホストに接続 $ch = curl_init($host); // データ $data = array( "card[number]" => 4444333322221111, "card[exp_month]" => 3, "card[exp_year]" => 2017, "card[cvc]" => 111, "card[name]" => 'TARO SPIKE', "currency" => 'JPY', "email" => 'foo@example.com' ); // データをJSONエンコードする $json_data = json_encode($data); //POSTを指定 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); // ヘッダーにJSONを指定 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json')); // 送信するデータをセット curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); // TRUE を設定すると出力結果を何も加工せずに返します。 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 接続に使用するユーザー名とパスワード。 "[key]:" 形式で指定します。 curl_setopt($ch, CURLOPT_USERPWD, $key . ':'); // HTTP/1.1 を使用する curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); $return = curl_exec($ch); curl_close($ch); // 値をJSONデコードして配列化する $json = json_decode($return, true); // ダンプする print_r($json); ?>

PHPでのリクエスト結果は、以下のようなエラーメッセージが返ってきます。

Array ( [error] => Array ( [type] => invalid_request_error [message] => カード名義を入力してください。 カード番号を入力してください。 セキュリティーコードを入力してください。 有効期限(月)を入力してください。 有効期限(年)を入力してください。 指定したクレジットカードは未対応です。 ) )

card[...]の指定方法が間違っている為に、認識されていないように見えます。
正しい指定方法を教えていただけないでしょうか。

宜しくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

PHP

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