Edited at

行儀の悪いphpでのStripe課金の実装方法:

More than 1 year has passed since last update.

諸事情で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を生で打ちました。

https://stackoverflow.com/questions/32430652/errors-when-making-a-stripe-charge-using-custom-curl-and-php-code


なんでこんな行儀悪いコードがいるの?

昔から使い続けていた、さくらの共有レンタルサーバーでstripeを実装しようとしたけど、phpのバージョンが古すぎて、stripeのSDKが動作しない上に、curl_execでも動作しないのでこうなりました。