はじめに
どこかの外部Webサービスのデータを取得する為に外部のサーバーにアクセスしたい!!
そんな時に使えるのがこのGuzzel HTTPクライアントです。
業務でGMOペイメントの決済と送金機能のレビューをする際に使用されていたので、ここで備忘録として残そうかと思い記載しました。
こちらは備忘録として書いている為、そんなに分かりやすく書いてなくてすみません・・・
このブログの解説は分かりやすかったです!
https://blog.capilano-fw.com/?p=6033
目次
Guzzelインストール
Guzzel HTTPというライブラリで、API通信を行いますので、Laravelにインストールします。
プロジェクトのディレクトリ内で以下のコマンドを入力します。
$ composer require guzzlehttp/guzzle
使い方
今回はpostメソッドを例に出します。
【使い方】
・use Illuminate\Support\Facades\Http;
でHTTPファサードをuse宣言します。
・postでhttp通信する場合、Http::post('http通信を行うURLを入力', [必要なデータがあればオブジェクトに入れる]);
を記述する
・$response->body()
htmlのbodyタグの中身(ブラウザの表示部分のbody)をstringで取得する。
・$response->json()
$response->body()の値がjson形式の場合、配列でデータを取得する。
// 何らかのController.phpファイル
// 下記追記 (config/app.phpファイルのaliasesに登録してあるHTTPファサードを使用)
use Illuminate\Support\Facades\Http;
public function edit()
{
$response = Http::post('http通信のURL',
[
'key' => 'value',
]);
dd($response->body());
dd($response->json());
}
具体例
決済した後にキャンセルがあった場合、銀行口座が必要になると思います。
今回の場合はGMOペイメントに登録されているユーザーの銀行口座情報を取得する例です。
// BankAccountController.php
// 下記追記
use Illuminate\Support\Facades\Http;
public function getBankAccount($bank_id)
{
// GMOペイメントサービス内にある、ユーザーの銀行口座を取得する為のURLを入力
$response = Http::post('https://〜途中省略〜AccountSearch.json'),
// ユーザーの銀行口座を取得する為に必要な情報を入力する
[
// GMOのダッシュボードに表示されているショップID
'Shop_ID' => 'test00000000',
// GMOのダッシュボードに表示されているショップパスワード
'Shop_Pass' => 'testpass',
ユーザーを特定する為のID
'Bank_ID' => $bank_id,
]);
dd($response->body());
dd($response->json());
dd($response->json()['Bank_Name']);
}
$response->body()で取得したデータ
{
"Bank_ID":"00000000-0000test0test",
"Delete_Flag":"0",
"Bank_Name":"○ ○ 銀行",
"Bank_Code":"0001",
"Branch_Name":"○ ○ 支店",
"Branch_Code":"123",
"Account_Type":"1",
"Account_Number":"1234567",
"Account_Name":"TEST TEST",
"Free":"",
"Branch_Code_Jpbank":"",
"Account_Number_Jpbank":""
}
$response->json()で取得したデータ
array:12 [▼
"Bank_ID" => "00000000-0000test0test"
"Delete_Flag" => "0"
"Bank_Name" => "○ ○ 銀行"
"Bank_Code" => "0001"
"Branch_Name" => "○ ○ 支店"
"Branch_Code" => "123"
"Account_Type" => "1"
"Account_Number" => "1234567"
"Account_Name" => "TEST TEST"
"Free" => ""
"Branch_Code_Jpbank" => ""
"Account_Number_Jpbank" => ""
]
$response->json()['Bank_Name'])で取得したデータ
"○ ○ 銀行"
こんな感じで、GMOペイメントのDBからAPIを用いてデータを取得できました!