どうも、
先週、#JP_Stripes in 宮崎 キックオフに行ってきました!
Stripe自体は聞いたことはありましたが、
使い方やできることは全く知らなかったので、
事例など交え、とてもいい話を聞くことができました。
もくじ
stirpeのいいところ
– 初期費用不要
– 申請は契約書いらず、ペーパレス。申請〜導入までが速い!
– Apple Pay / Google Pay / 他通貨決済も導入可
– cloud (AWS) →Saasだから保守が楽
– APIリファレンスがある!PHP,Ruby,Node,Go,Python対応
– クレジットカード情報「非保持化」及び「PCI DSS(準拠)」してる
↑リンク型みたいな感じの認識です。
申請は、ほぼどんなものでも通るものの、
途中で止められることもあるとのこと。
物として実在するか形に残るもののほうがいいらしいです。
stripeのいろんな機能
– sigma …sqlでデータの検索ができる
– rader …機械学習を使って怪しい人を見つけてくれる。自分でカスタムパターンもいれることができる。
– billing…定期購入に対応。
stripeの導入をやってみる!
参考:
Stripe API Reference
<導入環境>
– PHP 5.6.30
– Laravel 5.2
PHP5.6.4以上だったら、Laravel5.4いけたんですが、、、
ローカルを更新するの諦めました^^;
localは非sslでもおkです!
テスト環境のアカウントは申請直後にできました。
Githubにソース置いてます。
[ kin29/stripe_practice_laravel ]
↑ここには、ほぼcomposer installだけでできるもの置いてます。
以下では、
どうやって最初作ったか、忘れないように、
Laravel/stripeの構築の仕方memoっときます。
1.プロジェクト作成
$ composer create-project laravel/laravel stripe_practice_laravel --prefer-dist "5.2.*"
※ –prefer-distなので、指定なしのデフォルトのgit clone でなく
zipで取ってくる(git clone より高速です)
2.stripe/stripe-phpの導入
// $composer require [package name]:[version]
$ composer require stripe/stripe-php:^6.17
3.フロント系いらんので消しました。
(package.json/gulpfile.jsとか)
4.envの調整
DBとか使わないので、stripeのAPIキーを環境変数として追記のみ
.env
STRIPE_PUBLIC_KEY=test
STRIPE_SECRET_KEY=test
5.カード情報入力フォームをつくる。
resources/views/welcome.blade.phpにthanksへのformを追記
参考:Card Payments Quickstart
6.バックエンドをつくる
app/Http/route.phpに以下を追記
Route::post('/thanks', function () {
\Stripe\Stripe::setApiKey(getenv('STRIPE_SECRET_KEY'));
try {
$charge = \Stripe\Charge::create(array(
"amount" => 100,
"currency" => "jpy",
"source" => $_POST['stripeToken'],
"description" => "100yen pay"
));
} catch(\Stripe\Error\Card $e) {
}
return view('thanks');
});
7.動かしてみる。→エラー調整
この時点でだいたい動きましたが、POSTすると以下のエラーが出てきました。
TokenMismatchException in VerifyCsrfToken.php line 67:
app/Http/Middleware/VerifyCsrfToken.php
に以下を追記することで、
CSRF保護の対象外にすることができます。
ただし、クロス・サイト・リクエスト・フォージェリ(CSRF)保護の対象外となりますので、吟味することも大事だと思います!
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'thanks' //追記
];
クロス・サイト・リクエスト・フォージェリ(CSRF)
… 脆弱性を利用して、悪意のある攻撃をすることだそうで、
信頼できるユーザーになり代わり、認められていないコマンドを実行するとのこと。
Laravelでは、セッションごとにCSRF「トークン」を自動的に生成していて、
リクエスト時に、このトークンを送信して、認証済みのユーザーかを確認するために利用しているとのこと。
なので、HTMLフォームを定義する場合はいつでも、隠しCSRFトークンフィールドをフォームに埋め込んで、
CSRF保護でのチェックできるようにしなければならないとのこと。
8.動かしてみる。(完成)
カード決済できたー!
Stripeの管理画面にも、疎通確認できました!
stripeとっても簡単!
ログもあるし、デバックしやすかったです!