Files
discord-decomp/modules/billing/actions/HandleConfirmPaymentRegistry.tsx
T
2026-11-01 12:12:55 +02:00

352 lines
11 KiB
TypeScript

// Metro module 4519 (f4520).
import { Endpoints, REDIRECTED_PAYMENT_SOURCES } from "../../../Constants";
import { PaymentSourceTypes } from "../../../_bundle/Module505";
import { dispatchConfirmationError, popupBridgeState } from "./BillingSharedActionCreators";
import * as _StripeUtils from "../../../utils/StripeUtils";
import { HTTP, getAPIBaseURL } from "../../../_bundle/sendRequest";
let c2727_6, c2727_7;
const r24 = {};
r24[PaymentSourceTypes.GIROPAY] = {
confirmationType: "stripe_redirect_confirmation",
constructStripeConfirmPaymentHandler: (a0) => ({
stripeConfirmPayment: a0.stripe.confirmGiropayPayment,
paymentMethod: {
billing_details: {
name: a0.paymentSource.billingAddress.name
}
}
})
};
r24[PaymentSourceTypes.SOFORT] = {
confirmationType: "stripe_redirect_confirmation",
constructStripeConfirmPaymentHandler: (a0) => {
const paymentSource = a0.paymentSource;
return {
stripeConfirmPayment: a0.stripe.confirmSofortPayment,
paymentMethod: {
sofort: {
country: paymentSource.billingAddress.country
},
billing_details: {
name: paymentSource.billingAddress.name,
email: paymentSource.email
}
}
};
}
};
r24[PaymentSourceTypes.PRZELEWY24] = {
confirmationType: "stripe_redirect_confirmation",
constructStripeConfirmPaymentHandler: ({ paymentSource, stripe }) => {
if (paymentSource.bank == null) {
throw dispatchConfirmationError(`PaymentSource (${paymentSource.id}) missing bank info for p24.`);
}
return {
stripeConfirmPayment: stripe.confirmP24Payment,
paymentMethod: {
p24: {
bank: paymentSource.bank
},
billing_details: {
name: paymentSource.billingAddress.name,
email: paymentSource.email
}
}
};
}
};
r24[PaymentSourceTypes.BANCONTACT] = {
confirmationType: "stripe_redirect_confirmation",
constructStripeConfirmPaymentHandler: (a0) => {
const paymentSource = a0.paymentSource;
return {
stripeConfirmPayment: a0.stripe.confirmBancontactPayment,
paymentMethod: {
billing_details: {
name: paymentSource.billingAddress.name,
email: paymentSource.email
}
}
};
}
};
r24[PaymentSourceTypes.EPS] = {
confirmationType: "stripe_redirect_confirmation",
constructStripeConfirmPaymentHandler: ({ paymentSource, stripe }) => {
if (paymentSource.bank == null) {
throw dispatchConfirmationError(`PaymentSource (${paymentSource.id}) missing bank info for EPS.`);
}
return {
stripeConfirmPayment: stripe.confirmEpsPayment,
paymentMethod: {
eps: {
bank: paymentSource.bank
},
billing_details: {
name: paymentSource.billingAddress.name
}
}
};
}
};
r24[PaymentSourceTypes.IDEAL] = {
confirmationType: "stripe_redirect_confirmation",
constructStripeConfirmPaymentHandler: ({ paymentSource, stripe }) => {
const paymentMethod = {
ideal: {},
billing_details: {
name: paymentSource.billingAddress.name
}
};
if (paymentSource.bank != null) {
paymentMethod.ideal = {
bank: paymentSource.bank
};
}
return {
stripeConfirmPayment: stripe.confirmIdealPayment,
paymentMethod
};
}
};
c2727_6 = r24;
const r42 = {};
r42[PaymentSourceTypes.SEPA_DEBIT] = {
confirmationType: "stripe_direct_confirmation",
constructStripeConfirmPaymentHandler: ({ stripe, paymentMethodId: paymentMethodId4 }) => {
if (paymentMethodId4 == null) {
throw dispatchConfirmationError("On a sepa payment payment method id cannot be null");
}
return {
stripeConfirmPayment: stripe.confirmSepaDebitPayment,
paymentMethod: paymentMethodId4
};
}
};
r42[PaymentSourceTypes.PIX] = {
confirmationType: "stripe_direct_confirmation",
constructStripeConfirmPaymentHandler: (a0) => ({
stripeConfirmPayment: a0.stripe.confirmPixPayment,
paymentMethod: a0.paymentMethodId,
pendingCustomerAction: true
})
};
c2727_7 = r42;
class PaymentConfirmationHandler {
constructor(a0, a1) {
this.paymentSource = a0;
this.payment = a1;
this.paymentSourceType = a0.type;
this.paymentId = a1.payment_id;
}
performRedirect(a0) {
window.open(a0);
}
}
export { c2727_6 as STRIPE_REDIRECTED_PAYMENT_METHOD_REGISTRY };
export function getIsStripeRedirectedPaymentSource(a0) {
return REDIRECTED_PAYMENT_SOURCES.has(a0) && a0 in c2727_6;
}
export { c2727_7 as STRIPE_DIRECT_CONFIRM_PAYMENT_METHOD_REGISTRY };
export function getIsStripeDirectConfirmationPaymentSource(a0) {
return a0 in c2727_7;
}
class StripePaymentConfirmationHandler extends PaymentConfirmationHandler {
constructor(a0, a1) {
if (a0 == null) {
throw dispatchConfirmationError("Payment source cannot be null on a redirect.");
}
super(a0, a1);
this.stripe = null;
const paymentSourceType = this.paymentSourceType;
if (REDIRECTED_PAYMENT_SOURCES.has(paymentSourceType) && paymentSourceType in c2727_6) {
this.handlerRegistry = c2727_6[this.paymentSourceType];
} else {
if (!(this.paymentSourceType in c2727_7)) {
throw dispatchConfirmationError("Invalid Payment Source Type - redirect or direct confirmation handlers not found.");
}
this.handlerRegistry = c2727_7[this.paymentSourceType];
}
}
async getStripe() {
let stripe;
const _this = this;
let _this7, c25235_1;
L17: {
c25235_1 = void 0;
if (_this.stripe == null) {
_this7 = _this;
_this7.stripe = await _StripeUtils.getStripe();
if (_this.stripe == null) {
throw dispatchConfirmationError("Stripe cannot be null on a redirect.");
}
stripe = _this.stripe;
break L17;
}
if (_this.stripe == null) {
throw dispatchConfirmationError("Stripe cannot be null on a redirect.");
}
return _this.stripe;
}
return stripe;
}
async getPaymentIntentInfo() {
const _this2 = this;
let c29403_0 = (await HTTP.get({
url: Endpoints.BILLING_STRIPE_PAYMENT_INTENTS(_this2.paymentId),
oldFormErrors: true,
rejectWithError: true
})).body;
return {
clientSecret: c29403_0.stripe_payment_intent_client_secret,
paymentMethodId: c29403_0.stripe_payment_intent_payment_method_id
};
}
async getStripeRedirect({ clientSecret, state, paymentMethodId }) {
const _this3 = this;
let c25237_2;
c25237_2 = void 0;
let c29404_0 = await _this3.getStripe();
let c29404_1 = _this3.handlerRegistry.constructStripeConfirmPaymentHandler({
stripe: c29404_0,
paymentSource: _this3.paymentSource,
paymentMethodId
});
let c29404_2 = c29404_1.stripeConfirmPayment;
let c29404_3 = c29404_1.paymentMethod;
const aPIBaseURL = getAPIBaseURL();
const paymentSourceType = _this3.paymentSourceType;
let c25237_0 = state;
if (state == null) {
c25237_0 = "";
}
let c29404_4 = await c29404_2(clientSecret, {
payment_method: c29404_3,
return_url: aPIBaseURL + Endpoints.BILLING_POPUP_BRIDGE_CALLBACK_REDIRECT_PREFIX(paymentSourceType, c25237_0, "success")
}, {
handleActions: false
});
let c29404_5 = c29404_4.paymentIntent;
let c29404_6 = c29404_4.error;
if (c29404_6 != null) {
throw dispatchConfirmationError(c29404_6);
}
if (c29404_5 == null) {
throw dispatchConfirmationError("paymentIntent not available with successful api call");
}
const next_action = c29404_5.next_action;
if ((next_action == null ? void 0 : next_action.redirect_to_url?.url) == null) {
throw dispatchConfirmationError("confirm payment did not return a redirect url");
}
return c29404_5.next_action.redirect_to_url.url;
}
async confirmRedirectedPaymentSource({ clientSecret: clientSecret2, paymentMethodId: paymentMethodId2 }) {
const _this4 = this;
let c25238_1;
c25238_1 = void 0;
let c29405_0 = await popupBridgeState(_this4.paymentSourceType);
let c29405_1 = await _this4.getStripeRedirect({
clientSecret: clientSecret2,
state: c29405_0,
paymentMethodId: paymentMethodId2
});
_this4.performRedirect(c29405_1);
}
async confirmDirectPaymentSource({ clientSecret: clientSecret3, paymentMethodId: paymentMethodId3 }) {
const _this5 = this;
let c25239_1;
c25239_1 = void 0;
let c29406_0 = await _this5.getStripe();
let c29406_1 = _this5.handlerRegistry.constructStripeConfirmPaymentHandler({
stripe: c29406_0,
paymentSource: _this5.paymentSource,
paymentMethodId: paymentMethodId3
});
let c29406_2 = c29406_1.stripeConfirmPayment;
let c29406_3 = c29406_1.paymentMethod;
let c29406_4 = c29406_1.pendingCustomerAction;
let c29406_5 = await (0, c29406_2)(clientSecret3, {
payment_method: c29406_3
});
let c29406_6 = c29406_5.paymentIntent;
let c29406_7 = c29406_5.error;
if (c29406_7 != null) {
throw dispatchConfirmationError(c29406_7);
}
if (c29406_6 == null) {
throw dispatchConfirmationError("paymentIntent not available with successful stripe call");
}
return {
pendingCustomerAction: c29406_4,
customerActionCancelled: c29406_6.status === "requires_action"
};
}
async confirmPayment() {
const _this6 = this;
let c25240_1;
let c29407_0, c29407_1, c29407_2, c29407_3;
L15: {
c25240_1 = void 0;
c29407_0 = void 0;
c29407_1 = void 0;
c29407_2 = void 0;
c29407_3 = void 0;
c29407_0 = await _this6.getPaymentIntentInfo();
c29407_1 = c29407_0.clientSecret;
c29407_2 = c29407_0.paymentMethodId;
if (_this6.handlerRegistry.confirmationType === "stripe_redirect_confirmation") {
await _this6.confirmRedirectedPaymentSource({
clientSecret: c29407_1,
paymentMethodId: c29407_2
});
break L15;
}
c29407_3 = await _this6.confirmDirectPaymentSource({
clientSecret: c29407_1,
paymentMethodId: c29407_2
});
return {
redirectConfirmation: false,
pendingCustomerAction: c29407_3.pendingCustomerAction,
customerActionCancelled: c29407_3.customerActionCancelled
};
}
return {
redirectConfirmation: true
};
}
}
export { StripePaymentConfirmationHandler };
class AdyenPaymentConfirmationHandler extends PaymentConfirmationHandler {
constructor(a0, a1) {
if (a0 == null) {
throw dispatchConfirmationError("Payment source cannot be null on a redirect.");
}
super(a0, a1);
}
handleAdyenConfirmation() {
let r10;
const adyen_redirect_url = this.payment.adyen_redirect_url;
if (adyen_redirect_url == null) {
throw dispatchConfirmationError("redirect url cannot be null on a redirect for adyen.");
}
if (REDIRECTED_PAYMENT_SOURCES.has(this.paymentSource.type)) {
this.performRedirect(adyen_redirect_url);
r10 = {
redirectConfirmation: true,
redirectURL: adyen_redirect_url
};
} else {
r10 = {
redirectConfirmation: false,
redirectURL: adyen_redirect_url
};
}
return r10;
}
confirmPayment() {
return Promise.resolve(this.handleAdyenConfirmation());
}
}
export { AdyenPaymentConfirmationHandler };