メインコンテンツへスキップ

DEVELOPER TOOLS

自分の SaaS に決済機能を、1 分で。

言語と商品 ID を選ぶだけ。コピペで完成する、myAI ライセンス検証のコード。 月額課金・解約・返金は myAI が全部代行します。

1. あなたの商品 ID を入力

myAI で出品した商品の URL /p/<ここ> 部分。 未入力ならサンプル ID で表示します。

2. 言語 / フレームワークを選ぶ

3. コピーして貼り付け

// app/api/auth/check/route.ts
// SaaS の認証ミドルウェアやログイン処理で呼び出す
import { NextResponse } from 'next/server'

const MY_PRODUCT_ID = 'ff54e65a-c136-4268-8d70-4448589dd37b'

export async function POST(request: Request) {
  const { license_key } = await request.json()

  const res = await fetch(
    'https://my-ai.community/api/v1/license/verify',
    {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ license_key }),
      cache: 'no-store',
    }
  )
  const data = await res.json()

  // myAI 上の自分の商品で、かつ active な契約か検証
  if (!data.active || data.product_id !== MY_PRODUCT_ID) {
    return NextResponse.json(
      { ok: false, reason: data.reason ?? 'invalid' },
      { status: 401 }
    )
  }

  // data.buyer_external_id を SaaS 側のユーザーアカウントに紐づけ
  return NextResponse.json({
    ok: true,
    external_id: data.buyer_external_id,
    expires_at: data.expires_at,
  })
}

API レスポンス

有効な契約のとき

{
  "active": true,
  "product_id": "...",
  "buyer_external_id": "...",
  "expires_at": null,
  "billing_type": "monthly"
}

無効 / 解約済み

{
  "active": false,
  "reason": "not_found"
       | "canceled"
       | "expired"
       | "invalid_request"
}

API は CORS 全開放、認証不要 (ライセンスキー本体で判定)。 IP あたり 60 リクエスト / 60 秒の rate limit あり。SaaS 側は 60 秒キャッシュ推奨。

このコード 1 つで、消える手間

  • ✓ Stripe アカウントの開設・審査
  • ✓ クレジットカード入力 UI の実装
  • ✓ 月額課金の自動処理コード
  • ✓ 解約・返金の処理コード
  • ✓ カード期限切れのリトライ
  • ✓ 領収書 / インボイスの自動発行
  • ✓ 消費税の計算・申告・納付
  • ✓ 特定商取引法に基づく表記
  • ✓ チャージバック対応
  • ✓ 課金に関するカスタマーサポート
  • ✓ 確定申告用の売上集計
  • ✓ 個人事業主登録 (業務委託料受領者として処理)

まずは自分の SaaS を myAI に登録

無料登録後、出品フォームから 5 分で販売開始。決済機能は myAI 側で全部用意済。