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

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

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

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

PHP

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

API

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

Q&A

解決済

4回答

6277閲覧

PHPでAPIを叩いた時のレスポンスの受け取り方

seventhencore

総合スコア22

POST

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

PHP

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

API

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

0グッド

1クリップ

投稿2017/08/27 18:29

編集2017/08/28 01:28

WEB系?の技術を勉強中です。

HTMLでのフォームに入力された情報をPOSTで送信する際は、actionで受け取るプログラムを指定し、PHPで受け取った場合は $_POST から情報を取り出すことがきるかと思いますが、
PHPからAPIを叩いた時に返ってくるレスポンスはどういった形で受け取るのでしょうか?

API(PAY.JPというカード決済のサービスを利用するためのAPI)の仕様ではレスポンスてはJSON形式で返ってくるようです。

08/28 10:24 追記
試したコードはAPI リファレンスに載っていたものをコピペで使いました。

PHP

1require_once 'vendor/autoload.php'; 2\Payjp\Payjp::setApiKey("**********"); 3\Payjp\Customer::create(array( 4 "description" => "test" 5));

こちらは顧客の作成を行っていまして、コマンドラインからこのテストコードを実行すると、
PAY.JPの管理画面の方で顧客が作成されているのは確認しています。

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

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

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

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

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

tsuemura

2017/08/27 22:06

PHPでAPIを叩く方法もいろいろありますので、まずは該当部分のソースコードを回答に追記していただけますか?
m.ts10806

2017/08/28 00:25

仕様がきちんと提示されているAPIであれば解説もあるでしょうしサンプルソースも置いてあると思います。まずはその通りに組んでみてはいかがでしょうか。
seventhencore

2017/08/28 01:48

ソースコードを追記しました。POSTする方法についてはたくさんのサンプルが記載されていますが、受け取りの方法等に関しては記載がなかったのでこのような質問をさせていただきました。
m.ts10806

2017/08/28 02:41

実際の利用方法を提示されたほうが良いかと思います。回答でも出ているajaxはあくまで利用方法の例であり、今回そのまま当てはめられるとは限りません。画面から何か情報を渡すのか、とか、受け取った情報をどのように使いたいのか、とか。
guest

回答4

0

ベストアンサー

PAY.JP と言うことですので、まずは、APIガイド を最初から最後まで読んでみましょう。

APIガイドでは、PHP用ライブラリが、紹介されていますので、readmeRequest Exampleを読みながら サンプルを試して、ライブラリの使い方を理解してください。

API の詳細な内容については、 APIリファレンス を参照してください。

API のレスポンスは、JSON なので、json_decodeを使うことで、PHP の変数や配列として処理できます。


(コメントを受けて追記)

APIガイド と API リファレンス のサンプルを組み合わせてみました。 (エラーチェックは入れていません。)

PHP と言うことなので、

require_once 'vendor/autoload.php'; \Payjp\Payjp::setApiKey("sk_test_c62fade9d045b54cd76d7036"); $ret = \Payjp\Charge::create(array( "card" => "tok_76e202b409f3da51a0706605ac81", "amount" => 3500, "currency" => "jpy" )); echo $ret;

と実行すれば、 $ret に 以下が返ってくるのではないでしょうか?

{ "amount": 3500, "amount_refunded": 0, "captured": true, "captured_at": 1433127983, "card": { "address_city": null, "address_line1": null, "address_line2": null, "address_state": null, "address_zip": null, "address_zip_check": "unchecked", "brand": "Visa", "country": null, "created": 1433127983, "customer": null, "cvc_check": "unchecked", "exp_month": 2, "exp_year": 2020, "fingerprint": "e1d8225886e3a7211127df751c86787f", "id": "car_d0e44730f83b0a19ba6caee04160", "last4": "4242", "name": null, "object": "card" }, "created": 1433127983, "currency": "jpy", "customer": null, "description": null, "expired_at": null, "failure_code": null, "failure_message": null, "id": "ch_fa990a4c10672a93053a774730b0a", "livemode": false, "metadata": null, "object": "charge", "paid": true, "refund_reason": null, "refunded": false, "subscription": null }

$ret に対して、json_decode すれば良いと思います。

投稿2017/08/28 00:54

編集2017/08/28 02:21
CHERRY

総合スコア25171

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

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

seventhencore

2017/08/28 01:44 編集

参考リンクをありがとうございます。 APIガイドは部分的にしか読んでいませんが、PHPライブラリやそのreadme,Request Exampleは質問前に読ませていただきました。POSTする例は紹介されているのですが、それを受ける部分の記載がなく、かつPHPからPOSTした時の処理の流れがわからなかったのでこのような質問をさせていただきました。
CHERRY

2017/08/28 02:30 編集

マニュアルの例を寄せ集めてみましたが、出先で、実際に動かせる環境が無いので、テストはしていません。また、エラーチェックを一切していませんが、実運用の際は、エラーチェックをするようにしてください。
seventhencore

2017/08/28 02:38

ありがとうございます。 3行目の実際にAPIを叩いている内容を変数に代入すればいいのですね。 (PHPの基本がわかっていませんでした) 確かにレスポンスの内容が変数に入っていることを確認しました。 これでやりたいことができそうです。ありがとうございました。
guest

0

おそらく API 自体は HTTP リクエスト(による ajax) だと思いますが、であれば答えは HTTP レスポンスボディが JSON の状態で返ってくるでしょう。

受け取った側はレスポンスボディをそのまま decode するだけです。

投稿2017/08/28 00:43

tacsheaven

総合スコア13703

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

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

seventhencore

2017/08/28 01:45

回答ありがとうございます。 ajax というものを全く知らないので、そちらをキーワードに少し勉強してみます。
guest

0

HTMLではactionで受け取るプログラムを指定できますが、PHPの場合(また、今回のケース)ではどのように指定するのでしょうか?

Formのactionはデータの送信先ですね。
PHPでもHTML記述は出来ますので記述方法は同じです。

<form method="post" action="pay.jp"> <input type="hidden" name="token" value="1234567890"> ~ 中略 ~ <button type="button">submit</button> </form>

このような形で送信されていると思います。
これはあくまで送信のみなので、結果の受信側が必要ですが、PHPであれば受信したい部分で

var_dump($_POST);

とすれば受信した中身は表示されると思います。
(ダンプとして表示するだけなので、あくまで確認のためです)
デコードなどが必要かと思いますが、まずは結果を受信してみて中身を見ることから確認されると良いと思います。
他の方の回答でもあるようにajax自体をご存知ないとのことですので、まずはそちらの仕組みから理解されても良いかと思います。

投稿2017/08/28 02:16

zeijaku.net

総合スコア161

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

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

0

PAY.JPの戻り値はajaxなどで返ってきます。
(詳細はhttps://pay.jp/docs/api/#%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B9%E5%BD%A2%E5%BC%8F にも記載があります)
その為、ajaxをデコードして受け取ればよいのですが、これはHTMLだけでは出来ません。
これはリクエスト(FormからActionで指定した先にデータを送信すること)に対して戻ってくるレスポンス(入金処理が正常に終了しました等)を受け取る処理が別途必要になるからです。
レスポンスを受け取る処理はHTMLだけでは行うことが出来ず、JavaScriptやjQuery(他のJavaScript系でも可)、PHPやRubyなど(PythonやPerlといったサーバーサイドのプログラム)を使って取得する必要があります。

投稿2017/08/28 01:19

zeijaku.net

総合スコア161

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

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

seventhencore

2017/08/28 01:50

回答ありがとうございます。 レスポンスを受け取るプログラムが必要な事は理解しました。 HTMLではactionで受け取るプログラムを指定できますが、PHPの場合(また、今回のケース)ではどのように指定するのでしょうか?
zeijaku.net

2017/08/28 02:17

間違えてコメントではなく回答に追加する形になってしまいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問