integrations.sh
← all integrations

カラーミーショップアプリストア API

OpenAPI apis-guru ecommerce

カラーミーショップアプリストア API

にて公開するアプリに対して、一般公開しているに加えて、カラーミーショップアプリストアAPI(以下、アプリストアAPIといいます)を利用することが出来ます。アプリストアAPIでは以下のことが行えます。

  • 課金データ(アプリ内課金、従量課金)の作成
  • インラインスクリプトタグの取得・作成・更新・削除
  • スクリプトタグの取得・作成・更新・削除

利用手順

アプリストアAPIを利用するには、OAuth認証が必要です。OAuth認証の基本的な流れについてはを参照してください。 アプリストアAPIの利用のために、以下のscopeが追加で指定可能になります。に掲載されているscopeと合わせてご利用ください。

スコープ機能
write_application_charge課金データの作成
read_shop_script_tagsショップページのスクリプトタグを参照
write_shop_script_tagsショップページへスクリプトタグを追加・更新
read_inline_script_tagsインラインスクリプトタグを参照
write_inline_script_tagsインラインスクリプトタグを追加・更新
read_script_tagsスクリプトタグを参照(deprecated)
write_script_tagsスクリプトタグを追加・更新(deprecated)

(例) カラーミーショップアカウントの認証ページを表示

https://api.shop-pro.jp/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&response_type=code&scope=read_products%20write_products%20write_application_charge

課金設定

料金プラン(月額課金・従量課金・買い切り)による課金や、アプリ内課金をご利用いただくにはアプリごとに課金設定の登録が必要です。 この設定は から行うことができます。

登録できる課金形式やその使い方の詳細についてはをご覧ください

アプリのインストール

ショップオーナーがアプリをインストールしたとき、以下の処理をカラーミーショップが行います。

  • 選択された料金プランに基づき課金開始
  • インストールフックの呼び出し

インストールフック

アプリのインストール時に、インストールに関する情報を POST メソッド、 application/json 形式で通知します。 通知先のURLはにログインし、各アプリストア アプリのアプリ設定から登録を行ってください。

以下のパラメータが送信されます。課金請求に必要なパラメータを含みますので、必ず受け取れるようにしてください。

パラメータ機能形式
account_idインストールしたショップオーナーのアカウントIDPA+8桁の整数
application_charge_source_idプラン課金ID数字と大文字アルファベットで構成される文字列(6桁以上)
recurring_application_charge_id(買い切り以外の課金の場合)課金契約ID数字と大文字アルファベットで構成される文字列(6桁以上)
application_charge_id(買い切りの場合)課金契約ID数字と大文字アルファベットで構成される文字列(6桁以上)
trial_term(無料お試し期間がある場合)無料お試し期間JSONオブジェクト
mailショップオーナーへの連絡メールアドレス文字列

application_charge_source_id はデベロッパーサイトで設定したプラン課金のIDです。インストールされた料金プランの判別にご利用いただけます。

recurring_application_charge_idapplication_charge_id はインストールごとに発行されるユニークなIDです。ショップオーナーが一度アンインストールした後に、再度同じショップオーナーがアプリのインストールを行った際には新たに別のIDが発行されます。

recurring_application_charge_id は「買い切り」以外の課金である「無料」「月額」「月額+従量」「月額+初期費用」「従量のみ」のプラン課金のインストールの際に発行されます。

従量による課金を伴うプラン課金の場合は、従量分の料金を請求する際に 課金契約ID(recurring_application_charge_id) が必要になるので、必ず記録するようにしてください。

mail パラメータの値はショップオーナーへの連絡手段としてご利用いただけます。インストール後に認可フローが中断され、アクセストークンが得られない際のショップオーナーへの連絡手段としてご活用いただけます。このパラメータはカラーミーショップの非公開情報として登録されている値です。左記以外の用途でこの値をアプリの機能で使用しないでください。

例) 買い切りの場合

{  "account_id": "PA00000001",  "application_charge_source_id": "F3RN9A",  "application_charge_id": "A3FT4N",  "mail": "shop@example.com"}

例) 月額課金の場合

{  "account_id": "PA00000001",  "application_charge_source_id": "F3RN9A",  "recurring_application_charge_id": "A3FT4N",  "mail": "shop@example.com"}

無料お試し期間を設定した課金の場合、以下の情報を trial_term パラメータとして送信します。 無料お試し期間中は従量課金APIを呼び出して課金請求することはできません。

パラメータ機能形式
starts_at無料お試し開始日時整数値(UNIXタイムスタンプ)
ends_at無料お試し終了日時整数値(UNIXタイムスタンプ)

例) 無料お試し期間がある月額課金の場合

{  "account_id": "PA00000001",  "application_charge_source_id": "F3RN9A",  "recurring_application_charge_id": "A3FT4N",  "mail": "shop@example.com",  "trial_term" {    "starts_at": 1565017200,    "ends_at": 1567609200  }}

受け取りに成功した場合は、以下のパラメータを application/json 形式でレスポンスボディに付与し、 ステータスコード 200 レスポンスをカラーミーショップへ返却してください。 ステータスコード 200 レスポンスをカラーミーショップが受け取れない場合、もしくは以下のパラメーターが返却されなかった場合、インストールを中止し、インストールによって発生した情報は破棄されます。

パラメータ機能形式
redirect_urlインストール成功後に遷移するURL文字列(URL)

例)

{  "redirect_url": "https://example.com"}

インストール完了後、インストールフックのレスポンスパラメータの redirect_url へ画面遷移しますので、APIを利用する場合は redirect_url より先の画面でOAuth認証の実装をお願いします。

アプリのアンインストール

ショップオーナーがアプリをアンインストールしたとき、以下の処理をカラーミーショップが行います。

  • OAuth認証のアクセストークンの無効化
  • 登録したインラインスクリプトタグ・スクリプトタグの削除
  • 月額課金形式の場合、継続課金の無効化

アンインストールフック

アンインストール直後に POST メソッドで、以下の情報を application/json 形式で通知します。 通知先のURLはにログインし、各アプリストア アプリのアプリ設定から登録を行ってください。

のご利用によるアンインストール時はアンインストールフックは通知されません。

受け取りに成功した場合はステータスコード 200 のレスポンスを返却してください。

パラメータ機能形式
account_idアンインストールしたショップオーナーのアカウントIDPA+8桁の整数
application_charge_source_idプラン課金ID数字と大文字アルファベットで構成される文字列(6桁以上)
uninstalled_atアンインストール日時整数値(UNIXタイムスタンプ)
reasonアンインストール理由by_shop_owner (ショップオーナーによる)
by_unpaid (未払いによる)
recurring_application_charge_id(買い切り以外の課金の場合)課金契約ID数字と大文字アルファベットで構成される文字列(6桁以上)
usage_charge(従量課金の場合)従量課金アンインストール情報JSONオブジェクト

アンインストールフックの通知が伴うアンインストールは以下の操作のいずれかによって行われます。アンインストールの理由を reason パラメータで確認できます。

reasonパラメータの値アンインストール理由
by_shop_ownerショップオーナーによるアンインストール操作
by_unpaidポイント不足による利用料徴収の失敗による自動アンインストール

課金契約ID recurring_application_charge_id はインストールフックで通知したIDと同じIDが通知されます。

料金プランが従量課金の場合、アンインストール後に従量課金データの作成を可能にするために、以下の情報を usage_charge パラメータとして送信します。 アンインストール後はOAuthのアクセストークンが無効化されているため、アクセストークンを利用して従量課金APIを呼び出すことができなくなります。 アンインストール後はアクセストークンの代わりに api_token をリクエストヘッダーに含め、従量課金APIを呼び出してください。 無料お試し期間中にアプリがアンインストールされた場合は、api_token は発行されません。 詳しくは、を参照してください。 api_token を利用した従量課金APIの呼び出しは、ポイント締め日 closing_on までとなっておりますので、ご注意ください。

パラメータ機能形式
api_tokenアンインストール後に従量課金APIを利用いただくために必要な情報文字列
closing_onポイント締め日整数値(UNIXタイムスタンプ)

通常、 closing_on は、アンインストール直前まで利用されていた契約の期間の月末となります。以下に例を示します。

アンインストール日直前まで利用されていた契約の期間closing_on の示す日時
2021/01/092021/12/10〜2021/01/092021/01/31
2021/01/102021/01/10〜2021/02/092021/02/28

従量課金の場合のユーザーの契約期間についてはをご参照ください

アンインストールフックの例を以下に示します。

例) 買い切りの場合

{  "account_id": "PA00000001",  "application_charge_source_id": "Q21GPC",  "uninstalled_at": 1552022739,  "reason": "by_shop_owner"}

例) 月額課金の場合

{  "account_id": "PA00000001",  "application_charge_source_id": "EW3V21",  "recurring_application_charge_id": "F3RN9A",  "uninstalled_at": 1552022740,  "reason": "by_shop_owner"}

例) 従量課金を含む月額課金の場合

{  "account_id": "PA00000001",  "application_charge_source_id": "WA37CA",  "recurring_application_charge_id": "F3WQ1S",  "uninstalled_at": 1552022740,  "reason": "by_shop_owner",  "usage_charge": {    "api_token": "token",    "closing_on": 1552533465  }}

アンインストールフックのリトライ

ステータスコード 200 のレスポンスをカラーミーショップが受け取れない場合は、ステータスコード 200 をカラーミーショップが受け取るまで、以下の条件で再度アンインストール情報を送信します。 なお、カラーミーショップによるアンインストール処理は、アンインストールフックの送信結果の成否によらず、アンインストールが実行されたときに完了します。

  • 2時間30分ごとにアンインストールフックの仕様に基づき再送します
  • 最大で合計19回再送します
  • すべての再送の試行でステータスコード 200 をカラーミーショップが受け取れない場合は、公認デベロッパー申請時に登録されたメールアドレス宛にメールを送信します

インストール・アンインストールフックの署名検証

X-Appstore-Signature リクエストヘッダーに含まれる署名を検証して、リクエストがカラーミーショップから送信されたことを確認することを推奨します。

検証の手順は以下のとおりです。

  1. カラーミーショップが発行した webhook_secret を秘密鍵として、HMAC-SHA256アルゴリズムを使用してリクエストボディのダイジェスト値を取得します。
  2. ダイジェスト値をBase64エンコードした値とリクエストヘッダーに付与された署名( X-Appstore-Signature の値)が一致することを確認します。

サンプルコード(ruby)

ruby
WEBHOOK_SECRET = 'my_webhook_secret'
payload_body = request.body.readsignature = Base64.strict_encode64(OpenSSL::HMAC.digest('sha256', WEBHOOK_SECRET, payload_body))ActiveSupport::SecurityUtils.secure_compare(signature, request.env['HTTP_X_APPSTORE_SIGNATURE'])

発信元IPアドレスについて

発信元IPアドレスは固定ではありません。そのためIPアドレスが固定されていることを前提としてアプリケーションを開発しないでください。

インストールフックおよびアンインストールフックのリクエストの発信元を検証する場合は上記の署名検証を行なってください。

Homepage
https://api.apis.guru/v2/specs/shop-pro.jp/1.0.0.json
Provider
shop-pro.jp
OpenAPI version
3.0.0
Spec (JSON)
https://api.apis.guru/v2/specs/shop-pro.jp/1.0.0/openapi.json
Spec (YAML)
https://api.apis.guru/v2/specs/shop-pro.jp/1.0.0/openapi.yaml

Tools (20)

Extracted live via the executor SDK.

  • applicationCharge.createUsageCharge

    アプリ内で基本機能が利用された頻度に伴って毎月の請求が変動するようなアプリの場合は「従量課金」を使って利用者に変動分の請求を行うことができます。 ※無料お試し期間中のショップに対しては従量課金データを作成できません。

  • applicationCharge.postApplicationCharge

    「アプリ内課金」はすでにインストール済みのアプリ上において、利用者が追加の買い切りによる課金によって新たなアプリ内の機能を提供される場合などに、利用者へ買い切りの課金分の請求を行うための課金形式です。

    この課金はプラン課金の情報に紐付かないため、リクエストされたタイミングで課金データが作成されます。また、同一のアプリ内課金IDで同じ利用者へ複数回請求を行うことも可能です。

    ただし、アプリの基本機能として提供しているサービスを利用した量やその頻度などに伴って毎月異なった額の請求を行うような課金については、プラン課金の「従量による課金」の機能を使って請求を行う必要があります。

  • inlineScript.createInlineScriptTag
  • inlineScript.deleteInlineScriptTag
  • inlineScript.getInlineScriptTag
  • inlineScript.getInlineScriptTags
  • inlineScript.updateInlineScriptTag
  • script.createShopScriptTag
  • script.deleteScriptTag
  • script.getShopScriptTag
  • script.getShopScriptTags
  • script.updateShopScriptTag
  • scriptDeprecated.createScriptTag
  • scriptDeprecated.deleteV1ScriptTagsScriptTagIdJson
  • scriptDeprecated.getScriptTag
  • scriptDeprecated.getScriptTags
  • scriptDeprecated.updateScriptTag
  • uninstallation.deleteInstallation

    このAPIは OAuth のアクセストークンに紐付くアプリケーションをショップから削除します。 このAPIを利用した場合、ショップオーナーがアンインストールした場合と異なり、アンインストールフックは実行されません。 代わりにアンインストールフックで通知される情報は、このAPIのレスポンスに含まれています。

    アンインストール時の注意点については、を参照して下さい。

  • openapi.previewSpec

    Preview an OpenAPI document before adding it as a source

  • openapi.addSource

    Add an OpenAPI source and register its operations as tools