mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-03-03 17:36:59 +01:00
Remove Coinswitch entirely
This commit is contained in:
parent
edfde494fa
commit
ed1ec2300d
17 changed files with 0 additions and 539 deletions
|
@ -122,7 +122,6 @@ namespace BTCPayServer.Controllers.GreenField
|
|||
DefaultPaymentMethod = data.GetDefaultPaymentId(_btcPayNetworkProvider)?.ToStringNormalized(),
|
||||
//blob
|
||||
//we do not include DefaultCurrencyPairs,Spread, PreferredExchange, RateScripting, RateScript in this model and instead opt to set it in stores/storeid/rates endpoints
|
||||
//we do not include CoinSwitchSettings in this model and instead opt to set it in stores/storeid/coinswitch endpoints
|
||||
//we do not include ExcludedPaymentMethods in this model and instead opt to set it in stores/storeid/payment-methods endpoints
|
||||
//we do not include EmailSettings in this model and instead opt to set it in stores/storeid/email endpoints
|
||||
//we do not include PaymentMethodCriteria because moving the CurrencyValueJsonConverter to the Client csproj is hard and requires a refactor (#1571 & #1572)
|
||||
|
@ -160,7 +159,6 @@ namespace BTCPayServer.Controllers.GreenField
|
|||
//we do not include the default payment method in this model and instead opt to set it in the stores/storeid/payment-methods endpoints
|
||||
//blob
|
||||
//we do not include DefaultCurrencyPairs;Spread; PreferredExchange; RateScripting; RateScript in this model and instead opt to set it in stores/storeid/rates endpoints
|
||||
//we do not include CoinSwitchSettings in this model and instead opt to set it in stores/storeid/coinswitch endpoints
|
||||
//we do not include ExcludedPaymentMethods in this model and instead opt to set it in stores/storeid/payment-methods endpoints
|
||||
//we do not include EmailSettings in this model and instead opt to set it in stores/storeid/email endpoints
|
||||
//we do not include OnChainMinValue and LightningMaxValue because moving the CurrencyValueJsonConverter to the Client csproj is hard and requires a refactor (#1571 & #1572)
|
||||
|
|
|
@ -21,7 +21,6 @@ using BTCPayServer.Models;
|
|||
using BTCPayServer.Models.InvoicingModels;
|
||||
using BTCPayServer.Payments;
|
||||
using BTCPayServer.Payments.Lightning;
|
||||
using BTCPayServer.Plugins.CoinSwitch;
|
||||
using BTCPayServer.Rating;
|
||||
using BTCPayServer.Security;
|
||||
using BTCPayServer.Services.Invoices;
|
||||
|
|
|
@ -7,7 +7,6 @@ using BTCPayServer.Client.JsonConverters;
|
|||
using BTCPayServer.Client.Models;
|
||||
using BTCPayServer.JsonConverters;
|
||||
using BTCPayServer.Payments;
|
||||
using BTCPayServer.Plugins.CoinSwitch;
|
||||
using BTCPayServer.Rating;
|
||||
using BTCPayServer.Services.Mails;
|
||||
using BTCPayServer.Services.Rates;
|
||||
|
|
|
@ -1,84 +0,0 @@
|
|||
using System.Threading.Tasks;
|
||||
using BTCPayServer.Abstractions.Constants;
|
||||
using BTCPayServer.Client;
|
||||
using BTCPayServer.Data;
|
||||
using BTCPayServer.Models.StoreViewModels;
|
||||
using BTCPayServer.Services.Stores;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace BTCPayServer.Plugins.CoinSwitch
|
||||
{
|
||||
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||
[Route("plugins/{storeId}/coinswitch")]
|
||||
public class CoinSwitchController : Controller
|
||||
{
|
||||
private readonly StoreRepository _storeRepository;
|
||||
|
||||
public CoinSwitchController(StoreRepository storeRepository)
|
||||
{
|
||||
_storeRepository = storeRepository;
|
||||
}
|
||||
|
||||
[HttpGet("")]
|
||||
public IActionResult UpdateCoinSwitchSettings(string storeId)
|
||||
{
|
||||
var store = HttpContext.GetStoreData();
|
||||
if (store == null)
|
||||
return NotFound();
|
||||
UpdateCoinSwitchSettingsViewModel vm = new UpdateCoinSwitchSettingsViewModel();
|
||||
SetExistingValues(store, vm);
|
||||
return View(vm);
|
||||
}
|
||||
|
||||
private void SetExistingValues(StoreData store, UpdateCoinSwitchSettingsViewModel vm)
|
||||
{
|
||||
var existing = store.GetStoreBlob().GetCoinSwitchSettings();
|
||||
if (existing == null)
|
||||
return;
|
||||
vm.MerchantId = existing.MerchantId;
|
||||
vm.Enabled = existing.Enabled;
|
||||
vm.Mode = existing.Mode;
|
||||
vm.AmountMarkupPercentage = existing.AmountMarkupPercentage;
|
||||
}
|
||||
|
||||
[HttpPost("")]
|
||||
public async Task<IActionResult> UpdateCoinSwitchSettings(string storeId, UpdateCoinSwitchSettingsViewModel vm,
|
||||
string command)
|
||||
{
|
||||
var store = HttpContext.GetStoreData();
|
||||
if (store == null)
|
||||
return NotFound();
|
||||
if (vm.Enabled)
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
{
|
||||
return View(vm);
|
||||
}
|
||||
}
|
||||
|
||||
var coinSwitchSettings = new CoinSwitchSettings()
|
||||
{
|
||||
MerchantId = vm.MerchantId,
|
||||
Enabled = vm.Enabled,
|
||||
Mode = vm.Mode,
|
||||
AmountMarkupPercentage = vm.AmountMarkupPercentage
|
||||
};
|
||||
|
||||
switch (command)
|
||||
{
|
||||
case "save":
|
||||
var storeBlob = store.GetStoreBlob();
|
||||
storeBlob.SetCoinSwitchSettings(coinSwitchSettings);
|
||||
store.SetStoreBlob(storeBlob);
|
||||
await _storeRepository.UpdateStore(store);
|
||||
TempData[WellKnownTempData.SuccessMessage] = "CoinSwitch settings modified";
|
||||
return RedirectToAction(nameof(UpdateCoinSwitchSettings), new {storeId});
|
||||
|
||||
default:
|
||||
return View(vm);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
using BTCPayServer.Data;
|
||||
using NBitcoin;
|
||||
using NBXplorer;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace BTCPayServer.Plugins.CoinSwitch
|
||||
{
|
||||
public static class CoinSwitchExtensions
|
||||
{
|
||||
public const string StoreBlobKey = "coinSwitchSettings";
|
||||
public static CoinSwitchSettings GetCoinSwitchSettings(this StoreBlob storeBlob)
|
||||
{
|
||||
if (storeBlob.AdditionalData.TryGetValue(StoreBlobKey, out var rawS) && rawS is JObject rawObj)
|
||||
{
|
||||
return new Serializer(null).ToObject<CoinSwitchSettings>(rawObj);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
public static void SetCoinSwitchSettings(this StoreBlob storeBlob, CoinSwitchSettings settings)
|
||||
{
|
||||
if (settings is null)
|
||||
{
|
||||
storeBlob.AdditionalData.Remove(StoreBlobKey);
|
||||
}
|
||||
else
|
||||
{
|
||||
storeBlob.AdditionalData.AddOrReplace(StoreBlobKey, JObject.FromObject(settings));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
using BTCPayServer.Abstractions.Contracts;
|
||||
using BTCPayServer.Abstractions.Models;
|
||||
using BTCPayServer.Abstractions.Services;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace BTCPayServer.Plugins.CoinSwitch
|
||||
{
|
||||
public class CoinSwitchPlugin : BaseBTCPayServerPlugin
|
||||
{
|
||||
public override string Identifier => "BTCPayServer.Plugins.CoinSwitch";
|
||||
public override string Name => "CoinSwitch";
|
||||
|
||||
public override string Description =>
|
||||
"Allows you to embed a coinswitch conversion screen to allow customers to pay with altcoins.";
|
||||
|
||||
public override void Execute(IServiceCollection applicationBuilder)
|
||||
{
|
||||
applicationBuilder.AddSingleton<CoinSwitchService>();
|
||||
applicationBuilder.AddSingleton<IUIExtension>(new UIExtension("CoinSwitch/StoreIntegrationCoinSwitchOption",
|
||||
"store-integrations-list"));
|
||||
applicationBuilder.AddSingleton<IUIExtension>(new UIExtension("CoinSwitch/CheckoutContentExtension",
|
||||
"checkout-bitcoin-post-content"));
|
||||
applicationBuilder.AddSingleton<IUIExtension>(new UIExtension("CoinSwitch/CheckoutContentExtension",
|
||||
"checkout-ethereum-post-content"));
|
||||
applicationBuilder.AddSingleton<IUIExtension>(new UIExtension("CoinSwitch/CheckoutTabExtension",
|
||||
"checkout-bitcoin-post-tabs"));
|
||||
applicationBuilder.AddSingleton<IUIExtension>(new UIExtension("CoinSwitch/CheckoutTabExtension",
|
||||
"checkout-ethereum-post-tabs"));
|
||||
applicationBuilder.AddSingleton<IUIExtension>(new UIExtension("CoinSwitch/CheckoutEnd",
|
||||
"checkout-end"));
|
||||
base.Execute(applicationBuilder);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using BTCPayServer.Data;
|
||||
using BTCPayServer.Services.Stores;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
|
||||
namespace BTCPayServer.Plugins.CoinSwitch
|
||||
{
|
||||
public class CoinSwitchService: IDisposable
|
||||
{
|
||||
private readonly StoreRepository _storeRepository;
|
||||
private readonly IMemoryCache _memoryCache;
|
||||
|
||||
public CoinSwitchService(StoreRepository storeRepository, IMemoryCache memoryCache)
|
||||
{
|
||||
_storeRepository = storeRepository;
|
||||
_memoryCache = memoryCache;
|
||||
}
|
||||
|
||||
public async Task<CoinSwitchSettings> GetCoinSwitchForInvoice(string id)
|
||||
{
|
||||
return await _memoryCache.GetOrCreateAsync($"{nameof(CoinSwitchService)}-{id}", async entry =>
|
||||
{
|
||||
entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(1);
|
||||
var d = await _storeRepository.GetStoreByInvoiceId(id);
|
||||
|
||||
return d?.GetStoreBlob()?.GetCoinSwitchSettings();
|
||||
});
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_memoryCache?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
namespace BTCPayServer.Plugins.CoinSwitch
|
||||
{
|
||||
public class CoinSwitchSettings
|
||||
{
|
||||
public string MerchantId { get; set; }
|
||||
public string Mode { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
public decimal AmountMarkupPercentage { get; set; }
|
||||
|
||||
public bool IsConfigured()
|
||||
{
|
||||
return
|
||||
!string.IsNullOrEmpty(MerchantId);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Microsoft.AspNetCore.Mvc.Rendering;
|
||||
|
||||
namespace BTCPayServer.Models.StoreViewModels
|
||||
{
|
||||
public class UpdateCoinSwitchSettingsViewModel
|
||||
{
|
||||
public string MerchantId { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
|
||||
[Display(Name = "Integration Mode")]
|
||||
public string Mode { get; set; } = "inline";
|
||||
|
||||
[Required]
|
||||
[Range(0, 100)]
|
||||
[Display(Name =
|
||||
"Percentage to multiply amount requested at Coinswitch to avoid underpaid situations due to Coinswitch not guaranteeing rates. ")]
|
||||
public decimal AmountMarkupPercentage { get; set; } = new decimal(2);
|
||||
|
||||
public List<SelectListItem> Modes { get; } = new List<SelectListItem>
|
||||
{
|
||||
new SelectListItem { Value = "popup", Text = "Open in a popup" },
|
||||
new SelectListItem { Value = "inline", Text = "Embed inside Checkout UI " },
|
||||
};
|
||||
}
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
@using BTCPayServer.Views.Stores
|
||||
@using BTCPayServer.Abstractions.Extensions
|
||||
@model UpdateCoinSwitchSettingsViewModel
|
||||
@{
|
||||
Layout = "../Shared/_NavLayout.cshtml";
|
||||
ViewData["NavPartialName"] = "../Stores/_Nav";
|
||||
ViewData.SetActivePageAndTitle(StoreNavPages.Integrations, "Update Store CoinSwitch Settings", Context.GetStoreData().StoreName);
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-10">
|
||||
<form method="post">
|
||||
<div class="alert alert-warning" role="alert">
|
||||
If you are enabling CoinSwitch support, we advise that you configure the invoice expiration to a minimum of 30 minutes as it may take longer than the default 15 minutes to convert the funds.
|
||||
</div>
|
||||
<p>
|
||||
You can obtain a merchant id at
|
||||
<a href="https://coinswitch.co/switch/setup/btcpay" target="_blank" rel="noreferrer noopener">
|
||||
https://coinswitch.co/switch/setup/btcpay
|
||||
</a>
|
||||
</p>
|
||||
<div class="form-group">
|
||||
<label asp-for="MerchantId" class="form-label"></label>
|
||||
<input asp-for="MerchantId" class="form-control"/>
|
||||
<span asp-validation-for="MerchantId" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Mode" class="form-label"></label>
|
||||
<select asp-for="Mode" asp-items="Model.Modes" class="form-select"></select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="AmountMarkupPercentage" class="form-label"></label>
|
||||
<input asp-for="AmountMarkupPercentage" class="form-control"/>
|
||||
<span asp-validation-for="AmountMarkupPercentage" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group form-check">
|
||||
<label asp-for="Enabled" class="form-check-label"></label>
|
||||
<input asp-for="Enabled" type="checkbox" class="form-check-input"/>
|
||||
</div>
|
||||
<button name="command" type="submit" value="save" class="btn btn-primary">Submit</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section PageFootContent {
|
||||
<partial name="_ValidationScriptsPartial" />
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
@using BTCPayServer.Plugins.CoinSwitch
|
||||
@inject CoinSwitchService CoinSwitchService
|
||||
@{
|
||||
var invoiceId = this.Context.GetRouteValue("invoiceId")?.ToString();
|
||||
var settings = await CoinSwitchService.GetCoinSwitchForInvoice(invoiceId);
|
||||
if (settings?.IsConfigured() is true && settings.Enabled)
|
||||
{
|
||||
<div id="altcoins" class="bp-view payment manual-flow" v-bind:class="{ 'active': currentTab == 'altcoins'}">
|
||||
<nav>
|
||||
<div class="manual__step-two__instructions">
|
||||
<span>
|
||||
{{$t("ConversionTab_BodyTop", srvModel)}}
|
||||
<br/><br/>
|
||||
{{$t("ConversionTab_BodyDesc", srvModel)}}
|
||||
</span>
|
||||
</div>
|
||||
<center>
|
||||
<coinswitch inline-template
|
||||
:merchant-id="srvModel.coinSwitchMerchantId"
|
||||
:to-currency="srvModel.paymentMethodId"
|
||||
:to-currency-due="srvModel.btcDue * (1 + (@settings.AmountMarkupPercentage / 100)) "
|
||||
mode = '@settings.Mode'
|
||||
merchant-id="@settings.MerchantId"
|
||||
:autoload="true"
|
||||
:to-currency-address="srvModel.btcAddress">
|
||||
<div>
|
||||
<a v-on:click="openDialog($event)" :href="url" class="action-button" v-show="url && !opened">{{$t("Pay with CoinSwitch")}}</a>
|
||||
<iframe
|
||||
v-if="showInlineIFrame"
|
||||
v-on:load="onLoadIframe"
|
||||
style="height: 100%; position: fixed; top: 0; width: 100%; left: 0;"
|
||||
sandbox="allow-scripts allow-forms allow-popups allow-same-origin"
|
||||
:src="url">
|
||||
</iframe>
|
||||
</div>
|
||||
</coinswitch>
|
||||
</center>
|
||||
</nav>
|
||||
</div>
|
||||
}
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
<script src="~/checkout/js/coinswitchComponent.js"></script>
|
|
@ -1,12 +0,0 @@
|
|||
@using BTCPayServer.Plugins.CoinSwitch
|
||||
@inject CoinSwitchService CoinSwitchService
|
||||
@{
|
||||
var invoiceId = this.Context.GetRouteValue("invoiceId")?.ToString();
|
||||
var settings = await CoinSwitchService.GetCoinSwitchForInvoice(invoiceId);
|
||||
}
|
||||
@if (settings?.IsConfigured() is true)
|
||||
{
|
||||
<div class="payment-tabs__tab" id="altcoins-tab" v-on:click="switchTab('altcoins')" v-bind:class="{ 'active': currentTab == 'altcoins'}">
|
||||
<span>{{$t("Conversion")}}</span>
|
||||
</div>
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
@using BTCPayServer.Plugins.CoinSwitch
|
||||
@{
|
||||
var settings = Context.GetStoreData().GetStoreBlob().GetCoinSwitchSettings();
|
||||
}
|
||||
<li class="list-group-item bg-tile ">
|
||||
<div class="d-flex align-items-center">
|
||||
<span class="d-flex flex-wrap flex-fill flex-column flex-sm-row">
|
||||
<strong class="me-3">
|
||||
CoinSwitch
|
||||
</strong>
|
||||
<span title="" class="d-flex me-3">
|
||||
<span class="text-secondary">Accept payments in altcoins that are not supported by BTCPay Server.</span>
|
||||
</span>
|
||||
</span>
|
||||
<span class="d-flex align-items-center fw-semibold">
|
||||
@if (settings?.IsConfigured() is true && settings?.Enabled is true)
|
||||
{
|
||||
<span class="d-flex align-items-center text-success">
|
||||
<span class="me-2 btcpay-status btcpay-status--enabled"></span>
|
||||
Enabled
|
||||
</span>
|
||||
<span class="text-light ms-3 me-2">|</span>
|
||||
<a lass="btn btn-link px-1 py-1 fw-semibold" asp-controller="CoinSwitch" asp-action="UpdateCoinSwitchSettings" asp-route-storeId="@Context.GetRouteValue("storeId")">
|
||||
Modify
|
||||
</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="d-flex align-items-center text-danger">
|
||||
<span class="me-2 btcpay-status btcpay-status--disabled"></span>
|
||||
Disabled
|
||||
</span>
|
||||
<a class="btn btn-primary btn-sm ms-4 px-3 py-1 fw-semibold" asp-controller="CoinSwitch" asp-action="UpdateCoinSwitchSettings" asp-route-storeId="@Context.GetRouteValue("storeId")">
|
||||
Setup
|
||||
</a>
|
||||
}
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
|
@ -90,11 +90,6 @@
|
|||
}
|
||||
return r;
|
||||
},
|
||||
coinswitchAmountDue: function() {
|
||||
return this.srvModel.coinSwitchAmountMarkupPercentage
|
||||
? this.srvModel.btcDue * (1 + (this.srvModel.coinSwitchAmountMarkupPercentage / 100))
|
||||
: this.srvModel.btcDue;
|
||||
},
|
||||
scanDisplayQr: function() {
|
||||
return this.srvModel.invoiceBitcoinUrlQR;
|
||||
}
|
||||
|
|
|
@ -1,93 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>CoinSwitch</title>
|
||||
<script>
|
||||
var script = document.createElement('script'),
|
||||
head = document.head || document.getElementsByTagName('head')[0];
|
||||
script.src = 'https://files.coinswitch.co/public/js/cs_switch.js';
|
||||
head.insertBefore(script, head.firstChild);
|
||||
script.addEventListener('load', function () {
|
||||
var qs = (function (a) {
|
||||
if (a == "") return {};
|
||||
var b = {};
|
||||
for (var i = 0; i < a.length; ++i) {
|
||||
var p = a[i].split('=', 2);
|
||||
if (p.length == 1)
|
||||
b[p[0]] = "";
|
||||
else
|
||||
b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));
|
||||
}
|
||||
return b;
|
||||
})(window.location.search.substr(1).split('&'));
|
||||
|
||||
var merchantId = qs["merchant_id"];
|
||||
var toCurrencyDue = qs["toCurrencyDue"];
|
||||
var toCurrencyAddress = qs["toCurrencyAddress"];
|
||||
var toCurrency = qs["toCurrency"];
|
||||
var mode = qs["mode"];
|
||||
document.body.classList.add(mode);
|
||||
var orderId = null;
|
||||
var payment = new Coinswitch(merchantId);
|
||||
if(window.localStorage){
|
||||
orderId= window.localStorage.getItem(toCurrencyAddress);
|
||||
}
|
||||
var config = {
|
||||
to_currency: toCurrency.toLowerCase(),
|
||||
to_currency_address: toCurrencyAddress,
|
||||
to_amount: parseFloat(toCurrencyDue),
|
||||
state: orderId
|
||||
};
|
||||
|
||||
payment.on('Exchange:Ready', function(){
|
||||
waitForCoinSwitch();
|
||||
});
|
||||
|
||||
payment.on("Exchange:Complete", function () {
|
||||
if(window.localStorage){
|
||||
window.localStorage.removeItem(toCurrencyAddress);
|
||||
}
|
||||
window.close();
|
||||
});
|
||||
|
||||
payment.on("Exchange:Initiated", function(orderId) {
|
||||
if(window.localStorage){
|
||||
window.localStorage.setItem(toCurrencyAddress,orderId);
|
||||
}
|
||||
});
|
||||
payment.on("Exchange:Closed", function () {
|
||||
window.close();
|
||||
window.postMessage("popup-closed", "*");
|
||||
});
|
||||
|
||||
function waitForCoinSwitch() {
|
||||
if (typeof payment.open !== "function") {
|
||||
setTimeout(waitForCoinSwitch, 1000);
|
||||
return;
|
||||
}
|
||||
payment.open(config);
|
||||
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<style>
|
||||
body.popup #CoinSwitchPayment .cs-pay {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body.popup #CoinSwitchPayment .cs-pay__main {
|
||||
width: 100%;
|
||||
min-height: 90vh;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
body.popup #CoinSwitchPayment .cs-pay__dismiss-row {
|
||||
display: none;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
|
@ -1,66 +0,0 @@
|
|||
Vue.component("coinswitch" ,
|
||||
{
|
||||
props: ["toCurrency", "toCurrencyDue", "toCurrencyAddress", "merchantId", "autoload", "mode"],
|
||||
data: function () {
|
||||
return {
|
||||
opened: false
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
showInlineIFrame: function () {
|
||||
return this.url && this.opened;
|
||||
},
|
||||
url: function () {
|
||||
return window.location.origin + "/checkout/coinswitch.html?" +
|
||||
"&toCurrency=" +
|
||||
this.toCurrency +
|
||||
"&toCurrencyAddress=" +
|
||||
this.toCurrencyAddress +
|
||||
"&toCurrencyDue=" +
|
||||
this.toCurrencyDue +
|
||||
"&mode=" +
|
||||
this.mode +
|
||||
(this.merchantId ? "&merchant_id=" + this.merchantId : "");
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openDialog: function (e) {
|
||||
if (e && e.preventDefault) {
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
if (this.mode === 'inline') {
|
||||
this.opened = true;
|
||||
|
||||
} else if (this.mode === "popup") {
|
||||
var coinSwitchWindow = window.open(
|
||||
this.url,
|
||||
'CoinSwitch',
|
||||
'width=360,height=650,toolbar=0,menubar=0,location=0,status=1,scrollbars=1,resizable=0,left=0,top=0');
|
||||
coinSwitchWindow.opener = null;
|
||||
coinSwitchWindow.focus();
|
||||
}
|
||||
},
|
||||
closeDialog: function () {
|
||||
if (this.mode === 'inline') {
|
||||
this.opened = false;
|
||||
}
|
||||
},
|
||||
onLoadIframe: function (event) {
|
||||
$("#prettydropdown-DefaultLang").hide();
|
||||
var c = this.closeDialog.bind(this);
|
||||
event.currentTarget.contentWindow.addEventListener("message", function (evt) {
|
||||
if (evt && evt.data == "popup-closed") {
|
||||
c();
|
||||
|
||||
$("#prettydropdown-DefaultLang").show();
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
mounted: function () {
|
||||
if (this.autoload) {
|
||||
this.openDialog();
|
||||
}
|
||||
}
|
||||
});
|
Loading…
Add table
Reference in a new issue