@credenza3/passport-evm 0.3.10 → 0.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{App-SMvL8SHG.js → App-B61RxlFv.js} +18 -18
- package/dist/{App-SMvL8SHG.js.map → App-B61RxlFv.js.map} +1 -1
- package/dist/{Button-Cs2Lx_La.js → Button-BusgQ1ne.js} +4 -4
- package/dist/{Button-Cs2Lx_La.js.map → Button-BusgQ1ne.js.map} +1 -1
- package/dist/{ButtonBack-lP4SI-6U.js → ButtonBack-pnpIXhRH.js} +4 -4
- package/dist/{ButtonBack-lP4SI-6U.js.map → ButtonBack-pnpIXhRH.js.map} +1 -1
- package/dist/{ButtonLink-DtUsGiis.js → ButtonLink-C9nZwpfJ.js} +3 -3
- package/dist/{ButtonLink-DtUsGiis.js.map → ButtonLink-C9nZwpfJ.js.map} +1 -1
- package/dist/{ConfirmAccount-BNHb06gD.js → ConfirmAccount-J1hRwpm2.js} +9 -9
- package/dist/{ConfirmAccount-BNHb06gD.js.map → ConfirmAccount-J1hRwpm2.js.map} +1 -1
- package/dist/{ContentHeader-BtrqAVdn.js → ContentHeader-DYZT4Jq6.js} +3 -3
- package/dist/{ContentHeader-BtrqAVdn.js.map → ContentHeader-DYZT4Jq6.js.map} +1 -1
- package/dist/{Error-xDXjWq61.js → Error-x-traJoE.js} +5 -5
- package/dist/{Error-xDXjWq61.js.map → Error-x-traJoE.js.map} +1 -1
- package/dist/{Input-BYyaf68g.js → Input-Bjl7sox6.js} +4 -4
- package/dist/{Input-BYyaf68g.js.map → Input-Bjl7sox6.js.map} +1 -1
- package/dist/{Label-Cmti5Cbv.js → Label-Bvy8t1kY.js} +3 -3
- package/dist/{Label-Cmti5Cbv.js.map → Label-Bvy8t1kY.js.map} +1 -1
- package/dist/{Loader-7pGodfm_.js → Loader-CGfASa7x.js} +3 -3
- package/dist/{Loader-7pGodfm_.js.map → Loader-CGfASa7x.js.map} +1 -1
- package/dist/{Login-8sB_EdyC.js → Login-CzJ_w1IN.js} +9 -9
- package/dist/{Login-8sB_EdyC.js.map → Login-CzJ_w1IN.js.map} +1 -1
- package/dist/{Logout-fIvg92Cd.js → Logout-Bv5bAbtA.js} +6 -6
- package/dist/{Logout-fIvg92Cd.js.map → Logout-Bv5bAbtA.js.map} +1 -1
- package/dist/{Nav-OSFqaRA_.js → Nav--mkGbOtE.js} +5 -5
- package/dist/{Nav-OSFqaRA_.js.map → Nav--mkGbOtE.js.map} +1 -1
- package/dist/{PassportId-BiqFpElN.js → PassportId-CpJ6GKw-.js} +6 -6
- package/dist/{PassportId-BiqFpElN.js.map → PassportId-CpJ6GKw-.js.map} +1 -1
- package/dist/{Payment-CRBMyumu.js → Payment-C8lyG3ha.js} +329 -328
- package/dist/Payment-C8lyG3ha.js.map +1 -0
- package/dist/{PaymentResult-C0tercYs.js → PaymentResult-Ao7EQXRl.js} +4 -4
- package/dist/{PaymentResult-C0tercYs.js.map → PaymentResult-Ao7EQXRl.js.map} +1 -1
- package/dist/{Profile-BDwV3Ncz.js → Profile-B2zfXqlF.js} +7 -7
- package/dist/{Profile-BDwV3Ncz.js.map → Profile-B2zfXqlF.js.map} +1 -1
- package/dist/{ProgressVideo-BceAqolf.js → ProgressVideo-VCzUDJDW.js} +5 -5
- package/dist/{ProgressVideo-BceAqolf.js.map → ProgressVideo-VCzUDJDW.js.map} +1 -1
- package/dist/{RichAlert-Dfa-PN7k.js → RichAlert-BSwGyzoF.js} +5 -5
- package/dist/{RichAlert-Dfa-PN7k.js.map → RichAlert-BSwGyzoF.js.map} +1 -1
- package/dist/{Scanner-vVzrRFe0.js → Scanner-_fg-EhSh.js} +6 -6
- package/dist/{Scanner-vVzrRFe0.js.map → Scanner-_fg-EhSh.js.map} +1 -1
- package/dist/{SendTokens-fPAraviQ.js → SendTokens-9NFvLQUu.js} +7 -7
- package/dist/{SendTokens-fPAraviQ.js.map → SendTokens-9NFvLQUu.js.map} +1 -1
- package/dist/{Sign-CVGTsGlf.js → Sign-CnX8rJP7.js} +6 -6
- package/dist/{Sign-CVGTsGlf.js.map → Sign-CnX8rJP7.js.map} +1 -1
- package/dist/Stripe.service-JUEwMQea.js +71 -0
- package/dist/Stripe.service-JUEwMQea.js.map +1 -0
- package/dist/{UpdateProfile-BCtN5a9E.js → UpdateProfile-CC1gVsJ4.js} +10 -10
- package/dist/{UpdateProfile-BCtN5a9E.js.map → UpdateProfile-CC1gVsJ4.js.map} +1 -1
- package/dist/{UserInfo-CIp-6Rlv.js → UserInfo-CEn91OF2.js} +4 -4
- package/dist/{UserInfo-CIp-6Rlv.js.map → UserInfo-CEn91OF2.js.map} +1 -1
- package/dist/{Wallet-C9NDnmyD.js → Wallet-Crw8MMgJ.js} +7 -7
- package/dist/{Wallet-C9NDnmyD.js.map → Wallet-Crw8MMgJ.js.map} +1 -1
- package/dist/{each-Uu4HiSSB.js → each-B1t2beKn.js} +2 -2
- package/dist/{each-Uu4HiSSB.js.map → each-B1t2beKn.js.map} +1 -1
- package/dist/{html-Bhlo4lQ4.js → html-CJKJoqf1.js} +3 -3
- package/dist/{html-Bhlo4lQ4.js.map → html-CJKJoqf1.js.map} +1 -1
- package/dist/{index-D4uvwDRg.js → index-BNyMdGtn.js} +5 -5
- package/dist/{index-D4uvwDRg.js.map → index-BNyMdGtn.js.map} +1 -1
- package/dist/{index-client-2qGIo9Qc.js → index-client-DYtXtxsE.js} +2 -2
- package/dist/{index-client-2qGIo9Qc.js.map → index-client-DYtXtxsE.js.map} +1 -1
- package/dist/{input-9S31i-DN.js → input-DxMYDf_M.js} +2 -2
- package/dist/{input-9S31i-DN.js.map → input-DxMYDf_M.js.map} +1 -1
- package/dist/{legacy-DN1UEacY.js → legacy-DTYgZ9gT.js} +2 -2
- package/dist/{legacy-DN1UEacY.js.map → legacy-DTYgZ9gT.js.map} +1 -1
- package/dist/passport.es.js +1 -1
- package/dist/passport.umd.js +87 -87
- package/dist/passport.umd.js.map +1 -1
- package/dist/types/app/pages/payment/Payment.service.d.ts +2 -1
- package/package.json +1 -1
- package/dist/Payment-CRBMyumu.js.map +0 -1
- package/dist/Stripe.service-ByDQB0PM.js +0 -70
- package/dist/Stripe.service-ByDQB0PM.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TMembershipPaymentData, TTokenPaymentData } from './oders.types';
|
|
1
|
+
import { TLicensePaymentData, TMembershipPaymentData, TTokenPaymentData } from './oders.types';
|
|
2
2
|
import { TPaymentReturn } from '../../../../../utils/types';
|
|
3
3
|
export declare const requestReceipt: ({ hash, stripeChargeId, title, subtitle, amount, currency, }: {
|
|
4
4
|
hash?: string;
|
|
@@ -13,4 +13,5 @@ export declare const afterPaymentProcess: (res: TPaymentReturn, priceCents: numb
|
|
|
13
13
|
subtitle: string;
|
|
14
14
|
tokens: TTokenPaymentData[];
|
|
15
15
|
memberships: TMembershipPaymentData[];
|
|
16
|
+
licenses: TLicensePaymentData[];
|
|
16
17
|
}) => Promise<void>;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Payment-CRBMyumu.js","sources":["../../ui/images/lock.svg","../../ui/main/payment/PaymentSwitchButton.svelte","../../ui/main/payment/Payment.svelte","../../ui/main/payment/Stripe.svelte","../../ui/main/payment/CredenzaBalance.svelte","../src/app/pages/payment/stripe/wallet-pay/WalletPay.svelte","../src/app/pages/payment/stripe/Stripe.styles.ts","../../utils/lib/scripts/scripts.ts","../../utils/lib/orders/index.ts","../src/app/pages/payment/Payment.service.ts","../src/app/pages/payment/stripe/Stripe.svelte","../src/app/pages/payment/credenza-balance/CredenzaBalance.svelte","../src/app/pages/payment/Payment.svelte"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='22'%20height='22'%20viewBox='0%200%2024%2024'%3e%3cpath%20fill='%23bbb'%20d='M17%209.761v-4.761c0-2.761-2.238-5-5-5-2.763%200-5%202.239-5%205v4.761c-1.827%201.466-3%203.714-3%206.239%200%204.418%203.582%208%208%208s8-3.582%208-8c0-2.525-1.173-4.773-3-6.239zm-8-4.761c0-1.654%201.346-3%203-3s3%201.346%203%203v3.587c-.927-.376-1.938-.587-3-.587s-2.073.211-3%20.587v-3.587zm4%2011.723v2.277h-2v-2.277c-.596-.347-1-.984-1-1.723%200-1.104.896-2%202-2s2%20.896%202%202c0%20.738-.404%201.376-1%201.723z'/%3e%3c/svg%3e\"","<style>\n .active {\n background-color: #ffff;\n font-weight: 500;\n color: #000;\n }\n .btn-disabled {\n pointer-events: none;\n background-color: #d0d2d5;\n }\n</style>\n\n<script lang=\"ts\">\n import Loader from '../shared/Loader.svelte'\n \n export let onClick: (...args: unknown[]) => unknown\n export let text: string\n export let disabled: boolean = false\n export let isLoading: boolean = false\n export let isActive: boolean = false\n</script>\n\n<button\n type=\"submit\"\n class=\"crtw-flex crtw-justify-center crtw-items-center crtw-w-full crtw-h-[50px] crtw-cursor-pointer crtw-border crtw-border-gray-300\n crtw-rounded crtw-font-['poppins'] crtw-text-gray-600\"\n class:btn-disabled={disabled || isLoading}\n class:active={isActive}\n on:click|preventDefault={onClick}\n>\n {#if isLoading}\n <Loader />\n {:else}\n {text}\n {/if}\n</button>","<script lang=\"ts\">\n import { PaymentViews } from '../../../utils/enums';\n import ButtonBack from '../shared/inputs/button-back/ButtonBack.svelte';\n import LockIcon from '../../images/lock.svg'\n import type { TUser } from '../../../utils/types';\n import PaymentSwitchButton from './PaymentSwitchButton.svelte';\n\n export let isLoading: boolean\n export let options: {\n user: TUser| null\n title: string\n subtitle?: string\n onBackClick: () => void\n isStripeDisabled: boolean\n isCredezaValueDisabled: boolean,\n isPriceLoading: boolean\n totalSumCents: number,\n currencySymbol?: string\n }\n\n \n let { user, title, subtitle, onBackClick, isStripeDisabled, currencySymbol = '$' } = options\n let activeTab = isStripeDisabled ? PaymentViews.CREDENZA_BALANCE : PaymentViews.CREDIT_CARD\n\n $: isPriceLoading = options.isPriceLoading\n $: totalSumCents = options.totalSumCents\n $: isCredezaValueDisabled = options.isCredezaValueDisabled\n</script>\n\n<div class=\"cpui-payment crtw-text-left crtw-w-full\" class:crtw-hidden={isLoading}>\n <div class=\"crtw-text-right crtw-text-[13px] crtw-text-gray-400 crtw-mb-6\">\n <div class=\"crtw-break-words\">{user?.email || user?.pending?.email || ''}</div>\n <div>{user?.phone || user?.pending?.phone || ''}</div>\n </div>\n <div class=\"crtw-font-bold crtw-text-xl\">{title}</div>\n <div class=\"crtw-flex crtw-justify-between crtw-mb-3 crtw-text-gray-600 crtw-font-bold\">\n {#if subtitle}\n <div>{subtitle}</div>\n {/if}\n {#if isPriceLoading}\n <div>Getting price...</div>\n {:else if totalSumCents}\n <div>{currencySymbol}{(+totalSumCents / 100).toFixed(2)}</div>\n {/if}\n </div>\n <div class=\"crtw-flex crtw-bg-gray-200 crtw-rounded-md crtw-p-px\">\n <PaymentSwitchButton\n text=\"Credit Card\"\n onClick={() => (activeTab = PaymentViews.CREDIT_CARD)}\n isActive={activeTab === PaymentViews.CREDIT_CARD}\n disabled={isStripeDisabled}\n />\n <PaymentSwitchButton\n text=\"Credenza Balance\"\n onClick={() => (activeTab = PaymentViews.CREDENZA_BALANCE)}\n isActive={activeTab === PaymentViews.CREDENZA_BALANCE}\n disabled={isCredezaValueDisabled}\n />\n </div>\n <hr class=\"crtw-block crtw-border-t-2 crtw-border-gray-200 crtw-w-1/2 crtw-mx-auto crtw-mt-3.5 crtw-mb-[30px]\" />\n {#if activeTab === PaymentViews.CREDIT_CARD}\n <slot name=\"credit-card\" />\n {:else if activeTab === PaymentViews.CREDENZA_BALANCE}\n <slot name=\"cred-balance\" />\n {/if}\n <div class=\"crtw-flex crtw-w-full crtw-justify-center crtw-items-center\">\n <img src={LockIcon} alt=\"\" /><span class=\"crtw-text-sm crtw-text-gray-400 crtw-ml-1\"\n >Payments are secure and encrypted</span\n >\n </div>\n <div class=\"crtw-mt-1.5\">\n <ButtonBack onClick={onBackClick} />\n </div>\n</div>\n","<script lang=\"ts\">\n import Button from \"../shared/inputs/button/Button.svelte\";\n\n export let options: {\n isCardFocused: boolean\n onPay: () => void\n currencySymbol?: string\n }\n export let isPaymentDisabled: boolean\n export let isLoading: boolean\n export let totalToPay: string\n\n let { isCardFocused, onPay, currencySymbol = '$' } = options\n</script>\n\n<div class=\"crtw-text-base crtw-mb-1.5\">Credit card details</div>\n<div\n id=\"cpui-card-element\"\n class=\"crtw-border crtw-border-gray-300 crtw-rounded crtw-px-2.5 crtw-py-4 crtw-mb-2.5 crtw-w-full\"\n style={isCardFocused ? 'border-color: #121e2b' : ''}\n/>\n<!-- Used to display Element errors. -->\n<div id=\"card-errors\" role=\"alert\" />\n<Button\n text={`Pay ${currencySymbol}${totalToPay}`}\n onClick={onPay}\n disabled={isPaymentDisabled}\n bind:isLoading\n/>","<script lang=\"ts\">\n import Button from \"../shared/inputs/button/Button.svelte\";\n\n export let options: {\n formattedBalance: string\n balance: number\n credAlias: string\n onPay: () => void\n onGetCred: () => void\n totalToPay: string\n isLoading: boolean\n isPaymentDisabled: boolean\n }\n\n let { credAlias, onPay, onGetCred } = options\n\n $: isLoading = options.isLoading\n $: isPaymentDisabled = options.isPaymentDisabled\n $: formattedBalance = options.formattedBalance\n $: totalToPay = options.totalToPay\n $: balance = options.balance\n</script>\n\n<div class=\"crtw-w-full crtw-text-center crtw-my-5\">\n <div class=\"crtw-text-3xl crtw-text-black crtw-font-bold\">\n {#if Number(totalToPay) > balance}\n INSUFFICIENT FUNDS\n {:else}\n {formattedBalance}\n {/if}\n \n </div>\n <div class=\"crtw-mb-5 crtw-text-gray-600\">\n {#if Number(totalToPay) > balance}\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n You do not have enough stored value to make this payment. \n <span\n class=\"crtw-text-black crtw-cursor-pointer\"\n role=\"button\"\n tabindex=\"0\"\n on:click={onGetCred}\n >\n Click to get some {credAlias}\n </span>\n {:else}\n Your balance after purchase\n {/if}\n </div>\n\n <Button\n text={`Pay ${totalToPay} ${credAlias}`}\n onClick={onPay}\n disabled={isPaymentDisabled}\n {isLoading}\n />\n</div>","<script lang=\"ts\">\n import { onMount } from 'svelte'\n import { dispatch, PassportEvents } from '@lib/events/events'\n\n export let doPayment: (stripeTokenId: string) => Promise<void>\n export let stripe: Window['Stripe']\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export let stripeElements: any\n export let priceCents: number\n export let isLoading: boolean\n\n onMount(async () => {\n const paymentRequest = stripe.paymentRequest({\n country: 'US',\n currency: 'usd',\n total: {\n label: 'Apple/Google payment',\n amount: priceCents,\n },\n requestPayerName: true,\n requestPayerEmail: true,\n })\n const canMakePayment = await paymentRequest.canMakePayment()\n if (!canMakePayment) return\n\n const walletPayElement = document.getElementById('ctui-wallet-pay')\n if (walletPayElement) walletPayElement.style.display = 'crtw-block'\n\n const prButton = stripeElements.create('paymentRequestButton', {\n paymentRequest: paymentRequest,\n style: {\n paymentRequestButton: {\n height: '48px',\n },\n },\n })\n prButton.mount('#ctui-payment-request-button')\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n paymentRequest.on('token', async (event: any) => {\n isLoading = true\n try {\n await doPayment(event.token.id)\n await event.complete('success')\n } catch (err) {\n await event.complete('error')\n dispatch(PassportEvents.ERROR, { error: err })\n }\n isLoading = false\n })\n })\n</script>\n\n<div id=\"ctui-wallet-pay\" class=\"crtw-w-full crtw-my-4\" style=\"dispay: none;\">\n <div id=\"ctui-payment-request-button\"></div>\n</div>\n","export const stripeStyles = {\n base: {\n color: '#121e2b',\n fontSize: '12px',\n '::placeholder': {\n color: '#d9d9d9',\n },\n },\n invalid: {\n color: '#fa755a',\n },\n}\n","export const loadScript = (src: string) => {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script')\n script.src = src\n document.body.appendChild(script)\n script.addEventListener('load', () => resolve(script))\n script.addEventListener('error', () => reject(script))\n })\n}\n","import { get } from \"svelte/store\";\nimport { accessTokenStore } from \"../../../stores\";\nimport type { TPaymentReturn } from \"@packages/utils/types\";\n\nexport const getOrderDetails = async (apiUrl: string, orderId: string): Promise<TPaymentReturn> => {\n const res = await fetch(`${apiUrl}/orders/${orderId}`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${get(accessTokenStore)}`,\n },\n method: \"GET\",\n });\n if (!res.ok) throw new Error(\"Failed to get order details\");\n return await res.json();\n}\nexport const getCompmletedOrderDetails = async (\n apiUrl: string,\n orderId: string,\n maxRetries = 5\n) => {\n let attempts = 0;\n\n while (attempts < maxRetries) {\n const res = await fetch(`${apiUrl}/orders/completed/${orderId}`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${get(accessTokenStore)}`,\n },\n method: \"GET\",\n });\n\n if (res.status === 204) {\n attempts++;\n if (attempts < maxRetries) {\n continue;\n } else {\n throw new Error(\"No content received after multiple attempts\");\n }\n }\n\n if (!res.ok) throw new Error(\"Failed to get order details\");\n return await res.json();\n }\n};\n\nexport const validateOrderItems = (\n txs: string[] | null[],\n orders: TPaymentReturn[\"items\"],\n): string => {\n const errorMessages = orders\n .filter((item) => item.error)\n .map(\n (item) =>\n `Name: ${item.metadata?.name || item.directive.resource_id}, reason: ${item.error}`\n )\n .join(\"\\n\");\n if (txs.every((item) => item === null)) {\n throw new Error(`All transactions failed. \\n${errorMessages}`);\n } else if (orders?.every(item => item.status === \"ERROR\")) {\n throw new Error(`All transactions failed.}`);\n }\n return errorMessages;\n};\n","import { get } from 'svelte/store'\nimport { accessTokenStore, fn } from '@packages/stores'\nimport { ReceiptTarget } from '@packages/utils/enums'\nimport { configStore } from '@src/stores/config'\nimport { getClientConfigByClientId } from '@lib/clients'\nimport type { TMembershipPaymentData, TTokenPaymentData } from './oders.types'\nimport { dispatch, PassportEvents } from '@lib/events/events'\nimport { TransactionTypes } from '@packages/utils/enums'\nimport { pageOptsStore, pageStore, userStore } from '@packages/stores'\nimport { Pages } from '@packages/utils/enums'\nimport { analytics } from '@lib/mixpanel/mixpanel'\nimport { waitVideoEnded } from '@components/progress/ProgressVideo.service'\nimport { getAddress } from '@src/passport/blockchain'\nimport { validateOrderItems } from '@lib/orders'\nimport type { TPaymentReturn } from '@packages/utils/types'\n\n\nexport const requestReceipt = async ({\n hash,\n stripeChargeId,\n title,\n subtitle,\n amount,\n currency,\n}: {\n hash?: string\n stripeChargeId?: string\n title?: string\n subtitle?: string\n amount?: number\n currency?: string\n}) => {\n const { credenza, receiptTarget, clientId } = get(configStore)\n\n const targets = [];\n if (!receiptTarget) {\n targets.push(ReceiptTarget.EMAIL)\n } else {\n targets.push(...receiptTarget)\n }\n\n let successCount = 0;\n \n for (const target of targets) {\n const result = await fetch(`${credenza.evmApiUrl}/contracts/receipt`, {\n method: 'POST',\n body: JSON.stringify({\n ...(hash ? { tx: hash } : { charge_id: stripeChargeId }),\n ...(amount ? { amount } : {}),\n ...(currency ? { currency } : {}),\n target,\n title,\n subtitle,\n source: getClientConfigByClientId(clientId).name,\n }),\n headers: {\n Authorization: `Bearer ${get(accessTokenStore)}`,\n 'Content-Type': 'application/json',\n },\n })\n\n if (result.ok) {\n successCount++;\n } else {\n console.warn(`Failed to send receipt to ${target}:`, result.status)\n }\n }\n\n return successCount > 0\n}\n\nexport const afterPaymentProcess = async (res: TPaymentReturn, priceCents: number, purchaseConfig: {\n title: string\n subtitle: string\n tokens: TTokenPaymentData[]\n memberships: TMembershipPaymentData[]\n}) => {\n const { toastAlert } = get(fn)\n const config = get(configStore)\n \n const failedOrdersMessage = validateOrderItems(res.chain_txs, res.items)\n dispatch(PassportEvents.PAYMENT, {\n type: TransactionTypes.STRIPE,\n results: { ...res, tokens: purchaseConfig.tokens, memberships: purchaseConfig.memberships },\n })\n toastAlert('Your payment was successful')\n dispatch(PassportEvents.RECHECK_BALANCE, res.chain_txs)\n\n const user = get(userStore)\n if (user) {\n analytics.track('cp_payment_fiat', {\n $email: user.email,\n $phone: user.phone,\n chain: config.chainId,\n clientId: config.clientId,\n address: await getAddress(),\n location: window.location.href,\n tokens: purchaseConfig?.tokens,\n memberships: purchaseConfig?.memberships,\n total: priceCents / 100,\n description: (purchaseConfig?.title ?? '') + `(${purchaseConfig?.subtitle ?? ''})`,\n })\n }\n\n await waitVideoEnded()\n\n if (priceCents === 0) pageOptsStore.set({ subtitle: 'Your claim was successful!', receipt: false })\n\n if (failedOrdersMessage) {\n pageOptsStore.set({\n title: 'Done!',\n subtitle: 'Your payment was partly successful',\n orders: res.items,\n })\n }\n pageStore.set(Pages.PAYMENT_RESULT)\n}","<script lang=\"ts\">\n import WalletPay from './wallet-pay/WalletPay.svelte'\n import { onMount } from 'svelte'\n import { get } from 'svelte/store'\n import { stripeStyles } from '@pages/payment/stripe/Stripe.styles'\n import { dispatch, PassportEvents } from '@lib/events/events'\n import { loadScript } from '@lib/scripts/scripts'\n import { pageOptsStore, pageStore, fn } from '@packages/stores'\n import { Pages } from '@packages/utils/enums'\n import { Stripe as StripeComponent } from '@packages/ui'\n import { configStore } from '@src/stores/config'\n import { getClientConfigByClientId } from '@lib/clients'\n import { afterPaymentProcess } from '../Payment.service'\n import type { TMembershipPaymentData, TTokenPaymentData } from '../oders.types'\n\n export let priceCents: number\n export let isLoading: boolean\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export let purchaseConfig: {\n title: string\n subtitle: string\n tokens: TTokenPaymentData[]\n memberships: TMembershipPaymentData[]\n }\n export let isPriceLoading: boolean\n\n const { toastAlert } = get(fn)\n const config = get(configStore)\n\n let Stripe: Window['Stripe']\n let stripe: Window['Stripe']\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let stripeElements: any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let cardElement: any\n let isButtonActive: boolean\n\n let isCardFocused = false\n onMount(async () => {\n try {\n if (!Stripe) {\n if (!window.Stripe) {\n await loadScript('https://js.stripe.com/v3/')\n if (!window.Stripe) throw {}\n }\n Stripe = window.Stripe\n }\n } catch (err) {\n return console.log('Please include stripe to use payments.')\n }\n if (stripe) return\n\n const clientName = getClientConfigByClientId(config.clientId).name\n stripe = Stripe(config.stripe.pk[clientName] ?? config.stripe.pk.DEFAULT)\n stripeElements = stripe.elements()\n cardElement = stripeElements.create('card', { style: stripeStyles })\n cardElement.mount('#cpui-card-element')\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n cardElement.on('change', (event: any) => {\n isButtonActive = event.complete && !event.error\n })\n cardElement.on('focus', () => (isCardFocused = true))\n cardElement.on('blur', () => (isCardFocused = false))\n })\n\n const handleSubmit = async () => {\n try {\n if (!isButtonActive) return\n isLoading = true\n const result = await stripe.createToken(cardElement)\n if (result.error) throw result.error\n await doPayment(result.token.id)\n } catch (err) {\n dispatch(PassportEvents.ERROR, { error: err })\n }\n isLoading = false\n }\n\n const doPayment = async (tokenId: string) => {\n try {\n const { processPayment } = await import('@pages/payment/stripe/Stripe.service')\n\n const res = await processPayment(tokenId)\n await afterPaymentProcess(res, priceCents, purchaseConfig)\n } catch (err) {\n toastAlert(`Payment error: ${err.message || err}`, 'failure')\n pageOptsStore.set({ errorMessage: err.message || err })\n pageStore.set(Pages.ERROR)\n dispatch(PassportEvents.ERROR, { error: err })\n }\n }\n\n $: isPaymentDisabled = !isButtonActive || isLoading || isPriceLoading\n $: totalToPay = (priceCents / 100).toFixed(2)\n</script>\n\n<StripeComponent\n bind:isPaymentDisabled\n bind:isLoading\n bind:totalToPay\n options={{\n isCardFocused,\n onPay: handleSubmit,\n currencySymbol: getClientConfigByClientId(config.clientId).currencySymbol,\n }}\n/>\n\n{#if stripe && stripeElements}\n <WalletPay {doPayment} {stripe} {stripeElements} {priceCents} bind:isLoading />\n{/if}\n","<script lang=\"ts\">\n import { ethers } from '@credenza3/core-web-evm-ext'\n import { get } from 'svelte/store'\n import { onMount } from 'svelte'\n import { Pages } from '@packages/utils/enums'\n import { clientPublicStore, fn, pageOptsStore, pageStore, userStore } from '@packages/stores'\n import { dispatch, PassportEvents } from '@lib/events/events'\n import { TransactionTypes } from '@packages/utils/enums'\n import { sendContractTx, getTxScanAddress } from '@src/lib/tx/tx'\n import { requestReceipt } from '@pages/payment/Payment.service'\n import { analytics } from '@lib/mixpanel/mixpanel'\n import { waitVideoEnded } from '@components/progress/ProgressVideo.service'\n import { type TEvmContract, type TPaymentItem } from '@packages/utils/types'\n import { getCryptoCurrencySymbol } from '@lib/strings/strings'\n import { CredenzaBalance } from '@packages/ui'\n import { getAddress } from '@src/passport/blockchain'\n import { configStore, providerStore } from '@src/stores'\n import Loader from '@packages/ui/main/shared/Loader.svelte'\n\n export let totalPriceToken: number\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export let purchaseConfig: any\n export let isLoading: boolean\n export let isPriceLoading: boolean\n export let pricesByToken: { [key: string]: number }\n\n const { getCREDContract, toastAlert } = get(fn)\n const { chainId, clientId } = get(configStore)\n\n let isBalanceLoading: boolean = false\n let balance: bigint = BigInt(0)\n let formattedBalance: string\n let symbol: string = ''\n let contract: ethers.Contract\n let decimals: number\n let userAddress: string\n let signer: ethers.Signer\n let credContract: {\n address: string\n decimals: number\n contract: ethers.Contract\n }\n\n const processPaymentItem = async (item: TPaymentItem, index: number) => {\n try {\n const { credenzaSellableMinAbi } = await import('@src/lib/abi')\n const credenzaSellableContract = new ethers.Contract(item.contractAddress, credenzaSellableMinAbi, signer)\n const tokenOrTypeId = item.tokenId ? item.tokenId : (item.typeId as string)\n const priceToken = pricesByToken[`${item.contractAddress}/${tokenOrTypeId}`]\n\n const approveTx = await contract.approve.populateTransaction(\n await credenzaSellableContract.getAddress(),\n priceToken,\n )\n\n await sendContractTx(approveTx, contract)\n const buyTx = await credenzaSellableContract.buyWithToken.populateTransaction(\n tokenOrTypeId,\n item.amount || 1,\n userAddress,\n )\n\n const result = await sendContractTx(buyTx, credenzaSellableContract)\n\n toastAlert(`<a href=\"${getTxScanAddress(result.hash)}\" target=\"_blank\">Purchase TX #${index}</a> was created`)\n dispatch(PassportEvents.PAYMENT, { type: TransactionTypes.ERC20, data: result })\n dispatch(PassportEvents.RECHECK_BALANCE)\n\n await requestReceipt({\n hash: result.hash,\n title: purchaseConfig.title,\n subtitle: purchaseConfig.subtitle,\n currency: 'CRED',\n amount: +ethers.formatUnits(priceToken, decimals),\n })\n dispatch(PassportEvents.RECEIPT, { hash: result.hash })\n } catch (err) {\n toastAlert(`Payment error: ${err.message || err}`, 'failure')\n pageOptsStore.set({ errorMessage: err.message })\n pageStore.set(Pages.ERROR)\n dispatch(PassportEvents.ERROR, { error: err })\n }\n }\n\n const payWithCredenza = async () => {\n try {\n if (BigInt(totalPriceToken) > balance) return\n\n isLoading = true\n const paymentPromises = [...(purchaseConfig.tokens || []), ...(purchaseConfig.memberships || [])].map(\n (item, index) => processPaymentItem(item, index + 1),\n )\n await Promise.all(paymentPromises)\n\n const user = get(userStore)\n if (user) {\n analytics.track('cp_payment_stored_value', {\n $email: user.email,\n $phone: user.phone,\n chain: chainId,\n clientId,\n address: userAddress,\n location: window.location.href,\n tokens: purchaseConfig.tokens,\n memberships: purchaseConfig.memberships,\n total: totalPriceToken,\n description: (purchaseConfig?.title ?? '') + `(${purchaseConfig?.subtitle ?? ''})`,\n })\n }\n\n await waitVideoEnded()\n\n if (totalPriceToken === 0) pageOptsStore.set({ subtitle: 'Your claim was successful!', receipt: false })\n pageStore.set(Pages.PAYMENT_RESULT)\n } catch (err) {\n toastAlert(`Payment error: ${err.message || err}`, 'failure')\n pageOptsStore.set({ errorMessage: err.message })\n pageStore.set(Pages.ERROR)\n dispatch(PassportEvents.ERROR, { error: err })\n } finally {\n isLoading = false\n }\n }\n\n onMount(async () => {\n try {\n isBalanceLoading = true\n credContract = (await getCREDContract()) as TEvmContract\n\n const provider = get(providerStore)\n if(!provider) return\n signer = await provider.getSigner()\n contract = credContract.contract\n decimals = credContract.decimals\n ;[userAddress, symbol] = await Promise.all([getAddress(), contract.symbol()])\n balance = await contract.balanceOf(userAddress)\n\n formattedBalance = `${ethers.formatUnits(BigInt(balance) - BigInt(totalPriceToken), decimals)} ${getCryptoCurrencySymbol(symbol, 'cred')}`\n } catch (err) {\n console.log(err)\n } finally {\n isBalanceLoading = false\n }\n })\n</script>\n\n{#if isBalanceLoading}\n <div class=\"crtw-w-full crtw-justify-items-center crtw-my-5\">\n <Loader />\n </div>\n{:else}\n <CredenzaBalance\n options={{\n formattedBalance,\n balance: Number((+ethers.formatUnits(BigInt(balance), decimals)).toFixed(2)),\n credAlias: $clientPublicStore?.ui_settings.cred_alias,\n onPay: payWithCredenza,\n onGetCred: () => pageStore.set(Pages.WALLET),\n totalToPay: (+ethers.formatUnits(totalPriceToken, decimals)).toFixed(2),\n isLoading,\n isPaymentDisabled: !Number(balance) || BigInt(totalPriceToken) > balance || isPriceLoading,\n }}\n />\n{/if}\n","<script lang=\"ts\">\n import { Pages } from '@packages/utils/enums'\n import { onDestroy } from 'svelte'\n import { get } from 'svelte/store'\n import { ethers } from '@credenza3/core-web-evm-ext'\n\n import { pageOptsStore, userStore, pageStore, fn } from '@packages/stores'\n import { DEFAULT_TOKEN_ID } from '@packages/utils/constants'\n import { dispatch, PassportEvents } from '@lib/events/events'\n import type { TPaymentItem } from '@packages/utils/types'\n import { Payment } from '@packages/ui'\n import Stripe from './stripe/Stripe.svelte'\n import CredenzaBalance from './credenza-balance/CredenzaBalance.svelte'\n import { configStore, providerStore, contractsStore } from '@src/stores'\n import { abi as content_abi } from '@credenza3/contracts/artifacts/ContentNftContract.json'\n\n const { close } = get(fn)\n const chainId = get(configStore).chainId\n\n $: if ($configStore.chainId !== chainId) close()\n\n let totalSumCents: number = 0\n let totalSumToken: number = 0\n let isPriceLoading: boolean = false\n let isLoading: boolean = false\n\n let pricesByToken: { [key: string]: number } = {}\n\n const getTokenPrice = async (contractAddress: string, tokenId: number, licenseType?: string): Promise<[number, number]> => {\n let priceCents = 0\n let priceToken = 0\n if (licenseType) {\n const contract = new ethers.Contract(contractAddress, content_abi, $providerStore)\n priceCents = await contract.getLicensePriceFiat(String(tokenId), licenseType).then((result) => Number(result))\n priceToken = await contract.getLicensePriceToken(String(tokenId), licenseType).then((result) => Number(result))\n return [priceCents, priceToken]\n }\n \n const { credenzaSellableMinAbi } = await import('@src/lib/abi')\n const sellableContract = new ethers.Contract(contractAddress, credenzaSellableMinAbi, $providerStore)\n priceCents = await sellableContract.getPriceFiat(tokenId).then((result) => Number(result))\n priceToken = 0\n\n if (priceCents === 0) {\n ;[priceCents, priceToken] = await Promise.all([\n sellableContract.getPriceFiat(DEFAULT_TOKEN_ID).then((result) => Number(result)),\n sellableContract.getPriceToken(DEFAULT_TOKEN_ID).then((result) => Number(result)),\n ])\n } else {\n priceToken = await sellableContract.getPriceToken(tokenId).then((result) => Number(result))\n }\n\n return [priceCents, priceToken]\n }\n\n const calculateTotalPrice = async (items: TPaymentItem[]): Promise<void> => {\n console.log(items)\n try {\n isPriceLoading = true\n for (const token of items) {\n if (token.contractAddress === $contractsStore.erc20Cred.address) {\n totalSumCents += token.amount * 100\n } else {\n \n const tokenId = token.tokenId || (token.typeId as string) || (token.contentTokenId as string) || DEFAULT_TOKEN_ID\n\n const contractAddress = token.licenseContractAddress || token.contractAddress\n let [priceCents, priceToken] = await getTokenPrice(contractAddress, +tokenId, token.licenseType)\n\n if (token?.amount && token?.amount !== 0) {\n priceCents *= token.amount\n priceToken *= token.amount\n }\n\n totalSumCents += priceCents\n totalSumToken += priceToken\n\n pricesByToken[`${contractAddress}/${tokenId}`] = priceToken\n }\n }\n } catch (err) {\n dispatch(PassportEvents.ERROR, err)\n } finally {\n isPriceLoading = false\n }\n }\n\n const unsub = pageOptsStore.subscribe(async (store) => {\n if (!store?.tokens?.length && !store?.memberships?.length && !store?.licenses?.length) return\n\n await calculateTotalPrice([...(store?.tokens || []), ...(store?.memberships || []), ...(store?.licenses || [])])\n })\n\n onDestroy(unsub)\n</script>\n\n{#if isLoading}\n {#await import('@components/progress/ProgressVideo.svelte') then module}\n <svelte:component this={module.default} />\n {/await}\n{/if}\n\n<Payment\n bind:isLoading\n options={{\n user: $userStore,\n title: $pageOptsStore.title || `Order Summary`,\n subtitle: $pageOptsStore.subtitle,\n onBackClick: () => pageStore.set(Pages.WALLET),\n isStripeDisabled: $pageOptsStore.payments?.stripe?.disabled,\n isCredezaValueDisabled: !totalSumCents || $pageOptsStore.payments?.credenzaStoredValue?.disabled,\n isPriceLoading,\n totalSumCents,\n }}\n>\n <div slot=\"credit-card\">\n <Stripe priceCents={totalSumCents} {isPriceLoading} purchaseConfig={$pageOptsStore} bind:isLoading />\n </div>\n <div slot=\"cred-balance\">\n <CredenzaBalance\n {pricesByToken}\n totalPriceToken={totalSumToken}\n {isPriceLoading}\n purchaseConfig={$pageOptsStore}\n bind:isLoading\n />\n </div>\n</Payment>\n"],"names":["LockIcon","onClick","$.prop","$$props","text","disabled","isLoading","$$render","consequent","alternate","isActive","$$args","options","subtitle","onBackClick","isStripeDisabled","currencySymbol","activeTab","PaymentViews","isPriceLoading","totalSumCents","isCredezaValueDisabled","$0","$.untrack","$.get","consequent_2","consequent_1","user","title","isPaymentDisabled","totalToPay","isCardFocused","onPay","credAlias","onGetCred","formattedBalance","balance","__awaiter","thisArg","_arguments","generator","onMount","stripe","priceCents","paymentRequest","walletPayElement","stripeElements","event","doPayment","err","dispatch","PassportEvents","stripeStyles","loadScript","src","resolve","reject","script","getCompmletedOrderDetails","apiUrl","orderId","maxRetries","attempts","res","get","accessTokenStore","validateOrderItems","txs","orders","errorMessages","item","requestReceipt","hash","stripeChargeId","amount","currency","credenza","receiptTarget","clientId","configStore","targets","ReceiptTarget","successCount","target","result","getClientConfigByClientId","afterPaymentProcess","purchaseConfig","toastAlert","fn","config","failedOrdersMessage","TransactionTypes","userStore","analytics","getAddress","waitVideoEnded","pageOptsStore","pageStore","Pages","P","Stripe","$.mutable_source","isButtonActive","clientName","$.set","_a","cardElement","handleSubmit","processPayment","tokenId","totalPriceToken","pricesByToken","isBalanceLoading","symbol","contract","decimals","userAddress","signer","credContract","processPaymentItem","index","credenzaSellableMinAbi","credenzaSellableContract","ethers","tokenOrTypeId","priceToken","approveTx","sendContractTx","buyTx","getTxScanAddress","payWithCredenza","paymentPromises","chainId","_b","getCREDContract","provider","providerStore","getCryptoCurrencySymbol","close","totalSumToken","getTokenPrice","contractAddress","licenseType","content_abi","$providerStore","sellableContract","DEFAULT_TOKEN_ID","calculateTotalPrice","items","token","$contractsStore","$.mutate","unsub","store","_c","onDestroy","$configStore","$.await","node_1","module","$pageOptsStore"],"mappings":"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"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { N as s, R as y, M as h, bd as g, O as _, P as b, bM as u, b9 as k, a2 as P, bq as f } from "./index-D4uvwDRg.js";
|
|
2
|
-
import { g as O, r as w } from "./Payment-CRBMyumu.js";
|
|
3
|
-
const I = async (r) => {
|
|
4
|
-
const e = s(y), a = e.licenses?.map(
|
|
5
|
-
({
|
|
6
|
-
contractAddress: n,
|
|
7
|
-
contentTokenId: o,
|
|
8
|
-
licenseType: i
|
|
9
|
-
}) => ({
|
|
10
|
-
contract_address: n,
|
|
11
|
-
content_token_id: +o,
|
|
12
|
-
license_type: +i
|
|
13
|
-
})
|
|
14
|
-
) || [], t = e.tokens?.map(
|
|
15
|
-
({
|
|
16
|
-
contractAddress: n,
|
|
17
|
-
tokenId: o,
|
|
18
|
-
amount: i
|
|
19
|
-
}) => ({
|
|
20
|
-
contract_address: n,
|
|
21
|
-
token_id: +o,
|
|
22
|
-
amount: i
|
|
23
|
-
})
|
|
24
|
-
) || [], c = e.memberships?.map(({ contractAddress: n }) => ({
|
|
25
|
-
contract_address: n
|
|
26
|
-
})) || [], m = {
|
|
27
|
-
...r,
|
|
28
|
-
tokens: t,
|
|
29
|
-
memberships: c,
|
|
30
|
-
licenses: a
|
|
31
|
-
}, l = s(h), p = await fetch(l.credenza.evmApiUrl + "/contracts/buy-assets", {
|
|
32
|
-
headers: {
|
|
33
|
-
"Content-Type": "application/json",
|
|
34
|
-
Authorization: `Bearer ${s(g)}`
|
|
35
|
-
},
|
|
36
|
-
method: "POST",
|
|
37
|
-
body: JSON.stringify(m)
|
|
38
|
-
});
|
|
39
|
-
if (!p.ok) throw new Error("Failed to create order");
|
|
40
|
-
const { _id: d } = await p.json();
|
|
41
|
-
return d;
|
|
42
|
-
}, C = async (r) => {
|
|
43
|
-
const e = s(h), a = s(y), t = await O(e.credenza.generalApiUrl, r);
|
|
44
|
-
return t.payment_provider_tx && (await w({
|
|
45
|
-
stripeChargeId: t.payment_provider_tx,
|
|
46
|
-
title: a.title,
|
|
47
|
-
subtitle: a.subtitle
|
|
48
|
-
}), _(b.RECEIPT, { stripeChargeId: t.payment_provider_tx })), await u(t.items), t;
|
|
49
|
-
}, D = async (r) => {
|
|
50
|
-
const e = s(h), a = s(y), t = s(k), c = await P(), m = t?.email || t?.pending?.email, l = t?.phone || t?.pending?.phone, p = `Passport Payment: (${JSON.stringify({
|
|
51
|
-
...a.tokens,
|
|
52
|
-
...a.memberships,
|
|
53
|
-
userAddress: c,
|
|
54
|
-
chainId: e.chainId,
|
|
55
|
-
email: m,
|
|
56
|
-
phone: l
|
|
57
|
-
})})`, d = f(e.clientId).name, o = {
|
|
58
|
-
card_token: (e.stripe.pk[d] ?? e.stripe.pk.DEFAULT).includes("pk_live") ? r : "tok_visa",
|
|
59
|
-
client: d,
|
|
60
|
-
description: p,
|
|
61
|
-
address: c,
|
|
62
|
-
chain_id: Number(e.chainId),
|
|
63
|
-
currency: "USD"
|
|
64
|
-
}, i = await I(o);
|
|
65
|
-
return await C(i);
|
|
66
|
-
};
|
|
67
|
-
export {
|
|
68
|
-
D as processPayment
|
|
69
|
-
};
|
|
70
|
-
//# sourceMappingURL=Stripe.service-ByDQB0PM.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Stripe.service-ByDQB0PM.js","sources":["../src/app/pages/payment/order.service.ts","../src/app/pages/payment/stripe/Stripe.service.ts"],"sourcesContent":["import { get } from 'svelte/store'\nimport { pageOptsStore, accessTokenStore } from '@packages/stores'\nimport { requestReceipt } from './Payment.service'\nimport { attachMetadataToItems } from '@src/passport/blockchain'\nimport { configStore } from '@src/stores/config'\nimport { PassportEvents, dispatch } from '@lib/events/events'\nimport { getCompmletedOrderDetails } from '@lib/orders'\nimport { type TPaymentReturn } from '@packages/utils/types'\nimport type { TMembershipPaymentData, TBasicPaymentData, TTokenPaymentData, TLicensePaymentData } from './oders.types'\n\n\nexport const createOrder = async (body: TBasicPaymentData): Promise<string> => {\n const paymentOpts = get(pageOptsStore)\n\n const licensesPaymentData: TLicensePaymentData[] = paymentOpts.licenses?.map(\n ({\n contractAddress,\n contentTokenId,\n licenseType,\n }: {\n contractAddress: string\n contentTokenId: number\n licenseType: number\n }) => ({\n contract_address: contractAddress,\n content_token_id: +contentTokenId,\n license_type: +licenseType,\n }),\n ) || []\n\n const tokensPaymentData: TTokenPaymentData[] =\n paymentOpts.tokens?.map(\n ({\n contractAddress,\n tokenId,\n amount,\n }: {\n contractAddress: string\n tokenId: number\n amount: string | number\n }) => ({\n contract_address: contractAddress,\n token_id: +tokenId,\n amount,\n }),\n ) || []\n\n const membershipsPaymentData: TMembershipPaymentData[] =\n paymentOpts.memberships?.map(({ contractAddress }: { contractAddress: string }) => ({\n contract_address: contractAddress,\n })) || []\n\n const payload = {\n ...body,\n tokens: tokensPaymentData,\n memberships: membershipsPaymentData,\n licenses: licensesPaymentData\n }\n\n\n const config = get(configStore)\n const res = await fetch(config.credenza.evmApiUrl + '/contracts/buy-assets', {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${get(accessTokenStore)}`,\n },\n method: 'POST',\n body: JSON.stringify(payload),\n })\n if (!res.ok) throw new Error('Failed to create order')\n const { _id }: { _id: string } = await res.json()\n\n return _id\n}\n\nexport const processOrder = async (orderId: string): Promise<TPaymentReturn> => {\n const config = get(configStore)\n const paymentOpts = get(pageOptsStore)\n\n const data = (await getCompmletedOrderDetails(config.credenza.generalApiUrl, orderId)) as TPaymentReturn\n\n if (data.payment_provider_tx) {\n await requestReceipt({\n stripeChargeId: data.payment_provider_tx,\n title: paymentOpts.title,\n subtitle: paymentOpts.subtitle,\n })\n dispatch(PassportEvents.RECEIPT, { stripeChargeId: data.payment_provider_tx })\n }\n \n await attachMetadataToItems(data.items)\n return data\n}","import { get } from 'svelte/store'\nimport { userStore, pageOptsStore } from '@packages/stores'\nimport { getAddress } from '@src/passport/blockchain'\nimport { configStore } from '@src/stores/config'\nimport { getClientConfigByClientId } from '@lib/clients'\nimport { processOrder, createOrder } from '../order.service'\nimport type { TBasicPaymentData } from '../oders.types'\n\n\nexport const processPayment = async (stripeTokenId: string) => {\n const config = get(configStore)\n const paymentOpts = get(pageOptsStore)\n const user = get(userStore)\n const userAddress = await getAddress()\n\n const email = user?.email || user?.pending?.email\n const phone = user?.phone || user?.pending?.phone\n const description =\n 'Passport Payment: ' +\n `(${JSON.stringify({\n ...paymentOpts.tokens,\n ...paymentOpts.memberships,\n userAddress,\n chainId: config.chainId,\n email,\n phone,\n })})`\n\n const clientName = getClientConfigByClientId(config.clientId).name\n const stripePK = config.stripe.pk[clientName] ?? config.stripe.pk.DEFAULT\n const basicPaymentData: TBasicPaymentData = {\n card_token: stripePK.includes('pk_live') ? stripeTokenId : 'tok_visa',\n client: clientName,\n description,\n address: userAddress,\n chain_id: Number(config.chainId),\n currency: 'USD',\n }\n\n const order = await createOrder(basicPaymentData)\n return await processOrder(order)\n}\n"],"names":["createOrder","body","paymentOpts","get","pageOptsStore","licensesPaymentData","contractAddress","contentTokenId","licenseType","tokensPaymentData","tokenId","amount","membershipsPaymentData","payload","config","configStore","res","accessTokenStore","_id","processOrder","orderId","data","getCompmletedOrderDetails","requestReceipt","dispatch","PassportEvents","attachMetadataToItems","processPayment","stripeTokenId","user","userStore","userAddress","getAddress","email","phone","description","clientName","getClientConfigByClientId","basicPaymentData","order"],"mappings":";;AAWO,MAAMA,IAAc,OAAOC,MAA6C;AAC7E,QAAMC,IAAcC,EAAIC,CAAa,GAE/BC,IAA6CH,EAAY,UAAU;AAAA,IACrE,CAAC;AAAA,MACC,iBAAAI;AAAA,MACA,gBAAAC;AAAA,MACA,aAAAC;AAAA,IAAA,OAKK;AAAA,MACL,kBAAkBF;AAAA,MAClB,kBAAkB,CAACC;AAAA,MACnB,cAAc,CAACC;AAAA,IAAA;AAAA,EACjB,KACG,CAAA,GAEDC,IACJP,EAAY,QAAQ;AAAA,IAClB,CAAC;AAAA,MACC,iBAAAI;AAAA,MACA,SAAAI;AAAA,MACA,QAAAC;AAAA,IAAA,OAKK;AAAA,MACL,kBAAkBL;AAAA,MAClB,UAAU,CAACI;AAAA,MACX,QAAAC;AAAA,IAAA;AAAA,EACF,KACG,CAAA,GAEDC,IACJV,EAAY,aAAa,IAAI,CAAC,EAAE,iBAAAI,SAAoD;AAAA,IAClF,kBAAkBA;AAAA,EAAA,EAClB,KAAK,CAAA,GAEHO,IAAU;AAAA,IACd,GAAGZ;AAAA,IACH,QAAQQ;AAAA,IACR,aAAaG;AAAA,IACb,UAAUP;AAAA,EAAA,GAINS,IAASX,EAAIY,CAAW,GACxBC,IAAM,MAAM,MAAMF,EAAO,SAAS,YAAY,yBAAyB;AAAA,IAC3E,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,eAAe,UAAUX,EAAIc,CAAgB,CAAC;AAAA,IAAA;AAAA,IAEhD,QAAQ;AAAA,IACR,MAAM,KAAK,UAAUJ,CAAO;AAAA,EAAA,CAC7B;AACD,MAAI,CAACG,EAAI,GAAI,OAAM,IAAI,MAAM,wBAAwB;AACrD,QAAM,EAAE,KAAAE,EAAA,IAAyB,MAAMF,EAAI,KAAA;AAE3C,SAAOE;AACT,GAEaC,IAAe,OAAOC,MAA6C;AAC9E,QAAMN,IAASX,EAAIY,CAAW,GACxBb,IAAcC,EAAIC,CAAa,GAE/BiB,IAAQ,MAAMC,EAA0BR,EAAO,SAAS,eAAeM,CAAO;AAEpF,SAAIC,EAAK,wBACP,MAAME,EAAe;AAAA,IACnB,gBAAgBF,EAAK;AAAA,IACrB,OAAOnB,EAAY;AAAA,IACnB,UAAUA,EAAY;AAAA,EAAA,CACvB,GACDsB,EAASC,EAAe,SAAS,EAAE,gBAAgBJ,EAAK,qBAAqB,IAG/E,MAAMK,EAAsBL,EAAK,KAAK,GAC/BA;AACT,GCnFaM,IAAiB,OAAOC,MAA0B;AAC7D,QAAMd,IAASX,EAAIY,CAAW,GACxBb,IAAcC,EAAIC,CAAa,GAC/ByB,IAAO1B,EAAI2B,CAAS,GACpBC,IAAc,MAAMC,EAAA,GAEpBC,IAAQJ,GAAM,SAASA,GAAM,SAAS,OACtCK,IAAQL,GAAM,SAASA,GAAM,SAAS,OACtCM,IACJ,sBACI,KAAK,UAAU;AAAA,IACjB,GAAGjC,EAAY;AAAA,IACf,GAAGA,EAAY;AAAA,IACf,aAAA6B;AAAA,IACA,SAASjB,EAAO;AAAA,IAChB,OAAAmB;AAAA,IACA,OAAAC;AAAA,EAAA,CACD,CAAC,KAEEE,IAAaC,EAA0BvB,EAAO,QAAQ,EAAE,MAExDwB,IAAsC;AAAA,IAC1C,aAFexB,EAAO,OAAO,GAAGsB,CAAU,KAAKtB,EAAO,OAAO,GAAG,SAE3C,SAAS,SAAS,IAAIc,IAAgB;AAAA,IAC3D,QAAQQ;AAAA,IACR,aAAAD;AAAA,IACA,SAASJ;AAAA,IACT,UAAU,OAAOjB,EAAO,OAAO;AAAA,IAC/B,UAAU;AAAA,EAAA,GAGNyB,IAAQ,MAAMvC,EAAYsC,CAAgB;AAChD,SAAO,MAAMnB,EAAaoB,CAAK;AACjC;"}
|