ご利用ガイド

このページは初めてご利用される方向けに、ご利用の流れと操作方法を解説しています。

本文中の導線名・リンク先は現行実装に合わせています。スクリーンショットは一部旧UIを含むため、ボタン名や配置が現在の画面と異なる場合があります。

関連リンク: よくある質問 用語集

ステップ1

1-1 共通ガイド

このセクションでは、サービス利用開始前に全ユーザーが行うべき必要な設定を説明しています。次に示す手順に従って登録を完了してください。※各種登録が未完了の場合、サービスや一部機能をご利用頂けません。

現行の主な導線は、ヘッダーの「ホーム」「SNS」「マーケットプレイス」「マイページ」です。発電者向け機能はユーザー名メニュー内の「エレメント生成」から、ホスト向け機能は「マイページ > マイプロジェクト」または「AIチャット」から進みます。

「SNS」では全体フィードや各プロジェクトの投稿スレッドを閲覧でき、公開中プロジェクトではコメント・返信・リミックスで交流できます。

  1. 1.アカウント登録

    本サービスを利用するためには、専用のログインアカウントが必要です。

    専用のログインアカウントを新規に作成する場合は、メールアドレスとパスワードを用意してください。次に、登録フォームに必要情報を入力し、「アカウント作成」ボタンをクリックします。

    登録したメールアドレス宛に認証メールを送信します。メールに記載された認証URLをクリックし、認証プロセスを完了させてください。

    認証が完了すると、自動的にログインページに遷移します。「メールアドレスの認証に成功しました。ログインしてください。」というメッセージが表示されれば、アカウント登録は完了です。

    認証メールが届かない場合:迷惑メールフォルダを確認するか、メールアドレスの入力ミスがないかご確認ください。数分経ってもメールが届かない場合は、認証メールの再送信をお試しください。

    登録フォームのスクリーンショット
  2. 2.ウォレット接続

    本サービス内の各種お支払い、ミント、出品、売上送金先アドレス設定、コレクションの一部機能にはウォレット接続が必要です。報酬入金先として使うウォレットアドレスは MetaMask に限らず、Polygon / EVM 互換ウォレットの公開アドレスであれば利用できます。現在の画面では、ブラウザ拡張ウォレットアプリSDK接続(PCとモバイルアプリを接続)の案内が表示されます。

    接続先ネットワークは Polygon を前提としており、接続中または取引実行時に Polygon への切替またはネットワーク追加を求められる場合があります。

    ウォレット接続ボタンの位置

    ログイン後、ヘッダー右上に表示される緑のボタンがウォレット接続ボタンです。ウォレットの接続や接続中アドレスの確認は、まずこのボタンから行います。

    最初にやること:ウォレットを用意する

    ウォレットをまだ持っていない場合は、先にご利用の環境に合った Polygon / EVM 互換ウォレットを作成してください。接続画面の前に、まず「ウォレットを作る」「公開アドレスを確認する」まで済ませておくとスムーズです。

    ダウンロード先の例: 初めての方には、PC なら MetaMask、スマートフォンなら HashPort Wallet か MetaMask を案内すると選びやすくなります。

    MetaMaskロゴ

    MetaMask

    世界的に使われている代表的なウォレットです。PC のブラウザ拡張で始めたい方や、まず標準的な選択肢から試したい方に向いています。

    MetaMask 公式ダウンロードページ
    HashPort Walletロゴ

    HashPort Wallet

    日本企業 HashPort が提供するスマートフォン向けウォレットです。アプリ中心で、できるだけ分かりやすく始めたい方に向いています。

    • デスクトップ(PC): 対応するブラウザ拡張ウォレットを公式配布元からインストールし、新規作成または既存ウォレットの復元を行ってください。作成後は、アカウント画面で 0x から始まる公開アドレスを確認できます。
    • モバイル(スマートフォン): 対応するウォレットアプリを公式ストアや公式配布元からインストールし、新規作成または既存ウォレットの復元を行ってください。作成後は、アプリ内で公開アドレスを確認できます。
    • 共通: ウォレット作成時に表示されるシークレットリカバリーフレーズは、紙や安全な方法で控えてご自身で保管してください。機種変更や再インストール時に必要です。

    プロジェクト編集画面の「ウォレットアドレス(報酬入金先)」は、ウォレットを接続して自動入力しても、ウォレット側で確認した公開アドレスをコピーして貼り付けても設定できます。

    ウォレットアドレスとは

    ウォレットアドレスは、暗号資産やトークンの受け取り先を示す公開アドレスです。通常は 0x から始まる 42 文字の英数字で表示されます。

    プロジェクト編集画面の「ウォレットアドレス(報酬入金先)」には、報酬を受け取りたいご自身の Polygon / EVM 互換ウォレットの公開アドレスを設定してください。接続して「適用」しても、ウォレット側で表示したアドレスをコピーして貼り付けても構いません。

    入力するのは公開アドレスだけです。シークレットリカバリーフレーズや秘密鍵は絶対に入力しないでください。

    • ブラウザ拡張: PC では、対応するブラウザ拡張ウォレットが検出されると、そのウォレットを使って接続できます。
    • ウォレットアプリ: スマートフォンでは、対応ウォレットのアプリ内ブラウザから直接接続できます。
    • SDK接続: PC に拡張がない場合は、現行 UI では MetaMask アプリを使う SDK 接続案内が表示されることがあります。画面の案内に従って接続してください。
    1. 事前準備
      1. ウォレット接続ボタンは、ログイン後のヘッダー右上に表示されます。まずアカウント登録とログインを完了してください。
      2. PC利用時は Polygon / EVM 互換のブラウザ拡張ウォレット、スマートフォン利用時は対応するウォレットアプリを準備してください。インストールや作成は、利用するウォレットの公式案内に従ってください。
      3. 申告手数料や購入代金は、画面に応じて POL / WETH / JPYC から選択できます。WETH を使う場合は WETH 残高に加えて POL のガス代が必要です。JPYC は対象画面でガスレス決済に対応しています。なお、ミントおよび PT の出品・取消は現在ガスレス運用です。
    2. 接続方法
      1. PC + ブラウザ拡張: 対応する拡張ウォレットが検出されると、この接続方法が優先されます。接続ボタンを押し、ウォレット側の承認画面で接続を許可してください。
      2. スマートフォン + ウォレットアプリ: 対応ウォレットのアプリ内ブラウザで本サイトを開くと、アプリ内ブラウザから直接接続できます。
      3. スマートフォン + 外部ブラウザ: Safari / Chrome など通常ブラウザで接続ボタンを押すと、対応ウォレットアプリを起動する確認や案内が表示される場合があります。表示内容に従って承認してください。
      4. PC + SDK接続: PC に拡張が見つからない場合は、現行環境では MetaMask アプリを利用する SDK 接続案内に切り替わることがあります。画面に QR コードが表示された場合は、スマートフォン側で読み取り、接続を承認してください。
      5. SDK接続で QR が出ない場合: 接続案内モーダルの「QRが表示されない場合はこちら」から、接続状態をリセットして再表示できます。
    3. Polygonネットワークの追加
      1. 接続中のウォレットのネットワークが Polygon でない場合、接続中または取引時にネットワーク切替の確認が表示されます。
      2. 未登録の場合は、ウォレット側に Polygon のネットワーク追加ダイアログが表示されます。手動で設定する場合の目安は以下のとおりです。

        ネットワーク名:Polygon

        新しいRPC URL:https://polygon-rpc.com

        チェーンID:137

        通貨記号:POL

        ブロックエクスプローラーURL:https://polygonscan.com/

      3. 追加後、必要に応じて Polygon への切替を承認してください。
    4. 接続完了後の確認
      1. 接続が成功すると、ヘッダーのウォレットボタンは短縮アドレス表示に変わります。
      2. 認証済みページでは、接続直後に「ウォレット詳細」モーダルが開き、接続中アドレスを確認できます。
      3. SDK経由で接続している場合は、接続ボタンにペアリング状態を示す表示が付くことがあります。
      4. 同じタブでは接続状態の静かな再確認・再接続が行われますが、切断や承認失効時は再度接続が必要です。
    5. 注意事項:

      • ウォレットを接続していない場合、本サービスの一部機能はご利用いただけません。閲覧中心の機能のみであれば未接続でも利用できます。
      • PCでは「拡張があれば拡張を優先し、見つからない場合は SDK 接続へ切り替える」という挙動です。
      • スマートフォンの通常ブラウザでは SDK 接続は行わず、ウォレットアプリへの遷移またはアプリ内ブラウザでの利用が前提です。
      • 一部画面では SDK 接続案内に MetaMask の名称が表示されることがありますが、報酬入金先として入力するアドレス自体は MetaMask 固定ではありません。
      • セキュリティ確保のため、ウォレットのシークレットリカバリーフレーズや秘密鍵を絶対に他者と共有しないでください。

ステップ2

2-1 発電者向けガイド

発電者は、系統連系している再生可能エネルギー発電設備の所有者です。当該発電設備を所有している方であれば、規模や用途(住宅用・産業用)を問わず、誰でも発電者として本プログラムに参加できます。

  1. 1.発電設備所有者登録

    本プログラムでは、再生可能エネルギーの発電量を申告し、審査の承認を受けるとエレメントが発行され発電者に付与されます。この発電量の申告にあたり発電設備所有者登録を事前に行う必要があります。

    発電設備所有者登録は、サービスアカウントに紐付けられ、一つのアカウントに対して一つの発電設備所有者情報を設定できます。登録後は、複数の発電設備をその所有者情報に紐付けることが可能です。

    登録を開始するには、まずヘッダーのユーザー名をクリックし、表示されるユーザーメニューから「エレメント生成」を開きます。表示されたハブ画面から「発電設備所有者登録」へ進み、必要事項を入力して登録してください。

    所有者登録1のスクリーンショット
    重要
    登録される発電設備所有者情報は、改正再生可能エネルギー特別措置法に基づくFIT/FIP制度での「事業計画認定」(旧設備認定)を受けた設置者名と一致する必要があります。認定を受けた設置者名と登録情報が不一致の場合、発電設備の登録はできませんので、申請書類等をご準備・ご確認の上、登録を進めてください。

    ※FIT/FIP制度の適用を受けていない発電設備(過去に適用を受けていた設備は除く)については再生可能エネルギー電子申請(資源エネルギー庁)により、設備IDを取得いただければ、本サービスのご利用が可能です。

    登録完了後に「発電設備所有者登録が完了しました」というメッセージが表示されれば、発電設備を登録する準備は完了です。続けて「エレメント生成」画面から「発電所登録」へ進みます。

  2. 2.発電設備登録(設備照会)

      ー登録にあたってー

      発電設備の登録は、発電者が所有する設備からの発電量を申告するために必要です。登録を進める前に、以下の2点の要件が満たされているかを事前に確認してください。

      1. 発電設備の登録には、事前に「発電設備所有者登録」を完了している事が必要です。まだ完了していない場合は、ステップ2-1-1を参照し、所有者登録を進めてください。
      2. 登録対象の発電設備は、エネルギー供給構造高度化法※1によって定められた発電設備である必要があります。また、「発電設備所有者情報」は、対象発電設備を設置する者※2と同一でなければなりません。

      ※1 エネルギー供給事業者による非化石エネルギー源の利用及び化石エネルギー原料の有効な利用の促進に関する法律(エネルギー供給構造高度化法)においては、「再生可能エネルギー源」について、「太陽光、風力その他非化石エネルギー源のうち、エネルギー源として永続的に利用することができると認められるものとして政令で定めるもの」と定義されており、政令において、太陽光・風力・水力・地熱・太陽熱・大気中の熱その他の自然界に存する熱・バイオマスが定められています。

      ※2 改正再生可能エネルギー特別措置法に基づく、FIT・FIP制度における「事業計画認定」(旧設備認定)を受けた者または、非化石電源登録にて設備IDを取得した者


      ー登録の準備ー

      登録手続きを始める前に、以下の資料を準備しておくことが推奨されます。

      1. 「事業計画認定」関連書類(設備IDが確認できるもの)
      2. 送配電事業者や電力会社によって発行された売電明細や検針票(受電地点特定番号が確認できるもの)

      ー登録手順ー

      現行UIでは、発電者向け操作はヘッダー右上のユーザー名メニュー内「エレメント生成」に集約されています。そこから「発電所登録」(発電設備登録)をクリックして開始してください。

      トップ属性別メニュー1のスクリーンショット

      次に、表示されるフォームに、必要な情報を関連資料を参照しながら正確に入力してください。全ての入力を確認した後、問題がなければ登録ボタンをクリックします。

      登録ボタンをクリックすると、発電設備の照会が行われます。この照会にはお時間がかかる場合がありますので、完了するまでしばらくお待ちください。照会データとの照合が成功すると自動的に登録プロセスに移行します。

      設備照会中2のスクリーンショット

      「発電設備の登録が完了しました」というメッセージが表示されれば登録は完了です。以後は「エレメント生成」画面から申告や履歴確認に進めます。

      発電設備登録完了1のスクリーンショット

      ーヒントー(照会に失敗したら)

      入力された情報が、国に申請し登録された以下の登録情報と完全に一致している必要があります。半角全角の違い、丁番地のハイフン表記、法人格表記の違いも含めて、関連資料を参照し正確に情報を入力してください。不一致がある場合は登録できません。

      • 固定価格買取制度の適用を受けている発電設備の場合:事業計画認定(旧設備認定)の登録情報
      • 非制度発電設備の場合:非化石電源登録情報
  3. 3.発電量申告

      ー申告にあたってー

      発電量申告は各月の発電量の実績を報告するための機能です。申告が承認された際、発電者にはエレメントが付与されます。

      申告する発電量は、その運用または消費形態にかかわらず対象月に発電した全量が対象となります。(売電や自家消費等の区別はありません。)

      1. エレメントの発行
        1. エレメントは発電量が1000kWhに到達するごとに一つ付与されます。申告発電量1000kWhに満たない場合は、その量は翌月へ繰り越されます。(以後1000kwhに到達するまで同様に繰越し)
      2. 申告期限
        1. 申告は、対象発電設備が所在するエリアの送配電事業者が定めた検針基準日に従い、一月単位で行う必要があります。複数月分を一度にまとめて申告することはできません。
        2. 発電量申告は、その対象となる発電期間の開始日から起算して90日以内に申告しなければなりません。たとえば、発電期間が3月1日から3月31日までの発電量を申告する場合は、3月1日から数えて90日以内、つまり5月30日が申告期限となります。期限内に忘れずに申告をしましょう。
      3. 申告手数料
        1. 発電量の申告には、0.4円/kWhの申告手数料がかかります。この手数料は申告時に時価換算した POL / WETH / JPYC のいずれかでお支払いいただけます。JPYC はガスレス決済、WETH を選ぶ場合は WETH 残高に加えて POL のガス代が必要です。
      4. 申告の準備
        1. 申告を開始する前に「新規発電設備登録」(2-1-2)が完了している必要があります。
        2. 申告時には、電力会社から発行された検針票や売電料金明細など、申告内容を証明する帳票の撮影画像やスクリーンショットのアップロードが必要です。以下をご確認の上、事前にご準備ください。
        3. 証明帳票の画像添付に際しては、画像が鮮明であること、また以下の項目が記載されているかを確認してください。いずれの項目一つでもかけると不承認となります。

        4. 契約者名
        5. 受電地点特定番号
        6. 発電期間
        7. 発電量
        8. なお、画像データは最大3つまで添付可能ですが、全ての画像が申告対象の発電実績に関するものであることが判別できる必要があります。例えば、表裏の画像を添付する場合、同一の帳票であることが分かるようにそれぞれの画像データに日付と特定番号(または他の識別コード、例: 請求番号や発行コード)が含まれている必要があります。これにより、添付された画像が同一の帳票であることが証明されます。


      ー申告手順ー

      • ヘッダー右上のユーザー名メニューから「エレメント生成」を開き、表示された画面の「発電量申告」をクリックします。
      • 申告フォームが表示されたら、対象発電所を選択し、発電期間と発電量を提出する証明帳票の内容と相違がないように正確に入力します。入力した内容と証明帳票の内容に齟齬がある場合は、不承認の原因となりますのでご注意ください。
      • 発電量申告1のスクリーンショット
      • 提出する証明帳票(検針票等の画像データ)を選択します。
      • 入力内容と証明帳票の添付を確認し、問題がなければ「申告」ボタンをクリックします。
      • 発電量申告2のスクリーンショット
      • 申告内容の確認ページに遷移したら、申告内容に間違いがないか確認し、決済通貨を POL / WETH / JPYC から選択し、最後に「申告」ボタンをクリックします。
      • 発電量申告4のスクリーンショット
      • 接続中のウォレット(MetaMask拡張またはMetaMaskアプリ)の承認画面が表示されたら、選択した通貨と決済内容を確認して承認します。JPYC はガスレス署名、POL / WETH は通常の送金承認で進みます。
      • 発電量申告5のスクリーンショット
      • 決済が正常に完了すると「電力量の申告が完了しました。審査完了までしばらくお待ちください。」というメッセージが表示されます。これで申告は完了です。
      • 発電量申告3のスクリーンショット

      ー審査結果通知についてー

      • 審査結果は電子メールで通知されます。通常1~3日で完了しますが、内容によっては最大1週間程度かかる場合があります。
      • 承認後、付与されたエレメントはインベントリで確認可能です。獲得したエレメントは、次項の「エレメントの出品」で売却したり、ステップ2-2-3「プロジェクトトークンの取得(ミント)」で使用することができます。

      ー承認されなかったらー

      • 申告は、このセクションで規定される全要件を満たす必要があります。不承認の場合、発電量申告履歴の「ヒント」から審査結果の詳細を確認したうえで、原因を修正し再申告をお願いします。
  4. 4.エレメントの出品

    獲得したエレメントをマーケットプレイスに出品して、販売収益を得ることができます。(※成約時には販売価格の10%を取引手数料としてご負担いただきます。)

      ー出品の流れー

      • ヘッダー右上のユーザー名メニューから「エレメント生成」を開くか、エレメント・インベントリページにアクセスします。
      • リストから出品したいエレメントを選び、「出品」ボタンを押します。
      • エレメント出品1-1のスクリーンショット
      • 出品登録フォームが表示されたら、商品名と価格を入力します。(価格からは成約時に取引手数料が差し引かれます。)また、エレメントの特性やメッセージなどを商品説明に入力することで、購入者に対して商品を効果的にアピールすることができます。
        売上送金先アドレスの設定は、希望する対象アドレスの「ウォレット接続」が必要です。
      • エレメント出品1-2のスクリーンショット

        当マーケットプレイスでは、全てのユーザーが安全かつ快適に利用できる環境を提供することを目指しています。そのため、暴力的、差別的、性的、または誹謗中傷を含む不適切な表現の投稿、ならびに虚偽の情報や個人のプライバシーを侵害する内容は、利用規約に基づいて出品の取り下げやユーザー資格に影響を及ぼす対応が行われる場合があります。商品説明の入力にあたっては、これらのガイドラインに留意し、適切な内容を心掛けてください。

      • 全ての情報を入力した後、利用規約に同意するチェックボックスにチェックを入れ、「出品する」ボタンをクリックして出品を完了します。
      • エレメント出品1-3のスクリーンショット
      • 出品完了時には、ご登録のメールアドレスへ出品通知が送信されます。出品内容をご確認ください。

      ー約定通知についてー

      • 出品したエレメントの取引が成立した際には、ご登録のメールアドレスに通知が届きます。販売代金は、取引手数料を差し引いた金額が出品時に設定した売上送金先アドレスに送金されます。
      • 売上金は JPYC で支払われ、取引成立時に即時処理されます。ただし、ネットワーク混雑や外部サービスの状況により反映が遅延する可能性があります。
2-2 サポーター向けガイド

サポーターはエレメントの取得・ミントを通じてSDGsプロジェクトを応援する役割を担います。エレメントをプロジェクトにミントすることで、プロジェクトトークン(PT)を獲得します。

  1. 1.エレメントの購入

    サスティナプラスでは、エレメントの運用を通じて様々なSDGs活動を支援し、そのプロジェクトに応じて様々なサービスや特典、権利を得ることができます。以下では、マーケットプレイスでエレメントを購入する手順をご案内します。

    ※マーケットプレイスのご利用(購入代金の支払い)には、事前にステップ1-1-2「ウォレット接続」が必要です。

    1. ヘッダーの「マーケットプレイス」からエレメント一覧を開きます。未ログインの場合はログイン後に購入へ進んでください。
    2. エレメント購入1
    3. 商品リストが表示され、出品されている様々な種類のエレメントを閲覧できます。ページ上部の検索機能を活用して、お探しのエレメントを見つけてください。
    4. エレメント購入2
    5. 購入したいエレメントの「購入する」ボタンをクリックするか、複数まとめて購入する場合は「カートに追加」ボタンをクリックしてください。
    6. 確認ページに遷移後、購入内容を確認し、決済通貨(POL / WETH / JPYC)を選択します。問題がなければページ下部の「購入」ボタンをクリックして決済プロセスに進みます。
    7. エレメント購入3
    8. 接続中のウォレット承認画面が表示されたら、選択した通貨に応じた決済内容を確認します。POL / WETH では支払い金額と必要なガス代、JPYC ではガスレス署名内容を確認し、問題なければ承認してください。
    9. エレメント購入4
    10. 決済が正常に完了すると、「ご利用ありがとうございます。エレメントを購入しました」と表示されます。
    11. エレメント購入5
    12. 購入したエレメントはエレメント・インベントリのリストに追加されます。これで、エレメントの出品やミントなどの運用が可能になります。

    ※購入したエレメントの出品方法については、ステップ2-1-4「エレメントの出品」をご参照ください。

  2. 2. プロジェクトを探す

    ープロジェクトページの解説ー

    本プログラムにおけるプロジェクトは、ホスト(プロジェクトの実施主体)がSDGs(持続可能な開発目標)の17の目標の中から特定の目標を選定し、その達成を目指して実施する様々な活動や取り組みを指し、これらの詳細はホストによって本プログラムに登録され、プロジェクトページを通じて公開されています。

    以下では、プロジェクトのページの見方や、登録されたプロジェクトの検索方法を解説します。

    1. プロジェクトページへのアクセス:ログイン後のホーム(/)または「プロジェクトホーム」から公開中のプロジェクトを確認できます。現行の基本導線は、ホーム内の「プロジェクトを探す」ボタンから専用検索ページへ進む方法です。
    2. プロジェクトを探す1
    3. ホーム画面の解説:現行のホーム/プロジェクトホームでは、注目プロジェクトのショーケース、ピックアップ案件、カテゴリ別タブ(初めての参加、特典重視、人気、新着など)を中心に公開中の案件を整理しています。旧ガイドにある「ランキング」や「プロジェクトNEW」ではなく、目的別の閲覧導線に再構成されています。
    4. 詳細ページの見方:各プロジェクトをクリックすると詳細ページに遷移します。詳細ページでは、当該プロジェクトの様々な情報が掲載されており、以下の情報が含まれます。
      • PT発行数: これまでに発行されたプロジェクトトークン(PT)の発行数
      • プロジェクトランク: PTの発行数に基づいて、以下の条件により設定されます。
        ランク PT発行数の条件
        ダイアモンド 1,000,000以上
        プラチナ 100,000以上、1,000,000未満
        ゴールド 10,000以上、100,000未満
        シルバー 1,000以上、10,000未満
        ブロンズ 100以上、1,000未満
        ウッド 100未満
      • シンボル: プロジェクトの識別コードです。ミント時に指定する必要があります。
      • SDGs分類: 対象のプロジェクトに設定されている、SDGs17の目標と169のターゲット分類です。
      • 活動地域: プロジェクトが主に活動する都道府県/市区町村です。検索ページの地域条件にも利用されます。
      • プロジェクト特典:プロジェクトで提供される特典で、固定と変動の2種類に分類されます。固定特典は一度設定された内容が変更されないもの(例:会員証、予約券、コンサートチケット)で、変動特典はプロジェクトの進行に応じて特典の内容が変わるもの(例:割引券(割引率)、クーポン(内容)、プロジェクトの進捗に応じた特典の拡充または廃止など)です。
        特典を受け取るには、プロジェクトトークンが必要です。特典によって必要なPT数が異なったり、他にも条件が存在する場合がありますので、特典内容の条件を事前にしっかり確認しておきましょう。
      • PT発行状況: 現在までのプロジェクトトークンの発行状況の他、当該プロジェクトに発行数制限が設定されている場合は、発行限度数と残数(現時点での発行可能数)を示しています。
      • 募集期間: 当該プロジェクトのミント可能期間を示しています。期間限定プロジェクトなどに設定される場合があります。
      • 公式サイト: ホストの公式サイト(外部リンク)です。
      • その他の関連リンク: ホストが運用するSNSリンク等が掲載されます。

    ープロジェクトの検索方法ー

    現行の検索は、ページ上部の簡易フィルタと、専用のプロジェクト検索ページの組み合わせで利用します。検索ページでは新着公開プロジェクトが新しい順に表示され、条件を追加しながら絞り込みできます。

    プロジェクトを探す2
    1. プロジェクト属性の利用:検索ページにある People / Prosperity / Planet / Peace / Partnership の各ボタンを押すと、関連するSDGs目標群に絞ったプロジェクトリストが表示されます。プロジェクト属性とそれに関連するSDGs目標は次のとおりです:
      • 人間 (People): 目標1~6
      • 豊かさ (Prosperity): 目標7~11
      • 地球 (Planet): 目標12~15
      • 平和 (Peace): 目標16
      • パートナーシップ (Partnership): 目標17
    2. その他の検索条件:検索ページでは、検索条件を選択または入力し、検索ボタンを押すと検索結果が表示されます。現行UIでは以下の条件を組み合わせて検索できます:
      • SDGs目標・ターゲットから探す
      • シンボル・プロジェクト名で検索
      • 活動都道府県・活動市区町村で検索

      これらの条件は独立ではなく、現行実装では同時に複数指定できます。地域は都道府県のみでも絞り込み可能で、市区町村は都道府県選択後に候補が表示されます。

    3. 読み込み方法:検索結果はページ下部までスクロールすると続きが自動的に読み込まれます。
    4. プロジェクトを探す3

    検索結果からプロジェクトを選択すると、そのプロジェクトの詳細ページに遷移します。

  3. 3. ミント(プロジェクトトークンの取得)

    ミントとは、選択したエレメントにプロジェクト情報を付加し、ブロックチェーンに登録するプロセスです。 ミントによって、プロジェクトトークン(Non-Fungible Token, NFT)が発行され、支援の証としてサポーターに付与されます。

    ーミントにあたってー

    • ウォレットの接続:ミントを行うには、事前にステップ1-1-2「ウォレット接続」が必要です。

    • 決済・署名の前提:ミントは現在ガスレス化されており、通常はユーザー側で POL のガス代は発生しません。ウォレット接続と、画面に表示される承認または署名への同意で進められます。

    ーミント操作手順ー

    1. ヘッダーのウォレットボタンからウォレット接続を完了します。PCでは拡張またはSDK接続、スマートフォンではMetaMaskアプリ側で承認する流れになります。
    2. ミント1
    3. 購入済みエレメントが追加されたエレメント・インベントリを開きます。マーケットプレイスでの購入完了画面や、保有エレメント一覧から進むのが現在の基本導線です。
    4. ミントしたいエレメントを選択し、「ミント」ボタンを押し、モーダルを表示させます。
    5. モーダル内の各フィールドに、任意のプロジェクトシンボル、特典選択※1、およびアクセスコード※2を入力し、「確認画面へ進む」ボタンを押します。 特典を指定する場合、対象特典の必要PT数と選択エレメントの数を一致させる必要があります。
    6. ミント2

      ※1 プロジェクトシンボル:

      プロジェクトを識別するコードで、各プロジェクトの詳細情報からご確認いただけます。特典が設定されているプロジェクトについては、ご希望の特典を選択してください。

      ※2 アクセスコード:

      発行されたプロジェクトトークンの保有者であることを確認するためのパスワードです。プロジェクトの特典などを受ける際に入力を求められる場合があります。設定したアクセスコードは第三者に絶対に開示しないでください。

      ※プロジェクトによっては、特典選択が必須となる場合があります。

    7. ミント内容の確認画面に遷移したら内容を確認し、問題なければ「ミント実行」ボタンを押します。
    8. ミント3
    9. 接続中のウォレット(拡張またはアプリ)で表示されたミント内容または署名内容を確認し、「確認」または「署名」ボタンを押します。送信後はガスレスミントの処理が完了するまで数分かかる場合があります。
    10. 処理が完了すると、ウォレット側に完了通知が表示される場合があります。その後、自動的にデータベースが更新され、完了すると本サイト上に「プロジェクトトークンが発行されました。」というメッセージが表示されます。これでミントプロセスは完了です。
    11. ミント4

    ミントプロセスを完了すると、プロジェクトトークンは自動的に「マイコレクション」(ヘッダー表記は「コレクション」)に追加され、その詳細を確認することができます。

  4. 4.サスプラカード(店頭提示・決済)

    サスプラカードは、サポーター本人の会員証兼決済用QRです。公式パートナー店舗での称号確認、特典適用、決済リクエストの受け取りを、「サスプラカード」ページから行えます。

    また、公式パートナーのECサイト等でオンライン特典を利用する場合は、店頭提示用QRの代わりに サスプラカード番号 を入力し、登録メールアドレスへ送られる ワンタイムパス で本人確認する方式があります。ECサイト側はその入力値を使って一時的な照合セッションを発行し、店頭QRと同じ特典判定・決済フローへ接続します。

    本機能の利用にはログインに加え、「ウォレット接続」が必要です。初回は接続したウォレットが自分のものであることを確認するため、署名によるアドレス認証を行います。署名自体にガス代はかかりません。

    1. ヘッダー右上のメニューから 「サスプラカード」 を開きます。カード番号欄に「ウォレットを接続してください」と表示されている場合は、まず「接続」ボタンから利用するウォレットを接続してください。
    2. 未認証の状態では「アドレス認証」ボタンと「※ 接続後、アドレス認証を完了してください」が表示されます。「アドレス認証」を押し、ウォレットで署名を承認すると「アドレス認証済み」に切り替わります。
    3. 認証が必要な場合、画面上には「本人確認してQRを表示」という案内が出ます。承認が完了すると提示用QRが発行されます。QRには有効期限があり、表示中もカード情報の再取得や有効期限更新が自動で行われます。
    4. 店舗では表示されたQRを提示します。公式パートナー側がQRを読み取ると、称号確認や特典判定に加え、必要に応じて決済リクエストが送られます。同じ提示用QRに対して新しい請求を重ねて作ることはできません。
    5. 決済リクエストを受け取ると、カード画面側で状態が更新され、ウォレット承認が必要な支払いでは承認画面が表示されます。POL 決済は通常の送金承認、JPYC 決済はガスレス署名で進みます。請求の有効期限は通常約5分です。
    6. 支払い完了後はカード画面に「決済完了」と表示され、必要に応じてトランザクションハッシュのコピーや PolygonScan 確認ができます。確認先の目安は https://polygonscan.com/tx/<TXハッシュ> です。

    補足

    • サスプラカードのQRは、公式パートナー向けの会員証・決済導線です。プロジェクト個別特典の利用で求められるPTのQRとは用途が異なります。
    • 同じQR(presentation_id)では1件の請求しか扱われません。同じQRを再スキャンして新しい請求を作ることはできません。
    • 請求には有効期限(通常約5分)があります。期限切れは状態確認や更新のタイミングで確定反映されることがあります。
    • 請求がまだチェーン送信前(tx_hash 未発行)の段階では、店舗側またはユーザー側で取消できる場合があります。いったん TX が送信された後は途中取消できません。
    • 有効期限後や店頭確認後以外の場面でウォレットに承認要求が表示された場合は、必ず拒否してください。内容に心当たりがない承認は進めないでください。
    • 期限切れ後に誤って承認して送金が成立した場合、SustinaPlus側で特典付与や取引成立は自動では保証されません。店舗側へ状況を伝え、個別返金または個別対応を依頼してください。
    • 支払い処理中はQRの更新が一時的に停止されます。画面を閉じず、完了・キャンセル・期限切れの表示を確認してください。
  5. 5.コレクション(マイコレクション)

    「コレクション」ページ(ページ名はマイコレクション)では、保有するプロジェクトトークン(PT)の確認が行えるほか、以下の機能がご利用になれます。なお、本機能のご利用にあたっては、「ウォレット接続」が必要です。

    1. 保有PTの確認とメタ情報を確認する
      1. ヘッダーの「マイページ」から「コレクション」を開きます。このページでは、プロジェクトごとに整理されたPTを確認できます。各プロジェクトのカードコンテナをクリックすると、関連するトークンの一覧が表示されます。
      2. 各PTカードに表示されている「ロゴ」を押すと詳細ページに遷移しメタ情報を確認することができます。
    2. マイコレクション1
    3. プロジェクトトークンQRの表示
      1. QRコードは、プロジェクトの特典を利用する際に必要となる場合があります。例えば、あるプロジェクトのミント特典が、イベントチケットであった場合、会場のゲートでQRコードをスキャンして入場する場面などです。
      2. 対象のPTカードの「QR」ボタンを押すと、QRコードが表示されるので、必要によりホスト側に提示します。※本人確認のため、アクセスコードの入力が求められることがあります。
    4. アクセスコードの変更
      1. プロジェクトトークンの所有権が移転(マーケットプレイスでの売買など)した場合、アクセスコードは自動的にリセットされます。新しい保有者は、次の手順でアクセスコードを設定する必要があります。この手順は、アクセスコードを忘れた場合の再設定にも適用されます。
        1. 対象のPTカードの「アクセスコード変更」リンクを押します。
        2. ダイアログが表示され、「アクセスコード変更のためのリンクを登録メールアドレスに送信します。」と表示されるので、確認後「OK」を押します。
        3. メールで送られたリンクをクリックし、新しいアクセスコード(英数字含む8文字以上)を入力後、「アクセスコード変更」ボタンを押します。
        4. 変更が完了すると、マイコレクションページに自動的に遷移し、「アクセスコードが変更されました」と表示されます。これでアクセスコードの変更は完了です。
      2. マイコレクション2
    5. プロジェクトトークンの出品
      1. 取得・購入したプロジェクトトークンは、本サービス内のマーケットプレイスで他の参加者に対して出品・販売することができます。出品手順は以下の通りです。
        1. マイコレクションページにアクセスし、対象のプロジェクトカードを選択します。
        2. 選択したプロジェクトのトークンリストから、出品するプロジェクトトークンの「出品」ボタンをクリックします。
        3. 出品価格を円で設定し、「出品する」ボタンを押します。
        4. 表示されたウォレット承認画面で、出品内容への署名を承認します。署名送信後に「プロジェクトトークンを出品しました」と表示されれば、マーケットプレイスへの出品は完了です。
      マイコレクション3

      ー留意事項ー

      • 出品したプロジェクトトークンの取引が成立した際には、ご登録のメールアドレスに通知が届きます。販売代金は、取引手数料を差し引いた金額が出品時に設定した売上送金先アドレスに送金されます。
      • 売上金は JPYC で支払われ、取引成立時に即時処理されます。ただし、ネットワーク混雑や外部サービスの状況により反映が遅延する可能性があります。
      • プロジェクトトークンの出品および取消は現在ガスレス運用です。通常はユーザー側でガス代は請求されません。
  6. 6.プロジェクトトークンの購入

    サスティナプラスでは、プロジェクトトークンの購入を通じて、SDGs関連プロジェクトの支援が可能です。プロジェクトトークンを購入することで、特定の商品やサービス、優待を受ける権利を得られる場合があります。以下に、プロジェクトトークンの購入手順をご案内します。

    ※プロジェクトトークンの購入には、事前に「ウォレット接続」が必要です。

    1. ヘッダーの「マーケットプレイス」から「プロジェクトトークン」タブを開きます。
    2. プロジェクトリストが表示されるので、希望するプロジェクトトークンが属するプロジェクトを検索してクリックすると、出品されているプロジェクトトークンの一覧が表示されます。購入を希望するプロジェクトトークンの「購入する」ボタンをクリックするか、複数まとめて購入する場合は「カートに追加」ボタンをクリックしてください。
    3. 確認ページに遷移後、購入内容を確認し決済通貨(POL / WETH / JPYC)を選択します。問題がなければ「購入」ボタンをクリックして決済プロセスに進みます。
    4. プロジェクトトークン購入1
    5. ウォレットの決済確認画面が表示されるので、選択した通貨に応じた内容を確認します。POL / WETH では支払い金額と必要なガス代、JPYC ではガスレス署名内容を確認し、「確認」または「署名」ボタンで購入代金の支払いを承認します。
    6. 決済が完了すると、「プロジェクトトークンを購入しました」と表示され、購入手続きが完了します。
    7. 購入したプロジェクトトークンは、マイコレクションに追加され、各種機能をご利用いただけます。
    8. ※プロジェクトトークンの出品方法については、ステップ4-1-5「プロジェクトトークンの出品」をご参照ください。

      【ご注意】公式マーケットプレイス以外でのトークン移転について

      エレメントやプロジェクトトークンの売買は、公式マーケットプレイスでのみ行うことが義務付けられており、 これに違反する外部での売買行為は規約違反です。
      公式マーケットプレイス外での取引を持ちかける行為は規約違反であると同時に詐欺行為である可能性が極めて高いため、、絶対に応じないでください。


      ⚠ 公式マーケットプレイス外での移転リスク
      • 詐欺やトラブルのリスク: 公式マーケットプレイスを介さない取引は、システム的な保証が一切なく、安全性が確保されません。詐欺、偽装、取引条件の不履行などの被害を受ける可能性が極めて高くなります。
      • 回復不能リスク: 公式マーケットプレイスを利用しない移転であっても、トランザクションはブロックチェーンに記録され、所有者の変更は不可逆的に確定します。そのため、詐欺や誤送信などの問題が発生しても、取り消しや返還はできません。
      • 特典・権利が無効になる可能性: 公式マーケットプレイスを介さない移転が規約違反と判明した場合、当該トークンの特典・権利は無効化(Burn)されます。
      • サポート対象外: 公式マーケットプレイスを利用しない取引において発生したトラブル(詐欺・支払い不履行・権利消失など)について、当社およびホストは一切の責任を負いません。いかなる場合も、当事者間で解決していただく必要があります。

      ✅ 安全な取引のために

      安心・安全な取引を行うため、 必ず 公式マーケットプレイス をご利用ください。
      また、相続や贈与などの無償の個人間移転の場合であっても、上記リスクを十分に理解した上で、実施していただくようお願いいたします。

  7. 7.特典

    サポーターが受け取れる特典は2種類あります。適用条件や内容が異なるため、ミント前に確認しましょう。

      PROJECT
      区分 プロジェクト特典
      提供主体 各プロジェクトのホスト
      発生条件 指定の必要PT数をミント/保有すると受け取り可
      内容例 イベント入場券、予約権、会員証、割引クーポン など
      タイプ 固定(内容が変わらない)/変動(進捗に応じて内容・割引率等が変わる)
      要チェック 必要PT数・有効期限・数量上限・対象期間・先着条件 など

      ※ ミント時に特典選択が必須のプロジェクトもあります。プロジェクト詳細ページの「特典」欄を確認してください。

      OFFICIAL
      区分 プログラム特典(公式パートナー特典)
      提供主体 SustinaPlus協賛企業または店舗
      発生条件 ユーザーが持つ称号(例:累計PT 等)に応じて利用可
      内容例 店舗割引、ドリンク無料、ノベルティ、オンラインクーポン など
      適用範囲 プロジェクト横断(特定プロジェクトに限定されない)
      要チェック 対象の称号・提供期間・回数制限・対象店舗/サービス

      ※ 自分の称号を確認するには ログイン してください。

      特典の使い方(共通)

      • プロジェクト特典の対面利用:マイコレクションのPTのQRを提示 → ホスト/店舗側で確認
      • 公式パートナー特典・店頭決済:サスプラカードQRを提示 → パートナー側で特典判定・請求
      • オンラインでの本人確認:トークンIDとアクセスコード入力で認証

      ※ アクセスコードは、トークン(NFT)の所有者確認に用いる機密パスワードです。第三者に絶対に開示しないでください。なお、所有権が移転した場合は自動的にリセットされます。

      注意事項

      • 特典は各プロジェクトのホストおよび公式パートナー(協賛企業・店舗)が任意に設定・提供するものです。SustinaPlus(本プログラム)は特典の提供主体ではありません
      • 特典が設定されていないプロジェクトもあります。
      • プログラム特典(公式パートナー特典)は、ユーザーの称号等の条件に応じて提供され、内容の変更・一時停止・終了になる場合があります(予告なく変更されることがあります)。
      • 特典の提供責任・履行・品質は各ホスト/パートナーに帰属します。SustinaPlus(運営会社)は特典提供の履行・品質・在庫等を保証しません
      • 特典の利用には、NFT/PTの保有必要PT数称号アクセスコード提示・本人確認期間/数量/対象店舗などの条件が適用される場合があります。各ページに記載の条件を必ずご確認ください。
2-3 ホスト向けガイド

ホストは、SDGsの達成を目指してプロジェクトを提案・実行する主体です。個人や企業など、誰でもホストになることができ、持続可能な社会の実現に向けて具体的な取り組みを行います。

  1. 1.プロジェクト登録

    プロジェクトは、SDGs(持続可能な開発目標)の17の目標の中からテーマを選び、その達成を目指して取り組む活動です。法人・個人を問わず、誰でもホストとして自由にプロジェクトを立ち上げ、登録できます。

    ※各種イベントの開催や経済活動等による環境への影響をオフセットする目的で、それらのイベントをプロジェクトとして登録することも可能です。

    以下では、プロジェクト(SDGs活動)を本プログラムに登録する手順をご案内します。

    現行のホスト導線には、LPのAIクイック登録から下書きを作る方法と、新規プロジェクト登録フォームを直接入力する方法があります。どちらを選んでも最終的には同じ確認・公開フローに進みます。

    1. 短時間で始める場合は AIクイック登録 を利用します。直接入力したい場合は 新規プロジェクト登録 を開きます。
    2. フォームまたはAIが生成した下書きの内容を確認し、以下の内容に従って各項目を入力・更新します。
      1. 基本情報
        • プロジェクト名: 任意のプロジェクト名称を入力してください。
        • シンボル: プロジェクトを識別するためのユニークなコード。半角英字(大文字)4桁で設定してください。
        • SDGs目標: プロジェクトのSDGs目標を選択してください。プロジェクトの活動目的に即したSDGs目標である必要があります。
        • ターゲット: プロジェクト活動における主なターゲット、または関連するターゲットを選択してください。
        • 活動地域: 活動エリア(都道府県 / 市区町村)を設定します。検索ページの地域条件や詳細ページの「活動地域」表示に利用されます。未設定でも登録できますが、公開時の見つけやすさ向上のため設定を推奨します。
        • プロジェクト概要: プロジェクトの目的と活動内容の要約を記載してください。
        • プロジェクト詳細: プロジェクトの具体的な計画、活動内容、対象者、期待する効果など、詳細な活動情報を記載します。
        • 紹介動画URL: 任意で YouTube の紹介動画URLを掲載できます。公開 / 限定公開どちらの共有URLにも対応します。
      2. 特典情報
        • 特典のタイプ: プロジェクトで提供する特典のタイプを「固定」または「変動」から選択します。特典を設定しない場合は「特典なし」を選択してください。
        • プロジェクト特典には、「固定」と「変動」の二つのカテゴリーがあります。

          「固定特典」は、特定のコンサートチケットや期間限定のサービス券など、目的と内容が明確でプロジェクトの進捗や状況に左右されない特典の場合に選択します。

          一方、プロジェクトの進展に応じて特典の内容を柔軟に変更したい場合は、「変動特典」を選択します。これには、プロジェクトの成功に伴う特典の拡充や、不測の事態による特典の廃止が含まれます。

          ※固定特典の利用例:(一回限りの使い切り特典や、継続的な会員資格を付与する特典など))

          • 会員証(メンバーズ会員カード機能等)
          • 予約券
          • コンサートやイベント等のチケット

          ※変動特典の利用例:(主に将来にわたるプロジェクトトークンの価値向上に取り組みたい場合など)

          • 変動制の割引券・クーポン
          • プロジェクトの進捗や業績に応じて特典内容を拡充または縮小する可能性がある場合
          • 季節や期間、その他の条件によって特典内容を変更したい場合
        • 特典名: 特典を識別する名称を入力してください。
        • 必要PT数: 特典のミントに必要なエレメント数を設定します。エレメントをミントすると、同数のプロジェクトトークンが発行され、サポーターに付与されます。
        • 発行上限: 特典を紐づけるプロジェクトトークンの最大発行数を設定することで、当該特典の提供数を制限することができます。上限を設けない場合は空欄としてください。
        • 重要
          特典を設定した場合、サポーターはミント時に必ず特典を選択する必要があります。

          必要PT数が 2以上の場合、発行されたプロジェクトトークンは不可逆的にグループ化され、グループトークンとして扱われます。

          特典が未設定のプロジェクトでは、1エレメントごとにクラシックトークン※が発行されます。

          クラシックトークンの保有数に応じて特典や優待を提供する場合は、「プロジェクト詳細」に具体的な提供条件を明記してください。

          「必要PT数」以外の提供条件(例:特定のトークンID、ミント期間など)を設ける場合は、当該条件を「特典内容」または「プロジェクト詳細」に必ず明記してください。

          ※クラシックトークンは、特典情報を持たないベーシックなプロジェクトトークンです。特典情報を持たないため、必要PT数や発行上限は設定できず、シングルトークンとして扱われます。

        • 特典内容: 特典の内容を詳しく説明します。「必要PT数」以外の提供条件を設定する場合は、その詳細も必ず明記してください。
        • 提供方法: 特典の提供方法と手順を記載します。
        • 特典の提供方法については、内容に応じて受渡しや利用方法を明記してください。

          例えば、来店型の特典として物品やサービスを提供する場合は、マイコレクションページから表示できる トークンのQRコード※や対象のトークンリスト画面を来店時にスタッフに提示する方法などを記載します。

          また、チケットなどの入場券の場合は、ゲートで提示したり、専用のスキャナーにかざしたりすることが一般的です。

          一方、非来店型の場合は、サスプラカード番号と登録メールアドレスへ送られるワンタイムパスを使ってオンラインで 特典を利用できるなど、実際に特典を受けとる方法を具体的に明記すると良いでしょう。

          各種プロジェクトの内容や特典の特性に応じて、対応可能な提供方法を設定してください。

          QRコードにはプロジェクトトークンのデータが含まれています。 現行環境では、SustinaPlus公式アプリ とホスト向け真正確認API(/host/verify_nft/host/verify_nft_manual)が提供されています。 ホストは、SustinaPlus公式アプリの「クイックスキャン > ホスト QRスキャン」から簡易運用することも、独自のPOSやアプリケーションにAPIを統合することもできます。

      3. ミント制限
        • PT発行可能総数: PT発行可能総数に上限を設ける場合は、その最大数を設定してください。
          この設定は、プロジェクト全体のPT発行数を制限したい場合に使用します。発行数が上限に達すると、特典ごとの発行上限に関係なく、新規ミントができなくなります。
          なお、この設定は登録後も変更可能で、プロジェクトの進捗に応じて上限を引き上げたり、撤廃することができます。
        • 有効期間: 対象プロジェクトでミントの受付期間を設定したい場合に使用します。この設定は登録後に変更できません。
          例えば、期間限定プロジェクトでは、開始日と終了日を設定することで、ミントできる期間を事前に指定できます。
          また、開始日だけを設定すれば、プロジェクトの開始予約が可能です。終了日のみを設定して、ミント期限を設けることもできます。
      4. ロゴ情報
        • プロジェクト・ロゴ: プロジェクトを象徴するロゴ画像をアップロードします。この画像は発行されるPTのロゴとして使用されます。
        • アイキャッチ画像: プロジェクトの雰囲気を伝える画像を設定します。この画像はプロジェクト詳細ページの概要欄に表示されます。
        • バナー画像: プロジェクトを宣伝するためのバナー画像を設定します。
      5. ホスト情報
        • プロジェクトURL: プロジェクトの公式サイトやホストの詳細情報が確認できるURLを設定してください。これにより、ユーザーは詳細ページからプロジェクトの公式情報にアクセスできます。
        • 外部リンク: プロジェクトに関連するSNSリンク等を最大3つまで設定できます。
    3. 入力が完了したら、「確認ページへ進む」ボタンを押してください。
    4. 確認ページで入力内容を確認し、必要に応じて「修正」ボタンで入力内容を修正します。
    5. 現行の確認ページでは、すぐに公開する場合は「登録(公開)」、あとで公開する場合は「仮登録」を選択できます。
    6. 「仮登録」を選んだプロジェクトは非公開のまま保存され、詳細ページまたは「マイプロジェクト」から編集・再開できます。公開準備が整ったら詳細ページの「公開する」ボタンで公開します。
  2. 2.プロジェクト管理(編集・公開・ホルダー管理)

    登録後のプロジェクトは、「マイプロジェクト」ページと各プロジェクトの詳細ページから管理できます。現行UIでは、編集、公開/非公開、休止/再開、フィード確認、ホルダー管理、お知らせ配信などをここから行います。

    1. プロジェクトの編集
      1. アクセス方法: ヘッダーの「マイページ」からマイプロジェクトを選択します。
      2. 操作手順:
        1. マイプロジェクトページにアクセスすると、登録済みのプロジェクト一覧が表示されます。
        2. 編集したいプロジェクトのカードにある「編集」ボタンをクリックします。
        3. プロジェクト編集ページへ遷移後、既存の登録情報が入力されたフォームが表示されます。
        4. 編集を希望する項目の内容を更新します。編集しない項目は変更不要です。
        5. 全項目の編集が完了したら、ページ下部にある「プロジェクト更新」ボタンをクリックします。
        6. 確認メッセージが表示されたら、「OK」を選択して変更を確定します。
      3. 更新後、詳細ページが表示され、「プロジェクトが更新されました」とのメッセージが表示されれば、更新は成功です。エラーが発生した場合は、エラーメッセージに従って、必要な修正を行ってください。

    2. 公開・非公開の切り替え
      1. 公開方法: 仮登録したプロジェクトは、詳細ページ右上の「公開する」ボタンから公開できます。公開するとホームや検索結果に表示され、ミント受付が開始されます。
      2. 非公開化: すでに公開中のプロジェクトは、同じ位置の「非公開にする」ボタンから公開状態を解除できます。非公開にしてもプロジェクト自体は削除されず、再編集や再公開が可能です。
    3. プロジェクトの休止・再開

      本機能は、やむを得ない理由によりミントの受付を停止せざるを得ない状況になった場合にミントの受付を手動で休止および再開するための機能です。休止および再開の際は、サポーターが変更の理由と状況を適時に把握できるよう、公式サイトやSNSを通じて適切に情報を提供することが求められます。

      1. 休止の設定:
        1. 「マイプロジェクト」ページから、休止したいプロジェクトのトグルスイッチ(稼働中)を操作すると、プロジェクトは非アクティブ状態(休止中)に切り替わります。
        2. トグルスイッチを「非アクティブ」に切り替えると、プロジェクトは休止中と表示され、新規ミントの受付が停止されます。
      2. 再開の設定:
        1. 再開したいプロジェクトのトグルスイッチ(休止中)を操作します。
        2. トグルスイッチを「アクティブ」に切り替えると、プロジェクトが再び稼働中と表示され、新規のミント受付が再開されます。
    4. フィード確認と進捗発信
      1. アクセス方法: マイプロジェクトの各カードにある「フィード」ボタン、またはヘッダーの「SNS」から対象プロジェクトの投稿スレッドへ進みます。
      2. 活用方法: 公開後の進捗報告、告知、サポーターとのコメント/返信の確認に利用できます。公開中プロジェクトの活動状況を継続的に発信する導線として活用してください。
    5. ホルダー管理
      1. アクセス方法: マイプロジェクトの各カードにある「ホルダー管理」ボタンをクリックします。
      2. 確認できる内容: 発行済みPTを NFT 単位で一覧表示し、現在の保有ユーザー、ミント日時、取得日時、特典名、親子トークン区分、利用回数を確認できます。
      3. 補助機能: ユーザー別表示への切り替えと、CSVダウンロードが利用できます。運用報告や来場管理、保有状況の確認に利用してください。
    6. お知らせ配信
      1. アクセス方法: マイプロジェクトの各カードにある「お知らせ配信」ボタンから履歴画面を開き、「新規作成」を押します。
      2. 配信対象: 対象プロジェクトの現ホルダーにメールを送信できます。配信停止設定済みユーザーは自動で除外されます。
      3. 補助機能: まず自分宛に送る「テスト配信」、配信履歴の確認、配信ログCSVのダウンロードに対応しています。
    7. 更新履歴と削除
      1. 更新履歴: プロジェクト詳細ページ下部の「更新履歴」から、主な変更内容を確認できます。
      2. 削除: プロジェクト詳細ページ下部の「プロジェクトを削除」から削除できます。この操作は元に戻せないため、公開状態や保有者状況を確認した上で実行してください。
    8. プロジェクト管理1
    9. プロジェクトランク:

      プロジェクトランクは、プロジェクトトークン(PT)の発行数に基づいて設定・公開されます。ランクが上がると、プロジェクトのミント報酬やロイヤリティ(二次流通報酬率)が優遇されます。

      ランク PT発行数の条件
      ダイアモンド 1,000,000以上
      プラチナ 100,000以上、1,000,000未満
      ゴールド 10,000以上、100,000未満
      シルバー 1,000以上、10,000未満
      ブロンズ 100以上、1,000未満
      ウッド 100未満
  3. 3.プロジェクト報酬

    プロジェクト報酬は、プロジェクトの推進と持続的発展を支えるため、サポーターの活動やプロジェクトトークンの取引に応じてホストに支払われる報酬です。プロジェクト報酬は、「ミント報酬」と「ロイヤリティ」の2つに分類されます。

    1. 報酬の確認方法
      1. アクセス方法: ヘッダーの「マイページ」からマイプロジェクトを選択します。
      2. マイプロジェクトページの「プロジェクト報酬」タブをクリックします。
      3. 当該ページでは、ミントおよびロイヤリティのそれぞれの報酬を確認でき、対象年月シンボルで絞り込みが可能です。
      4. ページ下部の報酬明細テーブルにて、ミントとロイヤリティのタブ分けされた表示により、各ミントおよびPTの取引ごとの詳細を確認できます。
    2. ミント報酬
      1. ミント報酬は、サポーターがプロジェクトをミントした際にホストへ支払われるインセンティブで、ミント時のプロジェクトランクに基づいて算定されます。
      2. 報酬の算定と支払い:
        1. サポーターがミントを実行すると、プログラムがミント実行時点のプロジェクトランクを確認します。
        2. 該当ランクの報酬額(法定通貨「円」)が算定され、報酬として JPYC で支払われます。
        3. 算定されたミント報酬はホストがプロジェクト登録時に設定したウォレットアドレスに送金されます。
      3. 報酬額:

        各プロジェクトランクに対応するミント報酬額(1PTあたりの金額)は以下の通りです。

        ランク 報酬額 (単位: 円)
        ダイアモンド 380
        プラチナ 375
        ゴールド 365
        シルバー 350
        ブロンズ 330
        ウッド 300
    3. ロイヤリティ
      1. ロイヤリティは、プロジェクトトークンがマーケットプレイスで取引された際に、取引価格とプロジェクトランクに応じたロイヤリティ率を基に算定されます。
      2. ロイヤリティの算定と支払い:
        1. プロジェクトトークンが取引された際、取引価格に基づき取引成立時点のプロジェクトランクに応じたロイヤリティ率が適用されます。
        2. 適用されたロイヤリティ率に基づきロイヤリティ額が算定され、JPYC で支払われます。
        3. 算定されたロイヤリティはホストがプロジェクト登録時に設定したウォレットアドレスに送金されます。
      3. ロイヤリティ率:

        各プロジェクトランクに対応するロイヤリティ率は、次の通りです。

        ランク ロイヤリティ率 (%)
        ダイアモンド 8.25%
        プラチナ 8.0%
        ゴールド 7.75%
        シルバー 7.5%
        ブロンズ 7.25%
        ウッド 7.0%
  4. 4.API(PJ特典用)ホスト向け

    本APIは、ホストがプロジェクト特典を提供する際に、ユーザーから提示されたプロジェクトトークン(NFT)のQRコード(またはオンライン入力)を通じて、対象NFTの所有権および関連情報をブロックチェーンにリアルタイムで照会する機能を提供します。 これにより、ホストは既存のPOS(会計)システムや独自アプリケーションを通じて、NFTの所有確認や特典内容の照会を安全かつ迅速に行うことができ、特典提供時の認証業務を効率化できます。
    以下では、APIキーの取得方法や具体的な呼び出し手順について解説します。

    本 API には QR スキャン方式(オフライン店頭)トークン ID + アクセスコード方式(オンライン/入力) の 2 通りがあります。 どちらも同じ API キーで呼び出せますが、エンドポイントとリクエストパラメータが異なります

    QR スキャン方式をご利用の場合は、必ずマイコレクション機能から発行されたQRコードをご使用ください。 他の方法で作成または取得したQRコードはご利用になれません。

    SustinaPlus公式アプリ を利用して、ホスト向けの真正確認やスキャン運用を行えます。

    アプリでは「クイックスキャン > ホスト QRスキャン」から検証を開始でき、運用後は「ホスト履歴」で履歴確認も行えます。独自システムへ組み込む場合は、以下のAPIを利用してください。

    1. APIキーの取得
      1. まず、マイプロジェクトページにアクセスします。
      2. プロジェクト一覧が表示されたら、APIキーを確認したいプロジェクトカードの「詳細」ボタンをクリックします。
      3. 管理者向けのプロジェクト詳細ページが表示され、その中にAPIキーが表示されます。
        例) APIキー: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1f
      4. APIキーの右側に表示されているコピーアイコンをクリックすると、クリップボードにコピーされます。コピーしたAPIキーは、外部に漏洩しないよう大切に管理してください。

      ※ APIキーはプロジェクトごとに発行されており、複数のプロジェクトを運営する場合、それぞれ異なるAPIキーが割り当てられます。

      APIキー表示例(マイプロジェクト/詳細ページ内)▼

      管理者専用情報
    2. APIのエンドポイント

      本サービスのAPIは、以下のエンドポイントを通じてNFTの真正確認を行うことができます。

      Base URL
      エンドポイント詳細
      エンドポイント HTTPメソッド 用途 主パラメータ
      /host/verify_nft POST QR 方式(店頭スキャン) encoded_data
      /host/verify_nft_manual POST オンライン方式 token_id, access_code
      リクエストヘッダー
      キー 説明
      X-API-KEY プロジェクト専用のAPIキー APIキーの認証に使用されます。
      必須項目
      Content-Type application/json リクエストデータ形式。
      必須項目
      リクエストボディ
      1. QR方式
      パラメータ名 必須 説明
      encoded_data string (Base64) 必須 QRコード情報をBase64エンコードした文字列
      action string 任意

      使用カウントを操作したい場合に指定可能なパラメータ。

      • use: usage_count を +1
      • cancel: usage_count を -1 (0未満にはならない)
      • 省略: カウント操作なし
      reward_id integer 任意 特典コードを指定すると、それ以外のNFT QRをブロックします。
      不一致の場合は 409 Conflict を返却します。
      未指定の場合はこの検証をスキップします。
      2. オンライン方式
      パラメータ名 必須 説明
      token_id integer 必須 対象NFTのToken ID
      access_code string 必須 対象NFTに設定したアクセスコード
      action string 任意

      使用カウントを操作したい場合に指定可能なパラメータ。

      • use: usage_count を +1
      • cancel: usage_count を -1 (0未満にはならない)
      • 省略: カウント操作なし
      reward_id integer 任意 特典コードを指定すると、それ以外のNFT QRをブロックします。
      不一致の場合は 409 Conflict を返却します。
      未指定の場合はこの検証をスキップします。
      レスポンスボディ
      キー 説明
      success boolean API呼び出しが成功したかどうかを示します。
      isAuthentic boolean QRコードの署名検証・NFTの所有確認・有効期限チェックなどを通じて、NFTが正当なものであると総合的に判断された場合に true になります。
      message string 処理結果やエラーメッセージ
      token_id ※1 integer NFTのトークンID
      project_code string プロジェクトコード
      project_name string プロジェクト名
      benefit_name string 特典名
      action string 実行されたアクション(use / cancel / null)
      usage_count integer 当該 NFT がこれまでに利用された回数
      action="use" で +1、"cancel" で −1(下限0)。
      カウント操作なしの場合は既存回数を返します。
      remaining_token integer / null その NFT であと何回特典を利用できるか。
      null は「上限なし」を示します。
      last_used_at string 最終利用または取消処理の日時(ISO 8601形式)。
      action に "use" または "cancel" を指定した場合にのみ更新されます。
      それ以外の場合は null または含まれない可能性があります。
      token_ids ※2 array<integer> グループ検証時に対象となるすべてのトークンIDのリスト。
      representative_token_id ※2 integer グループ検証時の代表トークンID(最小のトークンID)。
      このトークンがusage_countの記録対象になります。

      ※1 token_id はシングルトークン(クラシックトークン)検証時にのみ返却されます。
      ※2 token_idsおよびrepresentative_token_idは、クラシックトークン(シングルトークン)検証では返却されません。

      レスポンス例(成功時 - シングルトークン)
      
                                  {
                                      "success": true,
                                      "isAuthentic": true,
                                      "message": "Single token verified successfully",
                                      "token_id": 101,
                                      "project_code": "ABCD",
                                      "project_name": "プロジェクト名",
                                      "benefit_name": "特典名",
                                      "action": "use",
                                      "usage_count": 3,
                                      "last_used_at": "2025-06-11T12:34:56+09:00"
                                  }
      レスポンス例(成功時 - グループトークン)
      
                                  {
                                      "success": true,
                                      "isAuthentic": true,
                                      "message": "Group tokens verified successfully",
                                      "token_ids": [101, 102],
                                      "representative_token_id": 101,
                                      "project_code": "ABC123",
                                      "project_name": "プロジェクト名",
                                      "benefit_name": "特典名",
                                      "action": "use",
                                      "usage_count": 5,
                                      "last_used_at": "2025-06-11T15:30:00+09:00"
                                  }
                                  
      レスポンス例(否認時 - 所有権確認失敗)
      
                                  {
                                      "success": false,
                                      "isAuthentic": false,
                                      "message": "On-chain balance check failed"
                                  }
                                  

      ※ オンライン入力方式でも、指定した token_idバンドル (グループ) に属している場合は、 レスポンスは上記「グループトークン成功例」と同一構造 (token_ids, representative_token_id などを含む) で返却されます。

    3. APIの呼び出し方

      API を呼び出す際は、取得した X-API-KEY を リクエストヘッダーに必ず含めてください。
      ① QR スキャン方式 (/verify_nft) と ② オンライン入力方式 (/verify_nft_manual) は ペイロードが異なります。下記サンプルを参考に実装してください。

      ① QR スキャン方式  —  Python
      
                                  import requests
      
                                  BASE_URL = "https://sustina-plus.jp/api/v1/external/host"
                                  API_KEY  = "あなたのAPIキー"
      
                                  headers  = {
                                      "X-API-KEY": API_KEY,
                                      "Content-Type": "application/json"
                                  }
      
                                  # QRコードを Base64 化して encoded_data にセット
                                  payload = {
                                      "encoded_data": "",
                                      "action": "use"     # +1 → "use" / −1 → "cancel" / 省略 → カウント変更なし
                                  }
      
                                  res = requests.post(f"{BASE_URL}/verify_nft", headers=headers, json=payload)
                                  print(res.json())
                                      
      ① QR スキャン方式  —  JavaScript (Fetch)
      
                                  const BASE_URL = "https://sustina-plus.jp/api/v1/external/host";
                                  const API_KEY  = "あなたのAPIキー";
      
                                  const payload = {
                                  encoded_data: "",
                                  action: "use"   // +1: use / −1: cancel
                                  };
      
                                  fetch(`${BASE_URL}/verify_nft`, {
                                  method: "POST",
                                  headers: {
                                      "X-API-KEY": API_KEY,
                                      "Content-Type": "application/json"
                                  },
                                  body: JSON.stringify(payload)
                                  })
                                  .then(r => (r.ok ? r.json() : Promise.reject(r)))
                                  .then(data => console.log("NFT真正確認結果:", data))
                                  .catch(err  => console.error("API エラー:", err));
                                      
      ② オンライン入力方式  —  Python
      
                                  import requests
      
                                  BASE_URL = "https://sustina-plus.jp/api/v1/external/host"
                                  API_KEY  = "あなたのAPIキー"
      
                                  headers  = {
                                      "X-API-KEY": API_KEY,
                                      "Content-Type": "application/json"
                                  }
      
                                  payload = {
                                      "token_id":    123,      # 対象 NFT の Token ID
                                      "access_code": "Ab12Cd34", # 英数字を含む 8 文字以上
                                      "action":      "use"
                                  }
      
                                  res = requests.post(f"{BASE_URL}/verify_nft_manual",
                                                      headers=headers, json=payload)
                                  print(res.json())
                                      
      ② オンライン入力方式  —  JavaScript (Fetch)
      
                                  const BASE_URL = "https://sustina-plus.jp/api/v1/external/host";
                                  const API_KEY  = "あなたのAPIキー";
      
                                  const payload = {
                                  token_id:    123,
                                  access_code: "Ab12Cd34",
                                  action:      "use"
                                  };
      
                                  fetch(`${BASE_URL}/verify_nft_manual`, {
                                  method: "POST",
                                  headers: {
                                      "X-API-KEY": API_KEY,
                                      "Content-Type": "application/json"
                                  },
                                  body: JSON.stringify(payload)
                                  })
                                  .then(r => (r.ok ? r.json() : Promise.reject(r)))
                                  .then(data => console.log("NFT真正確認結果:", data))
                                  .catch(err  => console.error("API エラー:", err));
                                      

      補足:
      ・QR 方式では encoded_data のみ必須です。
      ・オンライン方式では token_idaccess_code が必須で、ウォレットアドレスはサーバ側で自動照合されます。
      ・プロジェクトに複数の特典がある/イベントで “特定の特典だけ” を提供する場合はリクエストに reward_id を付けてください。
      ・HTTP ステータス 200 であればJSON 内 success が真かどうかで認証結果を判定してください。

    4. APIキー管理の注意点
      • APIキーは機密情報です。ソースコードの公開リポジトリや第三者が閲覧可能な場所に記述しないでください。
      • 万が一APIキーが漏洩したり、不正利用が疑われる場合は速やかにキーを変更し、サポートへ連絡してください。
      • システムで複数人がAPIキーを共有する場合は、各プロジェクトの運用ルールを明確にし、アクセス権限管理を厳密に行うことを推奨します。
    5. トラブルシューティング

      APIが正常に動作しない場合は、以下の点を確認してください。

      • APIキーが正しいものか(誤って他のプロジェクトのキーを使用していないか)
      • Base URLやエンドポイントのURLに誤りがないか
      • HTTPメソッドがPOSTになっているか
      • encoded_dataに必要な情報が正しく含まれているか
      • QRコードが有効期限内(生成から5分以内)であるか(有効期限を過ぎた場合はエラーが発生します)
      • APIキーが無効または削除されていないか
      レスポンス例とその原因(エラー時)
      
                                  {
                                      "success": false,
                                      "message": "Invalid API key"
                                  }
                                  

      → 提供されたAPIキーが無効・削除済み、またはプロジェクトと一致していません。

      
                                  {
                                      "success": false,
                                      "message": "No 'encoded_data' provided"
                                  }
                                  

      → 必須パラメータ encoded_data がリクエストに含まれていません。

      
                                  {
                                      "success": false,
                                      "message": "Invalid QR data structure"
                                  }
                                  

      → QRコードが正しい形式でエンコードされていない、または構造が壊れています。

      
                                  {
                                      "success": false,
                                      "isAuthentic": false,
                                      "message": "QR code expired (over 5 minutes)"
                                  }
                                  

      → QRコードが発行されてから5分以上経過しており、有効期限切れです。

      
                                  {
                                      "success": false,
                                      "message": "Group tokens include multiple project codes",
                                      "multiple_projects": ["ABCD", "EFGH"]
                                  }
                                  

      → グループに含まれるNFTが異なるプロジェクトに属しており、検証対象外です。

      
                                  {
                                      "success": false,
                                      "message": "Reward ID mismatch",
                                      "expected": 7,
                                      "provided": 5
                                  }
                                  

      → 呼び出し側が reward_id=7 を指定したのに、QR/トークンは reward_id=5 を持っていたケースです。

      
                                  {
                                      "success": false,
                                      "message": "Token or access_code invalid"
                                  }
                                  

      token_idaccess_code の組み合わせが一致しない、またはトークンが存在しません。

      上記以外のエラーが発生した場合や原因が特定できない場合は、サポートまでご連絡ください。

2-4 パートナー向けガイド

このセクションでは、Official Partnership Program に参加するパートナー向けに、 パートナー登録、ロゴ管理、特典設定、広告、登録情報の確認、および特典運用の流れを説明します。 特典運用には、QRスキャンオンライン(外部サイトなどでのご利用) の 2 方式があります。

  1. 1.パートナー登録
    1. 申請フォーム から必要事項を入力し、申請します。
    2. 申請内容は SustinaPlus 運営が確認し、承認後にパートナー機能が利用可能になります。
    3. 承認後は パートナーコンソール から各種設定を行います。
    4. 審査中または承認済みの申請がある場合は、重複申請できません。
  2. 2.ロゴ登録・変更
    1. ロゴ設定ページ でロゴ画像を登録または差し替えできます。
    2. 登録したロゴは、承認済みパートナーの表示箇所や関連画面で利用されます。
    3. 不要になったロゴは同じ画面から削除できます。
  3. 3.特典設定
    1. 特典設定ページ で、対象タイトルごとの特典を登録します。
    2. 公開期間、説明文、決済条件、表示用メディアなどを設定できます。
    3. 店頭向けとオンライン向けで内容を分けたい場合は、運用方法に合わせて特典を作り分けてください。
    4. 既存の利用履歴や決済履歴と紐付く特典は、削除ではなく無効化で管理される場合があります。
  4. 4.広告
    1. 広告設定ページ から、スレッド広告やサイト内広告を登録できます。
    2. スレッド広告は、対象スレッドに紐づけて掲載します。
    3. サイト内広告は画像形式で登録し、掲載には審査が必要です。
    4. 画像サイズや掲載数には制限があります。画面上の案内に従って設定してください。
  5. 5.登録情報の設定・確認
    1. 登録情報の確認ページ では、登録内容、Web サイト URL、受取先ウォレットアドレス、API キーを確認できます。
    2. 登録情報の編集ページ では、Web サイト URL、担当者情報、PR、受取先ウォレットアドレスなどを更新できます。
    3. Web サイト URL は、オンライン決済で return_url を使う場合の基準になります。現行実装では、return_url のホストが登録済み Web サイト URL と一致している必要があります。
    4. 受取先ウォレットアドレス は、POL または JPYC のパートナー決済で必須です。未設定または形式不正のままでは、/partner/payment_requests で決済リクエストを作成できません。
    5. API キー は、API 連携で HTTP ヘッダー X-API-Key に設定して利用します。外部に公開せず、サーバー側の安全な設定として管理してください。
    6. 有効な特典が残っている場合は、パートナー登録の削除ができません。
  6. 6.QRスキャン

    この方式は、店舗スタッフが店頭で対応する運用です。 SustinaPlus 専用アプリでお客様のサスプラカード QR を読み取り、特典確認、利用計上、必要に応じた決済まで進めます。 決済方法の選び方や API ごとの役割は、2-5 パートナー向け決済ガイド をあわせて確認してください。

    この方式は、店舗スタッフが SustinaPlus 専用アプリ を使って、 お客様のサスプラカード QR を読み取る運用です。 店舗運営の担当者がそのまま使えるように、日々の接客手順に沿って説明します。

    項目内容
    主な利用場面店頭、受付、イベント会場、対面販売
    通常の利用端末SustinaPlus 専用アプリを入れたスマートフォン
    スタッフ側の画面アプリ内の「パートナー QRスキャン」
    お客様側の画面サスプラカード に表示される QR

    使い始める前の準備

    1. パートナー登録を完了し、利用する特典を事前に登録しておきます。
    2. 店舗で使う端末に SustinaPlus 専用アプリを入れ、パートナーアカウントでログインします。
    3. アプリでカメラ利用を許可します。

    店頭での使い方

    1. アプリを開き、スキャン画面一覧から 「パートナー QRスキャン」 を開きます。
    2. お客様にサスプラカードの QR を表示してもらいます。
    3. 通常は、そのままお客様の QR を読み取れば大丈夫です。特定の特典を使いたい場合だけ、先に「特典を選択」で指定します。
    4. スタッフ端末で QR を読み取ると、利用できる特典の確認、利用計上、必要な場合の決済処理まで進みます。
    5. 無料特典なら、その場で利用完了です。決済が必要な特典なら、画面の案内に従って処理を進めます。

    困ったときの見方

    1. 利用済み と出た場合は、その QR はすでに使われています。お客様にサスプラカード側で QR を更新してもらってください。
    2. 期限切れ と出た場合も、同じくお客様側で QR を更新してもらってください。
    3. 特典が自動で選ばれない場合は、対象タイトルや特典の設定内容を見直してください。

    補足

    • 通常運用は専用アプリの利用を前提にしてください。
    • 補助的な方法として、現行実装ではカメラ付き端末の web ブラウザでも QR スキャンが可能です。
    • web ブラウザで利用する場合は、カメラ権限の許可と、HTTPS または localhost のセキュアな接続が必要です。
    運用方式処理内容向いているケース
    利用計上のみ 特典の利用だけを記録し、決済リクエストは作成しません。 店頭での無料特典、来店特典、利用済み記録のみ残したい場合
    現金やその他決済 CASH_ETC 扱いで決済リクエストを作成し、SustinaPlus 側では即時 confirmed にします。 現金払い、クレジットカード払い、他社 QR 決済などを別システムで受け、SustinaPlus 側にも取引記録を残したい場合
    SustinaPlus 決済 POL または JPYC で決済し、利用計上まで一体で処理します。 サスプラカード決済をその場で完了させたい場合
  7. 7.オンライン(外部サイトなどでのご利用)

    この方式は、外部サイトや予約サイト、会員サイトなどからシステム連携で処理する運用です。 API 連携によって OTP 本人確認、特典確認、利用計上、決済へ進みます。 決済 API の使い分け、CASH_ETC の扱い、approval_urlreturn_url の役割は、 2-5 パートナー向け決済ガイド をあわせて確認してください。

    この方式は API 連携による実装が前提 です。 店舗スタッフ向けの操作説明ではなく、外部サイト、予約サイト、会員サイトなどを開発する担当者向けの連携仕様としてお読みください。 ユーザーにサスプラカード番号を入力してもらい、登録メールアドレスに送られる OTP で本人確認を行います。 OTP 完了後は、店頭 QR と同じ encoded_data を起点に、特典確認、利用計上、決済へ進みます。 決済 API の使い分け、CASH_ETC の扱い、approval_urlreturn_url の役割は、 2-5 パートナー向け決済ガイド でまとめて確認できます。

    OTP とは

    OTP は One-Time Password の略で、このオンライン方式では 登録メールアドレスに送られる使い捨ての確認コード を指します。 ユーザーはそのコードを外部サイトに入力し、本人確認が完了すると encoded_data を取得できます。

    Base URL
    ヘッダー必須説明
    X-API-Keyパートナー API キー必須登録情報の確認ページに表示される API キーを設定します。
    Content-Typeapplication/json必須JSON で送信してください。

    実装の考え方

    1. オンライン方式では、カード番号から直接利用計上や決済を行うのではなく、最初に OTP を使って encoded_data を取得します。
    2. その後の処理は、QR を読み取ったときと同じく encoded_data を共通キーとして扱います。
    3. 実装は OTP 開始・OTP 完了 と、共通 API 群 に分けて考えると整理しやすくなります。

    実装手順

    1. 外部サイトで、ユーザーにサスプラカード番号を入力してもらいます。
    2. /partner/card_presentations/otp/start を呼び出し、登録メールアドレス宛に OTP を送信します。レスポンスでは challenge_idemail_maskedexpires_atttl_sec を受け取ります。
    3. ユーザーがメールで受け取った OTP を外部サイトに入力します。
    4. /partner/card_presentations/otp/complete を呼び出し、presentation_idencoded_data を受け取ります。
    5. /partner/verify_cardencoded_data を渡し、利用可能な特典と利用可能通貨を確認します。
    6. 金額入力型の決済を行う場合は、必要に応じて /partner/quote_charge で換算結果を確認します。
    7. 以降は、運用方式に応じて「利用計上のみ」「外部決済 + 利用計上」「SustinaPlus 決済 + 利用計上」のいずれかを選択します。
    8. POL または JPYC を利用する場合は、/partner/payment_requests のレスポンスに含まれる approval_url にユーザーを遷移させ、SustinaPlus 側の承認画面で決済を完了させます。現行実装の承認画面 URL は /partner/card?payment_id=... です。approval_required=true のときは、この遷移が必要です。
    9. return_url を指定した場合、承認画面は決済完了後にその URL へ戻ります。連携先サイト側は戻り先のクエリだけで完了扱いにせず、必ず /partner/payment_requests/<payment_id> を再照会し、payment.status=confirmed を確認してから注文確定・予約確定・メール送信などの後続処理を実行してください。

    最初に決めること

    • 連携先サイト側で必要なのが「特典の利用計上だけ」(決済なし)なのか、「決済記録も残す」のかを最初に決めてください。
    • 現金やその他決済を別で受ける場合は CASH_ETC、SustinaPlus 側の決済を使う場合は POL または JPYC を選びます。
    • POL / JPYC を使う場合は、ユーザーを approval_url へ遷移させる前提で実装してください。
    運用方式主に使う API処理内容ユーザーの操作
    利用計上のみ /partner/verify_card reward_idaction=use を付けて呼び出し、特典利用だけを記録します。決済リクエストは作成しません。 不要
    現金やその他決済 + 利用計上 /partner/payment_requests + currency=CASH_ETC PaymentRequest を作成し、SustinaPlus 側では即時 confirmed にします。決済実体は連携先サイト側で行います。 不要
    SustinaPlus 決済 + 利用計上 /partner/payment_requests + currency=POL または currency=JPYC 決済リクエストを作成し、承認画面での決済完了後に利用計上まで行います。 approval_url で承認

    エンドポイント一覧

    エンドポイントHTTP用途主な入力
    /partner/card_presentations/otp/start POST メール OTP の送信開始 card_no
    /partner/card_presentations/otp/complete POST OTP 検証と encoded_data 発行 card_no, challenge_id, otp_code
    /partner/verify_card POST 特典確認、利用計上 encoded_data, reward_id, action
    /partner/quote_charge POST 換算結果の確認 reward_id, currency, amount_text
    /partner/payment_requests POST 決済リクエスト作成 encoded_data, amount, currency, reward_id, return_url, return_state
    /partner/payment_requests/<payment_id> GET 決済状態の再照会 payment_id
    /partner/payment_requests/<payment_id>/cancel POST 未完了決済の取消 payment_id
    /partner/payment_requests/<payment_id>/submit_or_poll POST / GET 決済状態の送信・再確認 payment_id, tx_hash
    /partner/payment_requests/<payment_id>/notify_tx POST 送金済み TX の通知 payment_id, tx_hash
    /partner/payment_requests/<payment_id>/manual_confirm POST 確認結果を手動で確定 payment_id, tx_hash, note
    /partner/payment_requests/pending GET 未完了決済の一覧取得 なし

    verify_card preview の見方

    項目意味実装上の判断
    rewards[].eligible_now その時点で利用できるかどうかです。 true の特典だけを選択対象にしてください。
    enabled_currencies その照合セッションで選べる決済通貨です。 外部サイト側では、この配列に含まれる通貨だけを選択肢にしてください。
    session_state.active_payment_exists 同じ照合セッションに未完了の決済が残っている状態です。 true の場合は、新規の manual 利用計上や新規決済作成へ進めず、既存決済の完了・取消を優先してください。
    session_state.manual_redeem_available manual の利用計上へ進めるかどうかです。 false の場合は /partner/verify_card での action=use を行わないでください。
    session_state.payment_request_create_available 新しい payment_requests を作成できるかどうかです。 false の場合は既存決済の状態確認へ誘導してください。
    settlement_contract この API の運用ルールを返します。 manual_redeem_blocked_when_active_payment_exists=true を前提に実装してください。

    リクエスト / レスポンス例

    1. OTP 開始
    POST /api/v1/external/partner/card_presentations/otp/start
    X-API-Key: {API_KEY}
    Content-Type: application/json
    
    {
      "card_no": "1234-5678-9012"
    }
    {
      "success": true,
      "challenge_id": "challenge-1",
      "email_masked": "ta***@e***.com",
      "expires_at": 1760000000,
      "ttl_sec": 300,
      "card_no": "123456789012"
    }
    2. OTP 完了
    POST /api/v1/external/partner/card_presentations/otp/complete
    X-API-Key: {API_KEY}
    Content-Type: application/json
    
    {
      "card_no": "1234-5678-9012",
      "challenge_id": "challenge-1",
      "otp_code": "123456"
    }
    {
      "success": true,
      "presentation_id": "PRES_1",
      "expires_at": 1760000300,
      "ttl_sec": 300,
      "encoded_data": "encoded-otp",
      "card_no": "123456789012"
    }
    3. verify_card preview
    POST /api/v1/external/partner/verify_card
    X-API-Key: {API_KEY}
    Content-Type: application/json
    
    {
      "encoded_data": "encoded-otp"
    }
    {
      "success": true,
      "mode": "preview",
      "presentation_id": "PRES_1",
      "rewards": [
        {
          "id": 36,
          "name": "サンプル特典",
          "eligible_now": true,
          "pay_mode": "FIXED",
          "charge_amount": 1200,
          "fixed_amount": "1200"
        }
      ],
      "enabled_currencies": ["POL", "JPYC", "CASH_ETC"],
      "active_payment": null,
      "session_state": {
        "active_payment_exists": false,
        "manual_redeem_available": true,
        "payment_request_create_available": true,
        "next_action": "choose_manual_or_payment"
      },
      "settlement_contract": {
        "manual_redeem_supported": true,
        "payment_request_supported": true,
        "pay_mode_is_metadata": true,
        "manual_redeem_blocked_when_active_payment_exists": true,
        "new_session_required_after_terminal": true
      }
    }
    4. payment_requests
    POST /api/v1/external/partner/payment_requests
    X-API-Key: {API_KEY}
    Content-Type: application/json
    
    {
      "encoded_data": "encoded-otp",
      "reward_id": 36,
      "currency": "JPYC",
      "amount": "1200",
      "amount_jpy": "1200",
      "return_url": "https://partner.example.com/checkout/sustina/complete",
      "return_state": "order_12345"
    }
    {
      "success": true,
      "approval_required": true,
      "approval_url": "https://sustina-plus.jp/partner/card?payment_id=PAY_xxx",
      "return_url": "https://partner.example.com/checkout/sustina/complete",
      "return_state": "order_12345",
      "payment": {
        "payment_id": "PAY_xxx",
        "status": "requested",
        "currency": "JPYC",
        "amount": "1200",
        "amount_jpy": "1200",
        "reward_id": 36
      }
    }

    payment_requests の最小実装例

    1. card_presentations/otp/start を呼ぶ
    2. ユーザーがメールで受け取った OTP を入力する
    3. card_presentations/otp/complete を呼び、encoded_data を受け取る
    4. verify_card を呼び、reward_id と enabled_currencies を確認する
    5. payment_requests を呼ぶ
    6. approval_required=true なら approval_url に遷移させる
    7. return_url に戻ったら payment_id で再照会し、payment.status=confirmed を確認する
    8. confirmed を確認した後にだけ、外部サイト側の注文確定や予約確定を行う

    代表的なエラー

    コードよくある原因対応
    INVALID_ARGUMENT 必須項目不足、形式不正、reward_id 不正、return_url 不正など リクエスト内容を見直してください。
    CARD_NOT_FOUND カード番号が存在しません。 入力されたカード番号を確認してください。
    ACTIVE_PAYMENT_EXISTS 同じ照合セッションに未完了の決済が残っています。 新規起票せず、既存決済の完了または取消を優先してください。
    PAY_TO_ADDRESS_NOT_CONFIGURED パートナーの受取先ウォレットアドレスが未設定です。 パートナーコンソールの登録情報から受取先ウォレットアドレスを設定してください。
    RETURN_URL_NOT_ALLOWED return_url のホストが登録済み Web サイト URL と一致していません。 登録情報の Web サイト URL と同じホストを使用してください。

    実装上の注意

    • CASH_ETC は「決済をスキップする近道」ではありません。PaymentRequest を作成し、SustinaPlus 側では即時 confirmed にする方式です。
    • 同一セッションで active な決済リクエストがある場合、そのセッションでは manual の利用計上へ切り替えられません。
    • return_urlhttps の絶対 URL で、登録済みパートナーサイトのホストと一致している必要があります。
    • サスプラカード決済で利用できる通貨は現行実装では POLJPYCCASH_ETC です。WETH はパートナー決済 API では利用できません。

    実装チェックリスト

    1. パートナー API キーを X-API-Key に設定している
    2. OTP 開始と OTP 完了を別段階として実装している
    3. verify_card の preview 結果を見て、対象特典と通貨を決めている
    4. approval_required=true の場合に、ユーザーを approval_url へ遷移させている
    5. return_url 復帰後に、必ず /partner/payment_requests/<payment_id> を再照会している
    6. payment.status=confirmed を確認した後にだけ、連携先サイト側の確定処理を行っている
    {
      "encoded_data": "...",
      "reward_id": 36,
      "currency": "JPYC",
      "amount": "1200",
      "amount_jpy": "1200",
      "return_url": "https://partner.example.com/checkout/sustina/complete",
      "return_state": "order_12345"
    }
2-5 パートナー向け決済ガイド

このセクションでは、公式パートナー向けの決済機能について説明します。 この機能は、特典利用と決済を同じ流れで扱うための仕組みです。 決済だけを独立して行うための機能ではなく、特典の利用計上とあわせて利用します。

  1. 1.この決済機能でできること

    パートナー決済機能を使うと、特典利用の確認、利用計上、決済記録、ユーザー承認を、 同じ照合セッションの中で管理できます。 店頭 QR 方式でも、オンライン API 方式でも、決済処理の考え方は共通です。

    項目内容
    入口店頭では QR スキャン、オンラインでは OTP 完了後の encoded_data
    共通キーencoded_data をもとに照合し、以後の利用計上と決済へ進みます。
    対応通貨現行実装では POLJPYCCASH_ETC
    利用計上無料特典は利用計上だけ、有料特典は決済完了後に利用計上まで完了します。
  2. 2.最初に決めること

    パートナー側で最初に決めるべきことは、SustinaPlus に何を記録したいかです。 選択肢は大きく分けて 3 つです。

    やりたいこと選ぶ方式主に使う API補足
    特典の利用だけ記録したい 利用計上のみ /partner/verify_card 無料特典、来店特典、利用実績だけ残したい場合に使います。
    現金やその他決済を別で受け、SustinaPlus にも取引記録を残したい CASH_ETC /partner/payment_requests 現金、クレジットカード、他社 QR 決済、既存の外部決済などが該当します。
    SustinaPlus 側で決済から利用計上まで完了したい POL または JPYC /partner/payment_requests ユーザーを approval_url に遷移させ、承認後に完了します。
  3. 3.CASH_ETC の意味

    CASH_ETC は、現金やその他決済の場合に使う区分です。 ここでいう「その他決済」には、クレジットカード、他社 QR 決済、既存の外部決済代行などが含まれます。

    重要なのは、CASH_ETC は「何もしない近道」ではないことです。 SustinaPlus 側では PaymentRequest を作成し、決済種別を CASH_ETC として保存し、 その場で confirmed に進めます。 決済実体そのものは、パートナー側の会計・決済システムで行います。

    向いている場面

    • 店頭では現金またはカードで支払いを受け、SustinaPlus 側には利用履歴と決済記録だけ残したい場合
    • 既存の外部決済をそのまま使い、SustinaPlus 側には特典利用と取引記録だけ連携したい場合
  4. 4.POL / JPYC 決済の流れ

    POL または JPYC を使う場合は、ユーザー承認が必要です。 そのため、パートナー側で決済リクエストを作成したあと、ユーザーを SustinaPlus の承認画面へ遷移させます。

    1. /partner/payment_requests を呼び出します。
    2. レスポンスで payment_idapproval_required=trueapproval_url を受け取ります。
    3. パートナー側でユーザーを approval_url へ遷移させます。
    4. ユーザーは SustinaPlus の承認画面で、ウォレット承認または署名を行います。
    5. 決済完了後、return_url を指定していれば、その URL へ戻ります。
    6. 戻り先では、クエリ文字列だけで完了扱いにせず、必ず /partner/payment_requests/<payment_id> を再照会し、payment.status=confirmed を確認してください。
  5. 5.店頭 QR とオンライン API の違い
    項目店頭 QRオンライン(外部サイトなど)
    入口スタッフが専用アプリで QR を読み取るカード番号入力後、メール OTP を使って encoded_data を取得する
    開始方法専用アプリの「パートナー QRスキャン」/partner/card_presentations/otp/start/partner/card_presentations/otp/complete
    後続処理encoded_data を使って /partner/verify_card または /partner/payment_requests を呼び出します。
    決済の考え方無料特典は利用計上のみ、有料特典は CASH_ETC または POL / JPYC を選びます。
  6. 6.主な決済 API
    エンドポイント用途通常運用で使うか
    /partner/payment_requests決済リクエスト作成使います
    /partner/payment_requests/<payment_id>決済状態の確認使います
    /partner/payment_requests/<payment_id>/cancel未完了決済の取消必要時のみ
    /partner/payment_requests/<payment_id>/submit_or_poll送信・状態確認通常は承認画面側が処理します

    補助 API について

    • /partner/payment_requests/<payment_id>/notify_tx は、待機画面を離れたなどの理由で送金通知を取り逃したときの補助手段です。
    • /partner/payment_requests/<payment_id>/manual_confirm は、入金自体は確認できているのに RPC 不調などで receipt 観測が止まった場合の最終手段です。
    • これらは通常の導入・通常の運用では使わない前提です。まずは /payment_requests/payment_requests/<payment_id>approval_urlreturn_url の通常フローを実装してください。
  7. 7.実装時の注意
    1. return_urlhttps の絶対 URL で、登録済みパートナーサイトのホストと一致している必要があります。
    2. return_url に戻ってきても、そのクエリだけで注文完了とせず、必ず payment_id で再照会してください。
    3. 同じ照合セッションで未完了の決済がある場合は、manual の利用計上に切り替えられません。
    4. 現行実装で利用できる通貨は POLJPYCCASH_ETC です。WETH はパートナー決済 API では利用できません。
3.外部アプリ提供者向けガイド

このセクションでは、外部アプリや外部Webサービスから SustinaPlus SNS の投稿画面を下書き付きで開く実装手順を説明しています。

  1. 1. 実装手順
    Method
    URL
    1. 共有対象の titletexturlimagesource から必要な値だけを用意します。
    2. それらを URL エンコードして /share/compose のクエリに付けます。
    3. 生成した URL をブラウザで開きます。
    4. SustinaPlus SNS の投稿画面が開いたら、ユーザーが内容を確認して投稿します。

    最低限は title または text または url のどれか 1 つがあれば動作します。

  2. 2. クエリパラメータ
    キー最大長説明
    title120投稿タイトルに入ります。
    text3000本文として下書きに入ります。
    url2000元記事や元投稿の URL です。本文末尾にリンクとして入ります。
    image2000共有画像の URL です。本文に画像として入ります。
    source80共有元アプリ名です。例: X, Yahoo!ニュース

    互換キーとして subject / body / content / source_url / link / image_url / thumbnail / source_app も受け付けます。

    クエリは UTF-8 で URL エンコードしてください。urlimagehttp / https のみ受け付けます。

  3. 3. 実装例
    https://sustina-plus.jp/share/compose?title=%E6%B3%A8%E7%9B%AE%E8%A8%98%E4%BA%8B&text=%E6%9C%AC%E6%96%87%E3%82%92%E5%85%B1%E6%9C%89&url=https%3A%2F%2Fexample.com%2Fpost%2F123&image=https%3A%2F%2Fexample.com%2Fcover.jpg&source=X
    const params = new URLSearchParams({
      title: '注目記事',
      text: '本文を共有',
      url: 'https://example.com/post/123',
      image: 'https://example.com/cover.jpg',
      source: 'X',
    });
    
    window.open(`https://sustina-plus.jp/share/compose?${params.toString()}`, '_blank', 'noopener');
    <a
      href="https://sustina-plus.jp/share/compose?title=%E6%B3%A8%E7%9B%AE%E8%A8%98%E4%BA%8B&text=%E6%9C%AC%E6%96%87%E3%82%92%E5%85%B1%E6%9C%89&url=https%3A%2F%2Fexample.com%2Fpost%2F123&image=https%3A%2F%2Fexample.com%2Fcover.jpg&source=X"
      target="_blank"
      rel="noopener noreferrer"
    >
      SustinaPlusにシェア
    </a>
  4. 4. 動作
    状態挙動
    ログイン済み303 で SustinaPlus SNS の投稿画面へ遷移します。
    未ログイン302 でログイン画面へ遷移し、ログイン後に同じ下書きを復元します。
    有効な入力が 1 つも無い400{"ok": false, "error": "share payload is empty"} を返します。

    image は本文に画像として入ります。現在の仕様では画像自体にリンクは付きません。