diff --git a/packages/payment-widget/src/lib/components/payment-confirmation.svelte b/packages/payment-widget/src/lib/components/payment-confirmation.svelte
index c718e63c..2ec6cd8a 100644
--- a/packages/payment-widget/src/lib/components/payment-confirmation.svelte
+++ b/packages/payment-widget/src/lib/components/payment-confirmation.svelte
@@ -20,6 +20,7 @@
} from "../utils/request";
import Spinner from "./spinner.svelte";
import WalletInfo from "./wallet-info.svelte";
+ import { ethers } from "ethers";
export let selectedCurrency: Currency;
export let amountInUSD: number;
@@ -36,6 +37,8 @@
export let onPaymentSuccess: (request: any) => void;
export let onPaymentError: (error: string) => void;
export let invoiceNumber: string | undefined;
+ export let feeAddress: string;
+ export let feeAmountInUSD: number;
const COUNTDOWN_INTERVAL = 30;
@@ -44,9 +47,11 @@
let intervalId: NodeJS.Timeout;
let exchangeRate: number = 0;
let error: string = "";
+ let feeAmountInCrypto: number = 0;
$: isLoadingPrice = true;
$: isPaying = false;
+ $: totalPayment = amountInCrypto + feeAmountInCrypto;
const currencySymbol = selectedCurrency.symbol.includes(
selectedCurrency.network
@@ -72,6 +77,7 @@
const rate = data.data.rates[lookupSymbol];
exchangeRate = parseFloat(rate);
amountInCrypto = amountInUSD * exchangeRate;
+ feeAmountInCrypto = feeAmountInUSD * exchangeRate;
} catch (error) {
alert("Unable to fetch exchange rate. Please try again later");
} finally {
@@ -145,29 +151,58 @@
>
-
+
Payment to
-
- {sellerAddress}
-
-
+
+ {#if feeAddress !== ethers.constants.AddressZero && feeAmountInUSD > 0}
+
+
Fee to
+
+
+ {feeAddress}
+
+
+
+
+
+
Fee Amount
+
+ ${feeAmountInUSD} USD / {trimTrailingDecimalZeros(feeAmountInCrypto)}
+ {currencySymbol}
+
+
+ {/if}
Payment network
{NETWORK_LABEL[selectedCurrency.network]}
Total
- {trimTrailingDecimalZeros(amountInCrypto)} {currencySymbol}
+ {trimTrailingDecimalZeros(totalPayment)} {currencySymbol}
{#if !isPaying}
@@ -216,11 +251,15 @@
try {
const requestParameters = prepareRequestParameters({
currency: selectedCurrency,
+ feeAddress,
+ feeAmountInUSD,
+ feeAmountInCrypto,
productInfo,
sellerInfo,
buyerInfo,
payerAddress,
amountInCrypto,
+ totalAmountInCrypto: totalPayment,
exchangeRate,
amountInUSD,
builderId,
@@ -286,23 +325,6 @@
width: 100%;
gap: 16px;
- .payment-confirmation-seller-address {
- display: flex;
- align-items: center;
- gap: 2px;
- font-size: 12px;
-
- button {
- background: none;
- border: none;
- padding: 0;
- margin: 0;
- cursor: pointer;
- display: inline-flex;
- align-items: center;
- justify-content: center;
- }
- }
&-amount-info {
display: flex;
align-items: center;
@@ -351,6 +373,49 @@
font-weight: 500;
font-size: 14px;
}
+
+ &.payment-confirmation-address {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 8px;
+
+ h4 {
+ margin: 0;
+ }
+
+ .address-container {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ width: 100%;
+
+ a {
+ flex-grow: 1;
+ text-decoration: none;
+ color: inherit;
+ font-size: 14px;
+
+ span {
+ display: inline-block;
+ width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ }
+
+ button {
+ background: none;
+ border: none;
+ padding: 0;
+ margin: 0;
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+ }
+ }
}
&-warning {
diff --git a/packages/payment-widget/src/lib/payment-widget.svelte b/packages/payment-widget/src/lib/payment-widget.svelte
index 6c0e298d..c0b502ea 100644
--- a/packages/payment-widget/src/lib/payment-widget.svelte
+++ b/packages/payment-widget/src/lib/payment-widget.svelte
@@ -1,15 +1,16 @@