jQuery・Javascript jQueryを使った小技やAjax非同期通信などについて

外部サイトへポストしてレスポンスを受け取る – curl

2015年6月30日
この記事は掲載から570日経過しています。
情報が古い可能性が有りますのでご了承下さい

カード決済を伴うWEBシステムを書く機会が割と多いのですが、日本だとソフトバンクやベリトランスといった大手さんや、海外だとエラボンなど、だいたい共通するのは指定されたURLに対して変数を飛ばして処理するという事です。

ただ、最近はカード番号を自社サーバーに保持すると保守面が大変になるので、決済会社のフォームへ移動して決済し、元サイトに戻ってくるといったような仕組みを取り入れるケースが多くなっています。

こういったケースだと単純にPOSTすれば良いのですが、例えばカードのオーソリだけを取りたいケースや、仮売上の本決済処理をCRONで回しているケースなど、ブラウザ処理外で外部サイトとの通信を行う必要が出てくることも有ります。

色々と方法は有るのですが、PHPのCurlという関数が便利です。

サンプル http://studio-key.com/Sample2/Kickback/

サンプルが行っている処理は、外部サイト(Curlが使えるサーバーが他になく、とりあえずstudio-key.comのサブドメインへ)へフォーム内容とユニークな値をPOSTし、キックバックされたものをsqliteデータベースへ記録する、というものです。これらの処理をページリロード無しで行います。

外部サイトへデータを投げるpost.php

Curlには色々な指定が可能ですが、基本的にはこれだけです。

投げれた外部サイトで変数を処理する kickback.php

こちらは受け取った変数を元サイトのsql.phpへ投げ返します。

受け取った変数をデータベースに記録する sql.php

ここでデータベースに記録します。

つまりこれで、最初に発行したユニークな値とフォームの内容は、自分のホームページ→外部サイト→自分のホームページ、と巡ってデータベースに記録されます。

後は蛇足で、戻ってきているかどうかをjqueryで判定し、表示しています。

これを使うと何が出来るかと言うと、例えばカード決済だと決済会社のDBとこちらのDBで共通のユニークな値を保持しておき、決済後にカード決済会社と通信してキャンセルにしたり本決済処理を行ったりなどがPOSTせずに出来るようになります。

いえ、ブラウザ的にPOSTしてもいいんですが、数十数百というデータをカード会社からのキックバックによって条件分岐する場合などは、裏で自動化しておいた方が良いですね。

あと、PHPは使えるけどデータベースサーバーは利用不可なケース。市役所のHPなどは割とこういう事もあるようです。

こういう場合はデータベースが扱える外部サイトにデータを保管し、都度通信を行ってデータを得るような手順です。

お試しを。

蛇足になりますが、こういう仕事をしていると、インターネット通販でカード番号を入力するページが、そのサイト上のフォームだと怖くて代引きにしたり振込にしたりなどしています。

 

 

  • このエントリーをはてなブックマークに追加
  • LINEで送る

このカテゴリーのその他の記事

PAGE TOP