基本操作・設定

基本操作・設定

【プロプラン以上】フロントで使える契約更新APIについて

  • プロプラン以上をご契約頂いている場合、契約更新のためのAPIを利用可能です。
  • 契約更新APIをご利用いただくと、Shopifyストア内からログイン中の顧客の契約を取得し、該当の契約のステータスを変更することができます(解約や、一時停止、再開など)

実装コード

実装をするためには、sengineinitというwindowイベントのリスナーを噛ませたうえで、そこから契約一覧を取得してください。取得した契約一覧の「id」という項目を使い、契約の一時停止・再度有効・終了(キャンセル)をすることができます。

<script>
window.addEventListener('sengineinit', () => {
  // 契約一覧取得
  window.subscriptionApi.getContracts().then((data) => {
    console.log('getContracts');
    console.log(data);
  }).catch((error) => {
    console.error(error);
  });

  // 契約を一時停止
  // window.subscriptionApi.updateContractStatus(contractId, 'PAUSED').then((data) => {
  //   console.log('updateContractStatus');
  //   console.log(data);
  // }).catch((error) => {
  //   console.error(error);
  // });

  // 契約を有効化
  // window.subscriptionApi.updateContractStatus(contractId, 'ACTIVE').then((data) => {
  //   console.log('updateContractStatus');
  //   console.log(data);
  // }).catch((error) => {
  //   console.error(error);
  // });

  // 契約を終了 (キャンセル)
  // window.subscriptionApi.updateContractStatus(contractId, 'CANCELLED').then((data) => {
  //   console.log('updateContractStatus');
  //   console.log(data);
  // }).catch((error) => {
  //   console.error(error);
  // });
});
</script>

契約データ

以下が契約データのオブジェクトのサンプル、となります。サンプルデータの後に、具体的なサンプルデータの説明を記載します。

{
  "id":48,
  "status":"ACTIVE",
  "term":"DAY",
  "interval":1,
  "shopify_customer_id":"gid:\/\/shopify\/Customer\/6613147091171",
  "shopify_contract_id":"gid:\/\/shopify\/SubscriptionContract\/28307194083",
  "next_billing_date":"2024-06-26 01:37:24Z",
  "customer_name":"test tar7",
  "delivery_price_amount":1000,
  "delivery_price_currency":"JPY",
  "next_billing_time":1719365844,
  "contract_base_date":"2024-06-25T01:22:49Z",
  "payment_count":1,
  "cancelled_at":null,
  "line_discounted_price_amount":2000,
  "current_price_amount":2000,
  "quantity":1,
  "current_price_currency":"JPY",
  "data":{
    "id":"gid:\/\/shopify\/SubscriptionContract\/28307194083",
    "createdAt":"2024-06-25T01:22:49Z",
    "updatedAt":"2024-06-25T01:30:08Z",
    "status":"ACTIVE",
    "nextBillingDate":"2024-06-26T01:00:00Z",
    "billingPolicy":{
      "interval":"DAY",
      "intervalCount":1,
      "maxCycles":null,
      "minCycles":null,
      "anchors":[
        
      ]
    },
    "customer":{
      "id":"gid:\/\/shopify\/Customer\/6613147091171",
      "firstName":"tar7",
      "lastName":"test",
      "displayName":"tar7 test",
      "email":"shota.w@gmail.com",
      "createdAt":"2023-02-08T06:13:02Z",
      "image":{
        "altText":null,
        "originalSrc":"https:\/\/cdn.shopify.com\/proxy\/f918f665cf2d2ce6f265de412d6016182fa68c790abf9931ade81392a89f6e24\/www.gravatar.com\/avatar\/a8aa06ed94ba5f4035520a19fb9e9614.jpg?s=2048&d=https%3A%2F%2Fcdn.shopify.com%2Fshopifycloud%2Fshopify%2Fassets%2Fadmin%2Fcustomers%2Fpolaris%2Favatar-2-a0ee6e3fb3ae515b66b68388b265e5bd1e90646c4c72d59170518f45351e668b.png"
      },
      "defaultAddress":{
        "address1":"\u5c0f\u77f3\u5ddd",
        "address2":"",
        "city":"\u6587\u4eac\u533a",
        "country":"Japan",
        "zip":"112-0002",
        "name":"tar7 test",
        "phone":null,
        "company":"",
        "province":"T\u014dky\u014d",
        "provinceCode":"JP-13"
      }
    },
    "billingAttempts":[
      
    ],
    "orders":{
      "edges":[
        {
          "node":{
            "id":"gid:\/\/shopify\/Order\/5819332919523",
            "email":"shota.w@gmail.com",
            "name":"#1143",
            "test":true,
            "createdAt":"2024-06-25T01:22:48Z",
            "confirmed":true,
            "currencyCode":"JPY",
            "currentTotalPriceSet":{
              "presentmentMoney":{
                "amount":"3000.0",
                "currencyCode":"JPY"
              }
            },
            "displayFinancialStatus":"PAID",
            "displayFulfillmentStatus":"UNFULFILLED"
          }
        }
      ]
    },
    "lines":{
      "edges":[
        {
          "node":{
            "title":"muge4",
            "sellingPlanName":"\uff11\u30f6\u6708\u306b\uff11\u56de",
            "sellingPlanId":"gid:\/\/shopify\/SellingPlan\/4213440739",
            "currentPrice":{
              "amount":"2000.0",
              "currencyCode":"JPY"
            },
            "lineDiscountedPrice":{
              "amount":"2000.0",
              "currencyCode":"JPY"
            },
            "pricingPolicy":{
              "cycleDiscounts":[
                {
                  "afterCycle":0,
                  "computedPrice":{
                    "amount":"2000.0",
                    "currencyCode":"JPY"
                  }
                }
              ]
            },
            "requiresShipping":true,
            "quantity":1,
            "variantTitle":null,
            "id":"gid:\/\/shopify\/SubscriptionLine\/37fb3b54-fb6b-4583-adf6-d6ea361d5e61",
            "productId":"gid:\/\/shopify\/Product\/7960950931683",
            "variantId":"gid:\/\/shopify\/ProductVariant\/43557323243747",
            "variantImage":{
              "originalSrc":"https:\/\/cdn.shopify.com\/s\/files\/1\/0636\/7592\/4707\/products\/ScreenShot2022-12-15at15.32.53.png?v=1671086315"
            }
          }
        }
      ]
    }
  }
}
キー説明備考
id契約ID全システムの連番契約IDです。以後の関数ではこのidを使ってください。
status
data.status
契約ステータス現状の契約ステータスです。
ACTIVE: 有効
CANCELLED: キャンセル済
EXPIRED: 期限切れ(利用されません)
FAILED: 支払い失敗済
PAUSED: 一時停止中
COMPLETED: 最大回数満了
termサブスクの間隔の単位DAY: 日
WEEK: 週
MONTH: 月
YEAR: 年
intervalサブスクの間隔の数字interval=1でterm=MONTHの場合、毎月
interval=2でterm=MONTHの場合、2ヶ月に1回
shopify_customer_idShopify顧客ID
shopify_contract_id
data.id
Shopify契約ID
next_bililng_date
next_billing_time
次の支払い日時
次の支払い日時のunixtime
※data.nextBillingDateもほぼ同じですが、こちらの値を使うようにしてください。
customer_name顧客の名前
delivery_price_amount
delivery_price_currency
配送金額
配送通貨
配送費を金額と、通貨で記載します
(例: amount=1000, currency=JPYの場合、配送料は1000円)
contract_base_date契約日(契約基準日)このサブスク契約が開始した日付。更新の際の基準となる
payment_count支払数このサブスク契約で行われた支払いの回数です(初回契約時に1、その後更新するたびに1ずつ増える)
cancelled_atキャンセル日時
line_discounted_price_amountディスカウント後の金額小計
current_price_amount金額小計
quantity数量
current_price_currency金額の通貨
data.createdAt / data.updatedAtShopify上での契約作成日時・更新日時
data.nextBillingDateShopify上での次の支払い日時
data.billingPolicy支払い間隔データ※Shopifyの支払い間隔データは契約プラン変更時には変わらないため、このデータは使わず、term / intervalを使ってください
data.customer顧客データ※Shopifyの顧客データのうち、必要なものを抽出したものとなります。適宜お使いください。
data.billingAttempts直近の成功した支払※初回支払を除いた、成功した継続課金の履歴が出ます。件数は成功・失敗などが混在しているため数件程度となります。
data.orders直近で作成された注文※初回支払を含めた、作成された注文のリストです
data.linesサブスクリプション内容行同一のサブスクリプション契約内の商品の行一覧です。これらを使う場合、この内容が複数あることを前提としてUIを組んでください。