app/Plugin/UnivaPay/Resource/template/shopping_confirm.twig line 1

Open in your IDE?
  1. {% set isSubscription = Order.Payment.getMethodClass == 'Plugin\\UnivaPay\\Service\\Method\\Subscription' %}
  2. {% if Order.Payment.getMethodClass == 'Plugin\\UnivaPay\\Service\\Method\\CreditCard' or isSubscription %}
  3.     {% set config = repository('Plugin\\UnivaPay\\Entity\\Config').findOneById(1) %}
  4.     {% set subscriptionTotal = 0 %}
  5.     {% set subscriptionPeriod = 4 %}
  6.     {% for item in Order.OrderItems %}{% if item.ProductClass %}
  7.         {% if item.ProductClass.SubscriptionPeriod %}
  8.             {% set subscriptionPeriod = item.ProductClass.SubscriptionPeriod.id %}
  9.         {% endif %}
  10.         {% set subscriptionTotal = subscriptionTotal + (item.ProductClass.price01_inc_tax*item.quantity) %}
  11.     {% endif %}{% endfor %}
  12.     {% set subscriptionTotal = subscriptionTotal == 0 ? Order.payment_total : Order.delivery_fee_total + subscriptionTotal %}
  13.     {{ form_widget(form.univa_pay_charge_id) }}
  14.     <script src="{{ config.getWidgetUrl() }}/client/checkout.js"></script>
  15.     <script>
  16.         form = document.querySelector("#shopping-form");
  17.         chargeId = document.querySelector("#shopping_order_univa_pay_charge_id");
  18.         form.appendChild(chargeId);
  19.         isSuccess = false;
  20.         checkout = UnivapayCheckout.create({
  21.             appId: "{{ config.getAppId() }}",
  22.             checkout: "payment",
  23.             amount: {{ isSubscription ? subscriptionTotal : Order.payment_total }},
  24.             currency: "{{ Order.currency_code }}",
  25.             email: "{{ Order.email }}",
  26.             metadata: { orderNo: "{{ Order.order_no }}" },
  27.             tokenType: '{{ isSubscription ? "subscription" : "one_time" }}',
  28.             {% if subscriptionPeriod == 1 %}
  29.                 subscriptionPeriod: 'daily',
  30.             {% elseif subscriptionPeriod == 2 %}
  31.                 subscriptionPeriod: 'weekly',
  32.             {% elseif subscriptionPeriod == 3 %}
  33.                 subscriptionPeriod: 'biweekly',
  34.             {% elseif subscriptionPeriod == 4 %}
  35.                 subscriptionPeriod: 'monthly',
  36.             {% elseif subscriptionPeriod == 5 %}
  37.                 subscriptionPeriod: 'bimonthly',
  38.             {% elseif subscriptionPeriod == 6 %}
  39.                 subscriptionPeriod: 'quarterly',
  40.             {% elseif subscriptionPeriod == 7 %}
  41.                 subscriptionPeriod: 'semiannually',
  42.             {% elseif subscriptionPeriod == 8 %}
  43.                 subscriptionPeriod: 'annually',
  44.             {% endif %}
  45.             capture: '{{ config.getCapture() }}' === '1',
  46.             subscriptionInitialAmount: {{ Order.payment_total }},
  47.             onSuccess: (result) => {
  48.                 isSuccess = true;
  49.                 chargeId.value = result.response.id;
  50.                 form.submit();
  51.             },
  52.             onError: () => {
  53.                 alert("エラーが発生しました。サイト管理者にお問い合わせください。");
  54.                 window.location.href = "{{ url('shopping') }}";
  55.             },
  56.             closed: () => {
  57.                 if(isSuccess === false) {
  58.                     alert("決済が中断されました");
  59.                     window.location.href = "{{ url('shopping') }}";
  60.                 }
  61.             }
  62.         });
  63.         form.addEventListener("submit", () => {
  64.             event.preventDefault();
  65.             checkout.open();
  66.         });
  67.     </script>
  68. {% endif %}