Stripe
※JavaScript
<script src="https://checkout.stripe.com/checkout.js"></script>
<script>
 $(function(){
  // 支払金é¡
  var amount = $('#amount').val();
  var handler = StripeCheckout.configure({
   // APIã‚ー
   key: "Stripe Privateã‚ー",
   image: 'https://stripe.com/img/documentation/checkout/marketplace.png',
   locale: 'auto',
   token: function(token) {
    window.onbeforeunload = function() {
     return "";
    };
    // ã‚µãƒ¼ãƒæƒ…å ±
    var form = document.createElement("form");
    form.setAttribute('method', "POST");
    form.setAttribute('action', "phpç‰ã‚µãƒ¼ãƒã®ãƒ¡ã‚½ãƒƒãƒ‰ãƒ‘ス");
    // トークン(自動生æˆ)
    var inputToken = document.createElement("input");
    inputToken.setAttribute('type', "hidden");
    inputToken.setAttribute('name', "stripeToken");
    inputToken.setAttribute('value', token.id);
    form.appendChild(inputToken);
    // 支払ã„者メールアドレス(ã‚¯ãƒ¬ã‚¸ãƒƒãƒˆæƒ…å ±å…¥åŠ›åç”»é¢ã§å…¥åŠ›)
    var inputEmail = document.createElement("input");
    inputEmail.setAttribute('type', "hidden");
    inputEmail.setAttribute('name', "stripeEmail");
    inputEmail.setAttribute('value', token.email);
    form.appendChild(inputEmail);
    // 支払ã„金é¡
    var inputAmount = document.createElement("input");
    inputAmount.setAttribute('type', "hidden");
    inputAmount.setAttribute('name', "amount");
    inputAmount.setAttribute('value', amount);
    form.appendChild(inputAmount);
    document.body.appendChild(form);
    setTimeout(function() {
     window.onbeforeunload = null;
     form.submit();
    }, 1000);
   }
  });
  $('#purchase').on('click', function (e) {
   // Open Checkout with further options:
   handler.open({
    name: "ã‚¯ãƒ¬ã‚¸ãƒƒãƒˆæƒ…å ±å…¥åŠ›åç”»é¢ã‚¿ã‚¤ãƒˆãƒ«",
    description: "ã‚¯ãƒ¬ã‚¸ãƒƒãƒˆæƒ…å ±å…¥åŠ›åç”»é¢èª¬æ˜Žæ–‡",
    currency: "jpy",
    
    // 固定ã®å ´åˆã¯â†“を指定。都度入力ã®å ´åˆã¯ä¸è¦
    email: ~,
    
    // ãƒ¦ãƒ¼ã‚¶æƒ…å ±ã‚’è¨˜éŒ²ã™ã‚‹æ©Ÿèƒ½ã‚’使用。デフォルト:true
    allowRememberMe: "true",
    
    // 支払ã„金é¡(本例ã®å ´åˆã¯å†’é ã§htmlã‹ã‚‰å–å¾—)
    amount: amount
   });
   e.preventDefault();
  });
  window.addEventListener('popstate', function() {
   handler.close();
  });
 });
</script>
※PHP
use Stripe\Charge;
use Stripe\Stripe;
use Stripe\Error\Card;
$post = $this->request->getData();
try {
 Stripe::setApiKey(STRIPE_SK);
 $token = $post['stripeToken'];
 $amount = $post['amount'];
 $charge = Charge::create([
  'amount' => $amount,
  'currency' => 'jpy',
  'description' => 'æ”¯æ‰•ã„æƒ…å ±',
  'source' => $token,
 ]);
}catch(Card $e){
 $this->Flash->error('失敗ã—ã¾ã—ãŸã€‚');
 $this->log($e);
 $this->redirect(~);
 return;
}
return;