HTTPのメッセージボディについて質問です。
決済代行会社との接続で悩んでいます。
要求した決済の結果を、
「ヘッダに「content-type : text/plain;charset=Shift_JIS」、メッセージボディの1、2行目に以下の文字列を返します。」
とあり、
CHECK:OK SID=xxxxxx GOUKEI=nnnnnn
や
CHECK:NG SID=xxxxxxx
(2行目もある場合あり)
と仕様書に書いてあります。
どのようにしたら、この中から、CHECK: の結果がNGかOKか、や、SIDの番号や、GOUKEIの額を取り出すことが出来るのでしょうか?
mb_・・・・
と色々な関数があるかと思いますが、どのようにしたら、HTTPのメッセージボディの1行目を検索文字列「str」に代入することができるのでしょうか?
自分がHTTPについてあまり理解していなく、知識不足だと思いますが、どなたかご教授お願いします。
No.3ベストアンサー
- 回答日時:
投げる部分も作っていないように感じたので、file_get_contentsを使ってサンプル作ってみました。
手順としては
・決済代行会社に投げる値を作る
・投げる
・受け取る
・分解する
という感じですね。
parseResponse()は適当に作ったので仕様書に従って書き換えてください。
>どのようにしたら、この中から、CHECK: の結果がNGかOKか、や、SIDの番号や、GOUKEIの額を取り出すことが出来るのでしょうか?
$responseから取り出せます。
<?php
/**
* 返り値の分解用
*/
function parseResponse($response) {
$response = explode(' ', $response);
$newResponse = array ();
foreach ($response as $value) {
$tempValue = explode('=', $value);
if (preg_match('/^CHECK:(OK|NG)$/', $value, $maches)) {
$newResponse['CHECK'] = $maches[1];
}
elseif (count($tempValue) === 2) {
$newResponse[$tempValue[0]] = $tempValue[1];
} else {
$newResponse[] = $tempValue;
}
}
return $newResponse;
}
//test
//決済会社に投げるパラメーターです。
$contents = array (
'dummy_id' => '001',
'dummy_total_price' => '105',
);
//組み立てます。
$contents = http_build_query($contents, '', '&');
//ヘッダーを作ります。
$header = array (
'Content-Type: application/x-www-form-urlencoded',
'Content-Length: '.strlen($contents)
);
//リクエストを作ります。
$context = array (
'http' => array (
'method' => 'POST',
'header' => implode("\r\n", $header),
'content' => $contents
)
);
//投げて受けます。
$response = file_get_contents('http://localhost/EC/2.php', false, stream_context_create($context));
//返り値のヘッダーは予約変数[$http_response_header]に入ってます。
$header = $http_response_header;
//戻りを見てみます。
var_dump($response);
//分解してみます。
$parsedResponse = parseResponse($response);
//見てみます。
var_dump($parsedResponse);
?>
ソースを書いてくださり、本当にありがとうございます!
実際に実行してみて、完全には理解出来てはいないですが、こんな感じでデータを入れたり出したりするものなのだと、分かってきました。
記述の仕方も、普段私がソースコードを書くときよりずっとスマートでかっこいいです!
ちゃんと全て理解しようと思っていますが、まったく訳が分からないでいたので、本当にありがとうございます<(_ _)>
No.2
- 回答日時:
決済の要求はどのように出されていますか?fsockopenやfile_get_contentsをお使いでしょうか
この回答への補足
ご回答、ありがとうございます。
仕様書には
「加盟店様サーバから以下のクレジット決済要求をPOSTまたはGET形式にてパラメータを付与して、弊社決済サーバにソケット通信で送信します。」
そして、その次に結果データの返りについて
「ヘッダに「content-type : text/plain;charset=Shift_JIS」、メッセージボディの1、2行目に以下の文字列を返します。」
POST.GETは理解出来るので要求については大丈夫なのですが、データの返りが分からないでいます。
よろしくお願いいたします。
No.1
- 回答日時:
どこの代行システムか、わかりませんが、
サンプルというのがついてきたか、オーダーすればもらえるはずですので、
それを使った方が早いと思いますよ。
最初は。
動かせるようになったら、そこから発展させてみてくださいね
この回答への補足
ご回答ありがとうございます。
先日、担当の営業の方が丁寧に説明してくれたのですが、サンプルがあるとは言われず、「そんなに難しいことではないのですが。。。動かしてみて貰えればわかると思います。」とのことでした。ですが、その動かし方が分からず。。。もう一度、サンプル等があるのか聞いてみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プルダウンメニューにDBの内容...
-
日付から順にデータを並び替えたい
-
順位を付ける時のスコアの重複...
-
外部のテキストファイルを読み...
-
pg_insertで現在の時刻を挿入す...
-
if の中の 複数のor についてお...
-
PHPのプルダウン式のジャンプ設...
-
重複確認
-
別ファイルの構造体の値を読み...
-
総当り表
-
PHPで変数名にハイフンを使うに...
-
foreachで上限回数指定方法また...
-
配列をループでたくさん宣言し...
-
[PHP] fputcsv()関数でファイル...
-
クロス集計で商品名かつサイズ...
-
PostgreSQLの配列項目のデータ...
-
Smartyでtplファイルから配列を...
-
【PHP】配列のキー名の修正は可...
-
am()の使い方
-
C言語の配列をPush(追加)する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウンメニューにDBの内容...
-
phpとmysqlで「あいまい検索」...
-
PHP5の外部コマンド実行で、バ...
-
「ローマ字 -> ひらがな」へPHP...
-
Mysqlとphpでソートや更新時の...
-
PEAR・MDB2のモジュールロード...
-
HTTPのメッセージボディについ...
-
数学の「組み合わせ」を求める...
-
順位を付ける時のスコアの重複...
-
Zend_Form_Element_Hash
-
占いのPHPを作成中ですが・・・
-
しりとり 無限ループ?
-
日付から順にデータを並び替えたい
-
多次元配列のカウント+1の仕方
-
要素(文字列)から指定値を検索
-
flickrでの画像を取得について
-
mysqlにinsertするとエラーがで...
-
選択日と終了日を配列で取得したい
-
$xml要素を階層指定して取得し...
-
月一覧を取得するには?(20120...
おすすめ情報