vendure-plugin-nowpayments
Version:
A cryptocurrency payment gateway plugin for Vendure that integrates with NOWPayments.io, enabling your store to accept payments in Bitcoin, Ethereum, and 100+ other cryptocurrencies.
72 lines (71 loc) • 2.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "nowPaymentsPaymentHandler", {
enumerable: true,
get: function() {
return nowPaymentsPaymentHandler;
}
});
const _core = require("@vendure/core");
const _nowpaymentsservice = require("./nowpayments.service");
let nowPaymentsService;
const nowPaymentsPaymentHandler = new _core.PaymentMethodHandler({
code: 'nowpayments',
description: [
{
languageCode: _core.LanguageCode.en,
value: 'NOWPayments Cryptocurrency Payment Gateway'
}
],
args: {},
init (injector) {
nowPaymentsService = injector.get(_nowpaymentsservice.NOWPaymentsService);
},
createPayment: async (ctx, order, amount, args, metadata)=>{
try {
// Check if a NOWPayments payment already exists for this order
const existingPayment = order.payments.find((p)=>p.method === 'nowpayments' && p.state === 'Authorized');
if (existingPayment) {
// If payment already exists, return the existing payment state
return {
amount: existingPayment.amount,
state: existingPayment.state,
metadata: existingPayment.metadata
};
}
// Generate payment URL based on configuration
const redirectUrl = nowPaymentsService.useInvoices ? await nowPaymentsService.generateInvoiceUrl(ctx, order) : await nowPaymentsService.generatePaymentUrl(ctx, order);
const orderId = nowPaymentsService.invoicePrefix + order.code;
return {
amount: amount,
state: 'Authorized',
metadata: {
public: {
redirectUrl
},
orderId: order.id,
paymentMethod: 'nowpayments',
nowPaymentsOrderId: orderId
}
};
} catch (err) {
return {
amount: amount,
state: 'Declined',
metadata: {
errorMessage: err.message
}
};
}
},
settlePayment: async (ctx, order, payment, args)=>{
// For NOWPayments, we don't settle immediately
// The payment is settled via IPN callback
return {
success: true
};
}
});
//# sourceMappingURL=nowpayments-payment.handler.js.map