Stripeでchargesの後にtransfersする方法 | Node.js

やりたいこと(重要)

・プラットフォームのサービスを作っている
・購入者が決済 => プラットフォームへお金が振り込まれる
・最終的に、出品者(子アカウント)へお金を送金したい

方法

これで、フロントで決済したクレカが、プラットフォームへチャージ(決済)されます

      stripe.charges.create(
        {
          amount: 1000,
          currency: 'jpy',
          source: "tok_bypassPending", //チャージ後即座に送金可能にする。本当ならカードのtok情報
          description: '支払い',
          transfer_group: "ORDER1", //最終的にこの値を使って出品者(子アカウント)へお金を送金する
        },
        function(err, charge) {
          console.log("エラー");
          console.log(err);

          console.log("チャージ");
          console.log(charge);
        }
      );

で、これでチャージすると、本番環境の場合、四日後に送金可能になります。

それで、プラットフォーム内でサービスが完結し、出品者(子アカウント)へお金を送金したい場合は、

こうします↓

      stripe.transfers.create(
        {
          amount: 100, //今回は送金可能金額1000円から100円だけ送金する
          currency: 'jpy',
          destination: "ここに子アカウントのid",
          transfer_group: 'ORDER1', //ここの値を使って出金可能金額から送金する
        },
        function(err, transfer) {
          console.log("transfer");
          console.log(transfer);

          console.log("err");
          console.log(err);
        }
      );

これでOkです。

実際にプラットフォームからお金が引かれてることを確認する

 

curl https://api.stripe.com/v1/balance \
  -u sk_test_OOOOOOOOOOOO:

これをターミナルとかに打ち込んでください。

すると、こんな感じで情報が出ます。

% curl https://api.stripe.com/v1/balance \
  -u sk_test_OOOOOOOOOOOO:
{
  "object": "balance",
  "available": [
    {
      "amount":900,
      "currency": "jpy",
      "source_types": {
        "card": 900
      }
    }
  ],
  "connect_reserved": [
    {
      "amount": 0,
      "currency": "jpy"
    }
  ],
  "livemode": false,
  "pending": [
    {
      "amount": 0,
      "currency": "jpy",
      "source_types": {
        "card": 0
      }
    }
  ]
}

クレカでチャージして決済した時、プラットフォームにお金が振り込まれますが、それで、四日後にここが反映されます。→"available": [

それで、transfersしてtransfer_group指定した金額がavailableだった場合、お金を子アカウントに送金できます。

以上。

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

未整理記事