@micro-cms/crypto-payments 1.0.5 → 1.0.8

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/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import react__default from 'react';
3
- import { PaymentIntent, PaymentVerification } from '@micro-cms/types';
3
+ import { PaymentIntent, PaymentVerification, PaymentProvider } from '@micro-cms/types';
4
4
 
5
5
  interface SolanaWindow extends Window {
6
6
  solana?: {
@@ -50,6 +50,7 @@ interface PaymentWidgetProps {
50
50
  currency?: string;
51
51
  onSuccess?: (verification: PaymentVerification) => void;
52
52
  onError?: (error: Error) => void;
53
+ provider?: PaymentProvider;
53
54
  endpoints?: {
54
55
  initiate?: string;
55
56
  verify?: string;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import react__default from 'react';
3
- import { PaymentIntent, PaymentVerification } from '@micro-cms/types';
3
+ import { PaymentIntent, PaymentVerification, PaymentProvider } from '@micro-cms/types';
4
4
 
5
5
  interface SolanaWindow extends Window {
6
6
  solana?: {
@@ -50,6 +50,7 @@ interface PaymentWidgetProps {
50
50
  currency?: string;
51
51
  onSuccess?: (verification: PaymentVerification) => void;
52
52
  onError?: (error: Error) => void;
53
+ provider?: PaymentProvider;
53
54
  endpoints?: {
54
55
  initiate?: string;
55
56
  verify?: string;
package/dist/index.js CHANGED
@@ -218,6 +218,15 @@ var usePayment = (props) => {
218
218
  try {
219
219
  setStatus("initiating");
220
220
  setError(null);
221
+ if (props.provider) {
222
+ const data2 = await props.provider.initiatePayment(props.orderId, {
223
+ amount: props.amount,
224
+ currency: props.currency
225
+ });
226
+ setIntent(data2);
227
+ setStatus("pending_signature");
228
+ return;
229
+ }
221
230
  const response = await fetch(props.endpoints?.initiate || "/api/orders/initiate", {
222
231
  method: "POST",
223
232
  headers: { "Content-Type": "application/json" },
@@ -239,10 +248,20 @@ var usePayment = (props) => {
239
248
  setStatus("error");
240
249
  props.onError?.(err);
241
250
  }
242
- }, [props.endpoints?.initiate, props.orderId, props.amount, props.currency, props.onError]);
251
+ }, [props.provider, props.endpoints?.initiate, props.orderId, props.amount, props.currency, props.onError]);
243
252
  const verify = (0, import_react.useCallback)(async (txHash) => {
244
253
  try {
245
254
  setStatus("verifying");
255
+ if (props.provider) {
256
+ const data2 = await props.provider.verifyPayment(txHash, props.orderId);
257
+ if (data2.status === "confirmed") {
258
+ setStatus("success");
259
+ props.onSuccess?.(data2);
260
+ } else {
261
+ throw new Error("Payment not confirmed yet, status: " + data2.status);
262
+ }
263
+ return;
264
+ }
246
265
  const response = await fetch(props.endpoints?.verify || "/api/orders/verify-payment", {
247
266
  method: "POST",
248
267
  headers: { "Content-Type": "application/json" },
@@ -267,7 +286,7 @@ var usePayment = (props) => {
267
286
  setStatus("error");
268
287
  props.onError?.(err);
269
288
  }
270
- }, [props.endpoints?.verify, props.orderId, props.onSuccess, props.onError]);
289
+ }, [props.provider, props.endpoints?.verify, props.orderId, props.onSuccess, props.onError]);
271
290
  const { isAvailable: isSolanaAvailable, connect: connectSolana, sendPayment: sendSolanaPayment } = useSolanaWallet();
272
291
  const handleSolanaPay = async () => {
273
292
  try {
package/dist/index.mjs CHANGED
@@ -191,6 +191,15 @@ var usePayment = (props) => {
191
191
  try {
192
192
  setStatus("initiating");
193
193
  setError(null);
194
+ if (props.provider) {
195
+ const data2 = await props.provider.initiatePayment(props.orderId, {
196
+ amount: props.amount,
197
+ currency: props.currency
198
+ });
199
+ setIntent(data2);
200
+ setStatus("pending_signature");
201
+ return;
202
+ }
194
203
  const response = await fetch(props.endpoints?.initiate || "/api/orders/initiate", {
195
204
  method: "POST",
196
205
  headers: { "Content-Type": "application/json" },
@@ -212,10 +221,20 @@ var usePayment = (props) => {
212
221
  setStatus("error");
213
222
  props.onError?.(err);
214
223
  }
215
- }, [props.endpoints?.initiate, props.orderId, props.amount, props.currency, props.onError]);
224
+ }, [props.provider, props.endpoints?.initiate, props.orderId, props.amount, props.currency, props.onError]);
216
225
  const verify = useCallback(async (txHash) => {
217
226
  try {
218
227
  setStatus("verifying");
228
+ if (props.provider) {
229
+ const data2 = await props.provider.verifyPayment(txHash, props.orderId);
230
+ if (data2.status === "confirmed") {
231
+ setStatus("success");
232
+ props.onSuccess?.(data2);
233
+ } else {
234
+ throw new Error("Payment not confirmed yet, status: " + data2.status);
235
+ }
236
+ return;
237
+ }
219
238
  const response = await fetch(props.endpoints?.verify || "/api/orders/verify-payment", {
220
239
  method: "POST",
221
240
  headers: { "Content-Type": "application/json" },
@@ -240,7 +259,7 @@ var usePayment = (props) => {
240
259
  setStatus("error");
241
260
  props.onError?.(err);
242
261
  }
243
- }, [props.endpoints?.verify, props.orderId, props.onSuccess, props.onError]);
262
+ }, [props.provider, props.endpoints?.verify, props.orderId, props.onSuccess, props.onError]);
244
263
  const { isAvailable: isSolanaAvailable, connect: connectSolana, sendPayment: sendSolanaPayment } = useSolanaWallet();
245
264
  const handleSolanaPay = async () => {
246
265
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micro-cms/crypto-payments",
3
- "version": "1.0.5",
3
+ "version": "1.0.8",
4
4
  "description": "Composable Crypto Payment Widget for Micro-CMS",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",