phpでwebhookを受け取る@omise.co

現在、弊社の主力商品であるASPシステムを

維持費がなく、手数料が安い、
omise.coに移行します。

***

当時は、今使っている決済会社しかなかったのと、
omise.coが日本上陸初年度だったこともあり、
信頼感に欠けるため、客様に否定され、使用することが出来なかったのですが、

 

ECCUBE 2.13を使っているので、プラグインも用意されているので、
※3.x系は未対応
通常の決済では、このプラグインだけで十分ですが、
決済完了後に、別途メールを送信するため、

omise.co のダッシュボードにある「webhooks」を使い、
キックバックで、リアクションをもらい、
メールを送信します。

データは、POSTで送られ、JSON型であることは、
サポートに書かれている通り。

https://www.omise.co/api-webhooks

で、POSTされたデーターを見たいんだけど、
var_dump($_REQUEST)
としても、何も表示されず、1日格闘。

今日は、土曜日ということもあって、問い合わせも出来ず。

参考資料は、

だけ。

しかもあるのは、RubyとGoogleAppsScriptのサンプルだけ。
ほしいのは、PHP

 

php リクエストボディ json

ご存知の方はの方が多いと思うが、「JSON型はPOSTに値を含んでいない」らしく、
不具合ではなく、別に格納されていることに気づき、
調べてところ、

$json = file_get_contents(‘php ://input’);

要は、無知なだけだった・・・

あとは、配列に戻して、受注番号などを元に、
メールを送信するだけ。

$_ = json_decode($json, true);

 

既に、「変更したらこんなにお得!」なんて、
大風呂敷広げちゃったものだから、もうヒヤヒヤものでしたが、

あとは、申請して審査を待つだけ。

 

残る課題は、keyに入っている値。

クレジットの新規決済のときは、「charge.create」だけで良さそうだが、

charge.complete
課金が完了した時 (3Dセキュア、アリペイ、及びインターネットバンキング利用時)charge.complete 課金が完了した時 (3Dセキュア、アリペイ、及びインターネットバンキング利用時)

>>https://www.omise.co/ja/api-webhooks

とあり、

switch ($_[‘key’]) :
case ‘charge.create’:
/* なんか処理 */
endswitch;

の、caseを増やしていけばいいのかな?

-

SQLiteの日付型

Mysqlを使うほどでもないので、SQLiteを使うことになるのだけど、
PHPから、直接触るのは初めてだったかも?

で、テーブルを作ろうとしたんだけど、

SQLite Browserで、テーブル作成中。

型が、

  • integer
  • real
  • numeric
  • text
  • blob

しかないため、

「日付ってどうするの?」

ということで、調べたところ、

日付と時刻のデータ型:日付と時刻のデータ型:SQLiteは、日付および/または時刻を格納するための別のストレージクラスはありませんが、SQLiteはTEXT、REALまたは整数値として日時を記憶することができます。

  • TEXT 日付”YYYY-MM-DD HH:MM:SS.SSS”

  • REAL 11月24日、4714 BC上のグリニッジの正午からの日数

  • INTEGER 1970-01-01 00:00:00からの秒数。

のいずれかで、変換しなさいとのこと。

参 >> http://www.w3ii.com/ja/sqlite/sqlite_data_types.html

まあ、一般的に、日付は、浮動小数点数で管理されているので、
REALで良いんだけど、

また、Boolean型もなく、

integerで、定義するらしい。

 

速度を求めてはいけない、簡易データベースですからね。

右にならえってことで、SQLiteの規約に準じます。

-