@blocklet/payment-react
Version:
Reusable react components for payment kit v2
37 lines (36 loc) • 1.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.recoverStripeConfirmResult = recoverStripeConfirmResult;
const NETWORK_ERROR_PATTERN = /timeout|timed out|network|failed to fetch|connection/i;
function getErrorMessage(error) {
return error instanceof Error ? error.message : String(error);
}
async function recoverStripeConfirmResult(stripe, intentType, clientSecret, confirmError) {
const message = getErrorMessage(confirmError);
if (!NETWORK_ERROR_PATTERN.test(message)) {
return {
action: "failed",
message
};
}
const retrieveMethod = intentType === "payment_intent" ? "retrievePaymentIntent" : "retrieveSetupIntent";
try {
const result = await stripe[retrieveMethod](clientSecret);
const intent = result.paymentIntent || result.setupIntent;
if (intent && ["succeeded", "processing"].includes(intent.status)) {
return {
action: "complete"
};
}
return {
action: "failed",
message
};
} catch {
return {
action: "pending"
};
}
}