2021-07-06 00:43:49 +02:00
|
|
|
@model PaymentModel
|
2018-03-22 12:08:49 -05:00
|
|
|
|
|
|
|
<div class="top-header">
|
|
|
|
<div class="header">
|
2020-03-27 18:03:39 -05:00
|
|
|
@if (!string.IsNullOrEmpty(Model.CustomLogoLink))
|
|
|
|
{
|
|
|
|
<div class="header__icon">
|
2020-04-18 17:56:05 +02:00
|
|
|
<img class="header__icon__img" src="@Model.CustomLogoLink" height="40" asp-append-version="true">
|
2020-03-27 18:03:39 -05:00
|
|
|
</div>
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
<div class="header__iconcentered">
|
|
|
|
<img class="header__iconcentered__img">
|
|
|
|
</div>
|
|
|
|
}
|
2019-08-27 04:31:15 +02:00
|
|
|
<div class="close-icon close-action" v-on:click="close">
|
2018-11-09 01:09:09 -06:00
|
|
|
✖
|
|
|
|
</div>
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
2019-08-27 04:31:15 +02:00
|
|
|
<div class="timer-row" v-bind:class="{ 'expiring-soon': expiringSoon }">
|
|
|
|
<div class="timer-row__progress-bar" v-bind:style="{ 'width': expirationPercentage+ '%' }"></div>
|
|
|
|
<div class="timer-row__spinner" v-if="!invoiceUnpayable && !invoicePaid">
|
2020-03-27 18:04:30 -05:00
|
|
|
<partial name="Checkout-Spinner" />
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
|
|
|
<div class="timer-row__message">
|
2019-08-27 04:31:15 +02:00
|
|
|
<span v-if="invoiceUnpayable">
|
2018-03-22 22:48:16 -05:00
|
|
|
{{$t("Invoice expired")}}
|
|
|
|
</span>
|
|
|
|
<span v-else-if="expiringSoon">
|
|
|
|
{{$t("Invoice expiring soon...")}}
|
|
|
|
</span>
|
|
|
|
<span v-else>
|
|
|
|
{{$t("Awaiting Payment...")}}
|
|
|
|
</span>
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
2019-08-27 04:31:15 +02:00
|
|
|
<div class="timer-row__time-left">{{timerText}}</div>
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="order-details">
|
2018-08-05 22:45:48 +02:00
|
|
|
<div class="currency-selection">
|
|
|
|
<div class="single-item-order__left">
|
2019-09-10 10:03:24 +02:00
|
|
|
<div style="font-weight: 600;" id="pay-with-text">
|
2018-08-05 22:45:48 +02:00
|
|
|
{{$t("Pay with")}}
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
2018-08-05 22:45:48 +02:00
|
|
|
</div>
|
|
|
|
<div class="single-item-order__right">
|
|
|
|
@if (Model.AvailableCryptos.Count > 1)
|
|
|
|
{
|
2019-08-27 04:31:15 +02:00
|
|
|
<div class="paywithRowRight cursorPointer" v-on:click="openPaymentMethodDialog">
|
|
|
|
<span class="payment__currencies " v-show="!changingCurrencies">
|
2020-03-27 18:04:30 -05:00
|
|
|
<img v-bind:src="srvModel.cryptoImage" />
|
2019-03-15 22:43:57 -05:00
|
|
|
<span>{{srvModel.paymentMethodName}} ({{srvModel.cryptoCodeSrv}})</span>
|
2019-02-26 22:45:58 -06:00
|
|
|
<span v-show="srvModel.isLightning">⚡</span>
|
|
|
|
<span class="clickable_indicator fa fa-angle-right"></span>
|
|
|
|
</span>
|
2018-08-05 22:45:48 +02:00
|
|
|
</div>
|
|
|
|
<div id="vexPopupDialog">
|
|
|
|
<ul class="vexmenu">
|
|
|
|
@foreach (var crypto in Model.AvailableCryptos)
|
|
|
|
{
|
|
|
|
<li class="vexmenuitem">
|
2021-07-06 10:35:42 +02:00
|
|
|
<a href="@crypto.Link" onclick="closePaymentMethodDialog('@crypto.PaymentMethodId');return false;" rel="noreferrer noopener">
|
2020-04-18 17:56:05 +02:00
|
|
|
<img alt="@crypto.PaymentMethodName" src="@crypto.CryptoImage" asp-append-version="true" />
|
2018-08-05 22:45:48 +02:00
|
|
|
@crypto.PaymentMethodName
|
|
|
|
@(crypto.IsLightning ? Html.Raw("⚡") : null)
|
|
|
|
<span>@crypto.CryptoCode</span>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
}
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2019-03-03 16:14:21 -06:00
|
|
|
<div class="payment__currencies_noborder">
|
2020-03-27 18:04:30 -05:00
|
|
|
<img v-bind:src="srvModel.cryptoImage" />
|
2019-03-15 22:43:57 -05:00
|
|
|
<span>{{srvModel.paymentMethodName}} ({{srvModel.cryptoCodeSrv}})</span>
|
2018-08-05 22:45:48 +02:00
|
|
|
<span v-show="srvModel.isLightning">⚡</span>
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
2018-08-05 22:45:48 +02:00
|
|
|
}
|
2019-08-27 04:31:15 +02:00
|
|
|
<div class="payment__spinner" v-show="changingCurrencies || loading">
|
2020-03-27 18:04:30 -05:00
|
|
|
<partial name="Checkout-Spinner" />
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
|
|
|
</div>
|
2018-08-05 22:45:48 +02:00
|
|
|
</div>
|
|
|
|
|
2019-08-27 04:31:15 +02:00
|
|
|
<div class="single-item-order buyerTotalLine" v-on:click="toggleLineItems" v-bind:class="{ 'expanded': lineItemsExpanded}">
|
2018-03-22 12:08:49 -05:00
|
|
|
<div class="single-item-order__left">
|
|
|
|
<div class="single-item-order__left__name">
|
|
|
|
{{ srvModel.storeName }}
|
|
|
|
</div>
|
|
|
|
<div class="single-item-order__left__description">
|
|
|
|
{{ srvModel.itemDesc }}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="single-item-order__right">
|
2018-05-03 16:38:40 -05:00
|
|
|
<div class="single-item-order__right__btc-price" v-if="srvModel.status === 'paid'">
|
|
|
|
<span>{{ srvModel.btcPaid }} {{ srvModel.cryptoCode }}</span>
|
|
|
|
</div>
|
|
|
|
<div class="single-item-order__right__btc-price" v-else>
|
2018-03-22 12:08:49 -05:00
|
|
|
<span>{{ srvModel.btcDue }} {{ srvModel.cryptoCode }}</span>
|
|
|
|
</div>
|
2019-08-25 15:50:11 +02:00
|
|
|
<div class="single-item-order__right__ex-rate" v-if="srvModel.orderAmountFiat && srvModel.cryptoCode">
|
2019-12-04 14:21:33 -06:00
|
|
|
<span v-if="srvModel.cryptoCodeSrv === 'Sats'">1 Sat = {{ srvModel.rate }}</span>
|
|
|
|
<span v-else>1 {{ srvModel.cryptoCodeSrv }} = {{ srvModel.rate }}</span>
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<span class="fa fa-angle-double-down"></span>
|
|
|
|
<span class="fa fa-angle-double-up"></span>
|
|
|
|
</div>
|
|
|
|
<line-items>
|
2019-05-30 16:37:55 -05:00
|
|
|
<div class="extraPayment" v-if="srvModel.status === 'new' && srvModel.txCount > 1">
|
|
|
|
{{$t("NotPaid_ExtraTransaction")}}
|
|
|
|
</div>
|
2019-08-27 04:31:15 +02:00
|
|
|
<div class="line-items" v-bind:class="{ 'expanded': lineItemsExpanded}">
|
2018-03-22 12:08:49 -05:00
|
|
|
<div class="line-items__item">
|
|
|
|
<div class="line-items__item__label">{{$t("Order Amount")}}</div>
|
|
|
|
<div class="line-items__item__value">{{srvModel.orderAmount}} {{ srvModel.cryptoCode }}</div>
|
|
|
|
</div>
|
2018-05-15 14:48:23 -05:00
|
|
|
<div class="line-items__item line-items_fiatvalue" v-if="srvModel.orderAmountFiat">
|
2018-05-15 14:38:14 -05:00
|
|
|
<div class="line-items__item__label"> </div>
|
|
|
|
<div class="line-items__item__value single-item-order__right__ex-rate">
|
|
|
|
{{srvModel.orderAmountFiat}}
|
|
|
|
</div>
|
|
|
|
</div>
|
2018-09-20 00:04:11 -05:00
|
|
|
<div class="line-items__item" v-show="srvModel.networkFee > 0">
|
2018-03-22 12:08:49 -05:00
|
|
|
<div class="line-items__item__label">
|
|
|
|
<span>{{$t("Network Cost")}}</span>
|
|
|
|
</div>
|
2018-04-13 14:10:06 -05:00
|
|
|
<div class="line-items__item__value">
|
2019-08-25 15:50:11 +02:00
|
|
|
<span v-if="srvModel.isMultiCurrency">
|
2018-04-13 14:10:06 -05:00
|
|
|
{{ srvModel.networkFee }} {{ srvModel.cryptoCode }}
|
|
|
|
</span>
|
|
|
|
<span v-else>
|
2021-07-06 00:43:49 +02:00
|
|
|
{{$t("txCount", {count: srvModel.txCountForFee})}} x {{ srvModel.networkFee }} {{ srvModel.cryptoCode }}
|
2018-04-13 14:10:06 -05:00
|
|
|
</span>
|
|
|
|
</div>
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
|
|
|
<div class="line-items__item">
|
|
|
|
<div class="line-items__item__label">
|
|
|
|
<span>{{$t("Already Paid")}}</span>
|
|
|
|
</div>
|
|
|
|
<div class="line-items__item__value">-{{srvModel.btcPaid }} {{ srvModel.cryptoCode }}</div>
|
|
|
|
</div>
|
|
|
|
<div class="line-items__item line-items__item--total">
|
|
|
|
<div class="line-items__item__label">{{$t("Due")}}</div>
|
|
|
|
<div class="line-items__item__value">{{srvModel.btcDue}} {{ srvModel.cryptoCode }}</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</line-items>
|
2021-04-07 06:08:42 +02:00
|
|
|
<component v-if="srvModel.uiSettings && srvModel.uiSettings.checkoutHeaderVueComponentName && srvModel.activated"
|
2020-03-27 18:04:30 -05:00
|
|
|
v-bind:srv-model="srvModel"
|
|
|
|
v-bind:is="srvModel.uiSettings.checkoutHeaderVueComponentName">
|
2019-08-25 15:50:11 +02:00
|
|
|
</component>
|
2019-08-27 04:31:15 +02:00
|
|
|
</div>
|
2018-03-29 22:27:05 -05:00
|
|
|
|
2020-03-26 18:00:17 -05:00
|
|
|
<div class="payment-box" v-bind:class="{ 'with-recommended-fee': showRecommendedFee && !showEmailForm }">
|
2020-02-28 10:10:07 +01:00
|
|
|
<div class="bp-view enter-contact-email" id="emailAddressView" v-bind:class="{ 'active': showEmailForm}">
|
2019-08-27 04:31:15 +02:00
|
|
|
<form class="manual__step-one refund-address-form contact-email-form" id="emailAddressForm" name="emailAddressForm" novalidate="" v-on:submit.prevent="onEmailSubmit">
|
|
|
|
<div class="manual__step-one__header">
|
|
|
|
<span>{{$t("Contact and Refund Email")}}</span>
|
|
|
|
</div>
|
|
|
|
<div class="manual__step-one__instructions">
|
2019-09-12 11:28:11 +02:00
|
|
|
<span class="initial-label" v-show="!emailAddressInputInvalid">
|
2019-08-27 04:31:15 +02:00
|
|
|
<span>{{$t("Contact_Body")}}</span>
|
|
|
|
</span>
|
2019-09-12 11:28:11 +02:00
|
|
|
<span class="submission-error-label" v-show="emailAddressInputInvalid">{{$t("Please enter a valid email address")}}</span>
|
2019-08-27 04:31:15 +02:00
|
|
|
</div>
|
|
|
|
<div class="input-wrapper">
|
2021-05-19 04:39:27 +02:00
|
|
|
<input class="bp-input email-input"
|
2019-09-12 11:28:11 +02:00
|
|
|
v-bind:class="{ 'ng-pristine ng-submitted ng-touched': !emailAddressInputDirty, 'ng-invalid form-input-invalid': emailAddressInputInvalid }" id="emailAddressFormInput"
|
2019-08-27 04:31:15 +02:00
|
|
|
v-bind:placeholder="$t('Your email')" type="email" v-model="emailAddressInput"
|
|
|
|
v-on:change="onEmailChange">
|
|
|
|
<bp-loading-button>
|
|
|
|
<button type="submit" class="action-button" style="margin-top: 15px;" v-bind:disabled="emailAddressFormSubmitting" v-bind:class="{ 'loading': emailAddressFormSubmitting }">
|
|
|
|
<span class="button-text">{{$t("Continue")}}</span>
|
|
|
|
<div class="loader-wrapper">
|
2020-03-27 18:04:30 -05:00
|
|
|
<partial name="Checkout-Spinner" />
|
2019-08-27 04:31:15 +02:00
|
|
|
</div>
|
2019-08-25 15:50:11 +02:00
|
|
|
</button>
|
2019-08-27 04:31:15 +02:00
|
|
|
</bp-loading-button>
|
2018-03-28 02:13:00 -05:00
|
|
|
</div>
|
2019-08-27 04:31:15 +02:00
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
<div v-if="showPaymentUI">
|
2021-04-07 06:08:42 +02:00
|
|
|
<component v-if="srvModel.uiSettings && srvModel.uiSettings.checkoutBodyVueComponentName && srvModel.activated"
|
2020-03-27 18:04:30 -05:00
|
|
|
v-bind:srv-model="srvModel"
|
|
|
|
v-bind:is="srvModel.uiSettings.checkoutBodyVueComponentName">
|
2019-08-27 04:31:15 +02:00
|
|
|
</component>
|
|
|
|
</div>
|
2018-03-22 12:08:49 -05:00
|
|
|
|
2020-02-28 10:10:07 +01:00
|
|
|
<div class="bp-view" id="paid" v-bind:class="{ 'active': invoicePaid && !showEmailForm}">
|
2018-03-22 12:08:49 -05:00
|
|
|
<div class="status-block">
|
|
|
|
<div class="success-block">
|
|
|
|
<div class="status-icon">
|
|
|
|
<div class="status-icon__wrapper">
|
|
|
|
<div class="inner-wrapper">
|
|
|
|
<div class="status-icon__wrapper__icon">
|
2020-04-18 17:56:05 +02:00
|
|
|
<img src="~/imlegacy/checkmark.svg" asp-append-version="true">
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
|
|
|
<div class="status-icon__wrapper__outline"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2018-03-22 12:57:51 -05:00
|
|
|
<div class="success-message">{{$t("This invoice has been paid")}}</div>
|
2019-10-27 08:13:30 +01:00
|
|
|
<a class="action-button" :href="srvModel.merchantRefLink" v-show="!isModal">
|
2019-01-14 09:32:22 +01:00
|
|
|
<span v-html="$t('Return to StoreName', srvModel)"></span>
|
2018-04-13 14:39:45 -05:00
|
|
|
</a>
|
2019-10-27 08:13:30 +01:00
|
|
|
<button class="action-button close-action" v-show="isModal" v-on:click="close">
|
2020-02-19 09:39:14 +01:00
|
|
|
<span v-html="$t('Close')"></span>
|
2018-11-09 01:09:09 -06:00
|
|
|
</button>
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="button-wrapper refund-address-form-container" id="refund-overpayment-button">
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2019-08-27 04:31:15 +02:00
|
|
|
<div class="bp-view expired" id="expired" v-bind:class="{ 'active': invoiceUnpayable}">
|
2018-03-22 12:08:49 -05:00
|
|
|
<div>
|
2018-11-09 01:09:09 -06:00
|
|
|
<div class="expired__body" style="margin-bottom: 20px;">
|
2018-03-22 12:57:51 -05:00
|
|
|
<div class="expired__header">{{$t("What happened?")}}</div>
|
2020-04-06 13:38:43 +02:00
|
|
|
<div class="expired__text" v-html="$t('InvoiceExpired_Body_1', {storeName: srvModel.storeName, maxTimeMinutes: @Model.MaxTimeMinutes})">
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
|
|
|
<div class="expired__text">
|
2018-03-22 12:57:51 -05:00
|
|
|
{{$t("InvoiceExpired_Body_2")}}
|
|
|
|
</div>
|
|
|
|
<div class="expired__text">
|
|
|
|
{{$t("InvoiceExpired_Body_3")}}
|
|
|
|
</div>
|
2018-03-23 12:32:00 -05:00
|
|
|
<div class="expired__text expired__text__smaller">
|
2018-03-22 22:48:16 -05:00
|
|
|
<span class="expired__text__bullet">{{$t("Invoice ID")}}</span>:
|
2018-03-22 12:57:51 -05:00
|
|
|
{{srvModel.invoiceId}}
|
2020-03-27 18:04:30 -05:00
|
|
|
<br />
|
2018-03-22 12:57:51 -05:00
|
|
|
<span class="expired__text__bullet">{{$t("Order ID")}}</span>:
|
|
|
|
{{srvModel.orderId}}
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
|
|
|
</div>
|
2019-10-27 08:13:30 +01:00
|
|
|
<a class="action-button" :href="srvModel.merchantRefLink" v-show="!isModal">
|
2020-04-06 13:38:43 +02:00
|
|
|
<span v-html="$t('Return to StoreName', srvModel)"></span>
|
2018-03-22 12:08:49 -05:00
|
|
|
</a>
|
2019-10-27 08:13:30 +01:00
|
|
|
<button class="action-button close-action" v-show="isModal" v-on:click="close">
|
2020-02-19 09:39:14 +01:00
|
|
|
<span v-html="$t('Close')"></span>
|
2018-11-09 01:09:09 -06:00
|
|
|
</button>
|
2018-03-22 12:08:49 -05:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|