テーマ仕様書
shop
マイページ
クレカ
編集

クレジットカード情報の編集画面

会員のクレジットカード情報を変更する画面です。
カード番号は仕様上、都度入力する必要があります。

「ショップ管理 > 各種設定 > マイページ設定 (opens in a new tab)」で「クレジットカード変更」を許可する設定が必要です。
クレジット決済代行会社が ZEUS 、Paygent の場合、決済代行会社の仕様上カード情報の編集(変更)ができません。

動作確認時の注意

セキュリティの関係で、クレジットカード登録・編集に関しては以下の制限を設けております。

  • 購入歴がない顧客(会員)のクレジットカード操作は、デフォルト設定ではできません。(設定変更で対応可能)
  • 単位時間内での複数回のクレジットカード操作(詳細条件はセキュリティの関係で非公開です)

クレジットカード登録・編集動作の確認時は上記にご留意ください。
また、クレジットカード登録・編集時は決済代行会社のシステムとの疎通が必須となります。
決済代行会社のアカウント発行・審査・システム準備が完了した後、あらかじめ「設定 > 外部連携アカウント管理 (opens in a new tab)」で必要な設定をおこなってください。

ショップのパス

ドメイン/shop/customer/cards/カードID/edit

テーマ管理のファイルパス

ec_force/shop/customer/cards/edit.html.liquid
ec_force/shop/customer/cards/edit.html+smartphone.liquid

JS タグ

{{ 'shop/customer/cards' | javascript_include_tag }}

必要なコンポーネント

※任意とあるもの以外はシステム上必要なコンポーネントとなりますので、必ず使用するようにしてください。

{{ 'shop/customer/cards' | javascript_include_tag }}
 
<!-- クレジットカード情報編集画面コンテナ -->
<div id="customers-card-edit-view">
  <div id="TokenJs"></div>
 
  <!-- フラッシュメッセージ -->
  {{ 'notice' | flash: 'alert alert-success', 'text' }}
  {{ 'alert' | flash: 'alert alert-danger', 'text' }}
  {{ 'error' | flash: 'alert alert-danger', 'text' }}
 
  <!-- カード番号[下4桁表示](月/年)(任意) -->
  {{ card.display_number }}
 
  <!-- カード番号[下4桁表示](任意) -->
  {{ card.last_digits }}
 
  <!-- 有効期限(月)(任意) -->
  {{ card.month }}
 
  <!-- 有効期限(年)(任意) -->
  {{ card.year }}
 
  <!-- カード名義(任意) -->
  {{ card.name }}
 
  <!-- クレジットカード編集フォーム -->
  <form action="/shop/customer/cards/{{ card.id }}" id="edit-card" method="post">
    <div id="card-error-message"></div>
    <input name="_method" type="hidden" value="put">
 
    <!-- クレジットカード情報編集可能の場合 -->
    {% unless card.read_only? %}
      <input id="access-token" name="card[access_token]" type="hidden" value="">
      <input id="check-access-token" type="hidden" value="" class="validate[ajax[creditcardCheckMyPage]]" data-prompt-position="inline" data-prompt-target="card-error-message">
 
      <!-- カード番号 -->
      <label for="number">カード番号</label>
      {% if "EcForce::Gateway::Yamato, EcForce::Gateway::Paygent" contains payment_gateway_class %}
        <input id="number" value="xxxx-xxxx-xxxx-{{ card.last_digits }}" disabled>
      {% else %}
        <input class="validate[required,custom[integer],maxSize[16]]" id="number" name="card[number]">
      {% endif %}
 
      <!-- カード有効期限 -->
      <label for="month">カード有効期限</label>
      <select class="validate[required]" id="month" name="card[month]">
        <option value="">--</option>
        {% for m in (1..12) %}
          <option value='{{ m }}'{% if card.month == m %}selected{% endif %}>{{ m }}</option>
        {% endfor %}
      </select>

      <select class="validate[required]" id="year" name="card[year]">
        <option value="">--</option>
        {% assign now_year = "now" | date: "%Y" | minus: 2000 %}
        {% assign later_15_years = "now" | date: "%Y" | plus: 15 | minus: 2000 %}
        {% for y in (now_year..later_15_years) %}
          <option value='{{ y }}'{% if card.year == y %}selected{% endif %}>{{ y }}</option>
        {% endfor %}
      </select>

 
      <!-- カード名義 -->
      <label for="name">カード名義</label>
      <input class="validate[required,custom[onlyLetterSp]]" id="name" name="card[name]" value="{{ card.name }}">
 
      <!-- セキュリティコード -->
      <div id="view-input-card-cvv" style="display: none;">
        <label for="name">セキュリティコード</label>
        <input class="validate[required]" id="cvv" name="cvv">
      </div>
    {% endunless %}
 
    <!-- デフォルト -->
    <label for="default">デフォルト</label>
    {% if card.default %}
      <input type='checkbox' checked disabled>
      <input type="hidden" name='card[default]' id='default' value="1">
    {% else %}
      <input type="hidden" name='card[default]' value="0">
      <input type='checkbox' name="card[default]" id="default">
    {% endif %}
 
    <!-- 戻るリンク -->
    <a href="/shop/customer/cards">戻る</a>
 
    <!-- 送信リンク -->
    <input id='submit' type="submit" value="カード情報を保存">
 
  </form>
 
</div>

画面イメージ

※こちらは、上記で紹介しているコンポーネントのコードにデフォルトデザインをCSSであてたイメージになります。コンポーネントのコードのみだと、このような表示にはなりませんのでご注意ください。