諸事情でStripeのSDKを使えなくて、サクッとStripeでphpで実装する。非常に行儀悪いですが、とりあえず、1000円決済する例。pk_test_YOUR_KEYやsk_test_YOUR_API_KEYはよしなに書き換えてください。
index.html
<html>
<form action="pay.php" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_YOUR_KEY"
data-amount="1000"
data-currency="jpy">
</script>
</form>
</html>
pay.php
<?php
$result=stripe_charge( "sk_test_YOR_KEY" , $_POST["stripeToken"] , 1000 );
if ("succeeded"===$result["status"]){
echo "<h1>OK</h1>";
}else{
echo "<h1>FAILED!</h1>";
var_dump( $result );
}
function stripe_charge( $apiKey , $token , $amount ){
$p=popen(
"curl https://api.stripe.com/v1/charges "
."-u ".$apiKey.": "
."-d amount=".intval($amount)." "
."-d currency=jpy "
."-d description=\"Example charge\" "
."-d source=".escapeshellarg( $token ) , "r");
$result=json_decode(fread( $p , 65536 ),true);
pclose( $p );
return $result;
}
Stripe.js と php とcurl_exec使うと上手くいかないらしいって、stackoverflowでゆうてたので、面倒くさくなって、curlを生で打ちました。
#なんでこんな行儀悪いコードがいるの?
昔から使い続けていた、さくらの共有レンタルサーバーでstripeを実装しようとしたけど、phpのバージョンが古すぎて、stripeのSDKが動作しない上に、curl_execでも動作しないのでこうなりました。