type Stripe = {
token: string;
};
/**
* Post setup intents intent confirm
* Confirm that your customer intends to set up the current or
provided payment method.
*/
export async function main(
auth: Stripe,
intent: string,
body: {
client_secret?: string;
expand?: string[];
mandate_data?:
| {
customer_acceptance: {
accepted_at?: number;
offline?: { [k: string]: unknown };
online?: {
ip_address: string;
user_agent: string;
[k: string]: unknown;
};
type: "offline" | "online";
[k: string]: unknown;
};
[k: string]: unknown;
}
| ""
| {
customer_acceptance: {
online: {
ip_address?: string;
user_agent?: string;
[k: string]: unknown;
};
type: "online";
[k: string]: unknown;
};
[k: string]: unknown;
};
payment_method?: string;
payment_method_data?: {
acss_debit?: {
account_number: string;
institution_number: string;
transit_number: string;
[k: string]: unknown;
};
affirm?: { [k: string]: unknown };
afterpay_clearpay?: { [k: string]: unknown };
alipay?: { [k: string]: unknown };
au_becs_debit?: {
account_number: string;
bsb_number: string;
[k: string]: unknown;
};
bacs_debit?: {
account_number?: string;
sort_code?: string;
[k: string]: unknown;
};
bancontact?: { [k: string]: unknown };
billing_details?: {
address?:
| {
city?: string;
country?: string;
line1?: string;
line2?: string;
postal_code?: string;
state?: string;
[k: string]: unknown;
}
| "";
email?: string | "";
name?: string | "";
phone?: string | "";
[k: string]: unknown;
};
blik?: { [k: string]: unknown };
boleto?: { tax_id: string; [k: string]: unknown };
cashapp?: { [k: string]: unknown };
customer_balance?: { [k: string]: unknown };
eps?: {
bank?:
| "arzte_und_apotheker_bank"
| "austrian_anadi_bank_ag"
| "bank_austria"
| "bankhaus_carl_spangler"
| "bankhaus_schelhammer_und_schattera_ag"
| "bawag_psk_ag"
| "bks_bank_ag"
| "brull_kallmus_bank_ag"
| "btv_vier_lander_bank"
| "capital_bank_grawe_gruppe_ag"
| "deutsche_bank_ag"
| "dolomitenbank"
| "easybank_ag"
| "erste_bank_und_sparkassen"
| "hypo_alpeadriabank_international_ag"
| "hypo_bank_burgenland_aktiengesellschaft"
| "hypo_noe_lb_fur_niederosterreich_u_wien"
| "hypo_oberosterreich_salzburg_steiermark"
| "hypo_tirol_bank_ag"
| "hypo_vorarlberg_bank_ag"
| "marchfelder_bank"
| "oberbank_ag"
| "raiffeisen_bankengruppe_osterreich"
| "schoellerbank_ag"
| "sparda_bank_wien"
| "volksbank_gruppe"
| "volkskreditbank_ag"
| "vr_bank_braunau";
[k: string]: unknown;
};
fpx?: {
bank:
| "affin_bank"
| "agrobank"
| "alliance_bank"
| "ambank"
| "bank_islam"
| "bank_muamalat"
| "bank_of_china"
| "bank_rakyat"
| "bsn"
| "cimb"
| "deutsche_bank"
| "hong_leong_bank"
| "hsbc"
| "kfh"
| "maybank2e"
| "maybank2u"
| "ocbc"
| "pb_enterprise"
| "public_bank"
| "rhb"
| "standard_chartered"
| "uob";
[k: string]: unknown;
};
giropay?: { [k: string]: unknown };
grabpay?: { [k: string]: unknown };
ideal?: {
bank?:
| "abn_amro"
| "asn_bank"
| "bunq"
| "handelsbanken"
| "ing"
| "knab"
| "moneyou"
| "n26"
| "nn"
| "rabobank"
| "regiobank"
| "revolut"
| "sns_bank"
| "triodos_bank"
| "van_lanschot"
| "yoursafe";
[k: string]: unknown;
};
interac_present?: { [k: string]: unknown };
klarna?: {
dob?: {
day: number;
month: number;
year: number;
[k: string]: unknown;
};
[k: string]: unknown;
};
konbini?: { [k: string]: unknown };
link?: { [k: string]: unknown };
metadata?: { [k: string]: string };
oxxo?: { [k: string]: unknown };
p24?: {
bank?:
| "alior_bank"
| "bank_millennium"
| "bank_nowy_bfg_sa"
| "bank_pekao_sa"
| "banki_spbdzielcze"
| "blik"
| "bnp_paribas"
| "boz"
| "citi_handlowy"
| "credit_agricole"
| "envelobank"
| "etransfer_pocztowy24"
| "getin_bank"
| "ideabank"
| "ing"
| "inteligo"
| "mbank_mtransfer"
| "nest_przelew"
| "noble_pay"
| "pbac_z_ipko"
| "plus_bank"
| "santander_przelew24"
| "tmobile_usbugi_bankowe"
| "toyota_bank"
| "velobank"
| "volkswagen_bank";
[k: string]: unknown;
};
paynow?: { [k: string]: unknown };
paypal?: { [k: string]: unknown };
pix?: { [k: string]: unknown };
promptpay?: { [k: string]: unknown };
radar_options?: { session?: string; [k: string]: unknown };
revolut_pay?: { [k: string]: unknown };
sepa_debit?: { iban: string; [k: string]: unknown };
sofort?: {
country: "AT" | "BE" | "DE" | "ES" | "IT" | "NL";
[k: string]: unknown;
};
swish?: { [k: string]: unknown };
type:
| "acss_debit"
| "affirm"
| "afterpay_clearpay"
| "alipay"
| "au_becs_debit"
| "bacs_debit"
| "bancontact"
| "blik"
| "boleto"
| "cashapp"
| "customer_balance"
| "eps"
| "fpx"
| "giropay"
| "grabpay"
| "ideal"
| "klarna"
| "konbini"
| "link"
| "oxxo"
| "p24"
| "paynow"
| "paypal"
| "pix"
| "promptpay"
| "revolut_pay"
| "sepa_debit"
| "sofort"
| "swish"
| "us_bank_account"
| "wechat_pay"
| "zip";
us_bank_account?: {
account_holder_type?: "company" | "individual";
account_number?: string;
account_type?: "checking" | "savings";
financial_connections_account?: string;
routing_number?: string;
[k: string]: unknown;
};
wechat_pay?: { [k: string]: unknown };
zip?: { [k: string]: unknown };
[k: string]: unknown;
};
payment_method_options?: {
acss_debit?: {
currency?: "cad" | "usd";
mandate_options?: {
custom_mandate_url?: string | "";
default_for?: ("invoice" | "subscription")[];
interval_description?: string;
payment_schedule?: "combined" | "interval" | "sporadic";
transaction_type?: "business" | "personal";
[k: string]: unknown;
};
verification_method?: "automatic" | "instant" | "microdeposits";
[k: string]: unknown;
};
card?: {
mandate_options?: {
amount: number;
amount_type: "fixed" | "maximum";
currency: string;
description?: string;
end_date?: number;
interval: "day" | "month" | "sporadic" | "week" | "year";
interval_count?: number;
reference: string;
start_date: number;
supported_types?: "india"[];
[k: string]: unknown;
};
network?:
| "amex"
| "cartes_bancaires"
| "diners"
| "discover"
| "eftpos_au"
| "interac"
| "jcb"
| "mastercard"
| "unionpay"
| "unknown"
| "visa";
request_three_d_secure?: "any" | "automatic" | "challenge";
three_d_secure?: {
ares_trans_status?: "A" | "C" | "I" | "N" | "R" | "U" | "Y";
cryptogram?: string;
electronic_commerce_indicator?: "01" | "02" | "05" | "06" | "07";
network_options?: {
cartes_bancaires?: {
cb_avalgo: "0" | "1" | "2" | "3" | "4" | "A";
cb_exemption?: string;
cb_score?: number;
[k: string]: unknown;
};
[k: string]: unknown;
};
requestor_challenge_indicator?: string;
transaction_id?: string;
version?: "1.0.2" | "2.1.0" | "2.2.0";
[k: string]: unknown;
};
[k: string]: unknown;
};
link?: { [k: string]: unknown };
paypal?: { billing_agreement_id?: string; [k: string]: unknown };
sepa_debit?: {
mandate_options?: { [k: string]: unknown };
[k: string]: unknown;
};
us_bank_account?: {
financial_connections?: {
permissions?: (
| "balances"
| "ownership"
| "payment_method"
| "transactions"
)[];
prefetch?: ("balances" | "transactions")[];
return_url?: string;
[k: string]: unknown;
};
mandate_options?: {
collection_method?: "" | "paper";
[k: string]: unknown;
};
networks?: {
requested?: ("ach" | "us_domestic_wire")[];
[k: string]: unknown;
};
verification_method?: "automatic" | "instant" | "microdeposits";
[k: string]: unknown;
};
[k: string]: unknown;
};
return_url?: string;
use_stripe_sdk?: boolean;
}
) {
const url = new URL(
`https://api.stripe.com/v1/setup_intents/${intent}/confirm`
);
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Authorization: "Bearer " + auth.token,
},
body: encodeParams(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
function encodeParams(o: any) {
function iter(o: any, path: string) {
if (Array.isArray(o)) {
o.forEach(function (a) {
iter(a, path + "[]");
});
return;
}
if (o !== null && typeof o === "object") {
Object.keys(o).forEach(function (k) {
iter(o[k], path + "[" + k + "]");
});
return;
}
data.push(path + "=" + o);
}
const data: string[] = [];
Object.keys(o).forEach(function (k) {
if (o[k] !== undefined) {
iter(o[k], k);
}
});
return new URLSearchParams(data.join("&"));
}
Submitted by hugo697 368 days ago
type Stripe = {
token: string;
};
/**
* Post setup intents intent confirm
* Confirm that your customer intends to set up the current or
provided payment method.
*/
export async function main(
auth: Stripe,
intent: string,
body: {
client_secret?: string;
expand?: string[];
mandate_data?:
| {
customer_acceptance: {
accepted_at?: number;
offline?: { [k: string]: unknown };
online?: {
ip_address: string;
user_agent: string;
[k: string]: unknown;
};
type: "offline" | "online";
[k: string]: unknown;
};
[k: string]: unknown;
}
| ""
| {
customer_acceptance: {
online: {
ip_address?: string;
user_agent?: string;
[k: string]: unknown;
};
type: "online";
[k: string]: unknown;
};
[k: string]: unknown;
};
payment_method?: string;
payment_method_data?: {
acss_debit?: {
account_number: string;
institution_number: string;
transit_number: string;
[k: string]: unknown;
};
affirm?: { [k: string]: unknown };
afterpay_clearpay?: { [k: string]: unknown };
alipay?: { [k: string]: unknown };
au_becs_debit?: {
account_number: string;
bsb_number: string;
[k: string]: unknown;
};
bacs_debit?: {
account_number?: string;
sort_code?: string;
[k: string]: unknown;
};
bancontact?: { [k: string]: unknown };
billing_details?: {
address?:
| {
city?: string;
country?: string;
line1?: string;
line2?: string;
postal_code?: string;
state?: string;
[k: string]: unknown;
}
| "";
email?: string | "";
name?: string | "";
phone?: string | "";
[k: string]: unknown;
};
blik?: { [k: string]: unknown };
boleto?: { tax_id: string; [k: string]: unknown };
cashapp?: { [k: string]: unknown };
customer_balance?: { [k: string]: unknown };
eps?: {
bank?:
| "arzte_und_apotheker_bank"
| "austrian_anadi_bank_ag"
| "bank_austria"
| "bankhaus_carl_spangler"
| "bankhaus_schelhammer_und_schattera_ag"
| "bawag_psk_ag"
| "bks_bank_ag"
| "brull_kallmus_bank_ag"
| "btv_vier_lander_bank"
| "capital_bank_grawe_gruppe_ag"
| "deutsche_bank_ag"
| "dolomitenbank"
| "easybank_ag"
| "erste_bank_und_sparkassen"
| "hypo_alpeadriabank_international_ag"
| "hypo_bank_burgenland_aktiengesellschaft"
| "hypo_noe_lb_fur_niederosterreich_u_wien"
| "hypo_oberosterreich_salzburg_steiermark"
| "hypo_tirol_bank_ag"
| "hypo_vorarlberg_bank_ag"
| "marchfelder_bank"
| "oberbank_ag"
| "raiffeisen_bankengruppe_osterreich"
| "schoellerbank_ag"
| "sparda_bank_wien"
| "volksbank_gruppe"
| "volkskreditbank_ag"
| "vr_bank_braunau";
[k: string]: unknown;
};
fpx?: {
bank:
| "affin_bank"
| "agrobank"
| "alliance_bank"
| "ambank"
| "bank_islam"
| "bank_muamalat"
| "bank_of_china"
| "bank_rakyat"
| "bsn"
| "cimb"
| "deutsche_bank"
| "hong_leong_bank"
| "hsbc"
| "kfh"
| "maybank2e"
| "maybank2u"
| "ocbc"
| "pb_enterprise"
| "public_bank"
| "rhb"
| "standard_chartered"
| "uob";
[k: string]: unknown;
};
giropay?: { [k: string]: unknown };
grabpay?: { [k: string]: unknown };
ideal?: {
bank?:
| "abn_amro"
| "asn_bank"
| "bunq"
| "handelsbanken"
| "ing"
| "knab"
| "moneyou"
| "n26"
| "nn"
| "rabobank"
| "regiobank"
| "revolut"
| "sns_bank"
| "triodos_bank"
| "van_lanschot"
| "yoursafe";
[k: string]: unknown;
};
interac_present?: { [k: string]: unknown };
klarna?: {
dob?: {
day: number;
month: number;
year: number;
[k: string]: unknown;
};
[k: string]: unknown;
};
konbini?: { [k: string]: unknown };
link?: { [k: string]: unknown };
metadata?: { [k: string]: string };
oxxo?: { [k: string]: unknown };
p24?: {
bank?:
| "alior_bank"
| "bank_millennium"
| "bank_nowy_bfg_sa"
| "bank_pekao_sa"
| "banki_spbdzielcze"
| "blik"
| "bnp_paribas"
| "boz"
| "citi_handlowy"
| "credit_agricole"
| "envelobank"
| "etransfer_pocztowy24"
| "getin_bank"
| "ideabank"
| "ing"
| "inteligo"
| "mbank_mtransfer"
| "nest_przelew"
| "noble_pay"
| "pbac_z_ipko"
| "plus_bank"
| "santander_przelew24"
| "tmobile_usbugi_bankowe"
| "toyota_bank"
| "velobank"
| "volkswagen_bank";
[k: string]: unknown;
};
paynow?: { [k: string]: unknown };
paypal?: { [k: string]: unknown };
pix?: { [k: string]: unknown };
promptpay?: { [k: string]: unknown };
radar_options?: { session?: string; [k: string]: unknown };
revolut_pay?: { [k: string]: unknown };
sepa_debit?: { iban: string; [k: string]: unknown };
sofort?: {
country: "AT" | "BE" | "DE" | "ES" | "IT" | "NL";
[k: string]: unknown;
};
swish?: { [k: string]: unknown };
type:
| "acss_debit"
| "affirm"
| "afterpay_clearpay"
| "alipay"
| "au_becs_debit"
| "bacs_debit"
| "bancontact"
| "blik"
| "boleto"
| "cashapp"
| "customer_balance"
| "eps"
| "fpx"
| "giropay"
| "grabpay"
| "ideal"
| "klarna"
| "konbini"
| "link"
| "oxxo"
| "p24"
| "paynow"
| "paypal"
| "pix"
| "promptpay"
| "revolut_pay"
| "sepa_debit"
| "sofort"
| "swish"
| "us_bank_account"
| "wechat_pay"
| "zip";
us_bank_account?: {
account_holder_type?: "company" | "individual";
account_number?: string;
account_type?: "checking" | "savings";
financial_connections_account?: string;
routing_number?: string;
[k: string]: unknown;
};
wechat_pay?: { [k: string]: unknown };
zip?: { [k: string]: unknown };
[k: string]: unknown;
};
payment_method_options?: {
acss_debit?: {
currency?: "cad" | "usd";
mandate_options?: {
custom_mandate_url?: string | "";
default_for?: ("invoice" | "subscription")[];
interval_description?: string;
payment_schedule?: "combined" | "interval" | "sporadic";
transaction_type?: "business" | "personal";
[k: string]: unknown;
};
verification_method?: "automatic" | "instant" | "microdeposits";
[k: string]: unknown;
};
card?: {
mandate_options?: {
amount: number;
amount_type: "fixed" | "maximum";
currency: string;
description?: string;
end_date?: number;
interval: "day" | "month" | "sporadic" | "week" | "year";
interval_count?: number;
reference: string;
start_date: number;
supported_types?: "india"[];
[k: string]: unknown;
};
network?:
| "amex"
| "cartes_bancaires"
| "diners"
| "discover"
| "eftpos_au"
| "interac"
| "jcb"
| "mastercard"
| "unionpay"
| "unknown"
| "visa";
request_three_d_secure?: "any" | "automatic" | "challenge";
three_d_secure?: {
ares_trans_status?: "A" | "C" | "I" | "N" | "R" | "U" | "Y";
cryptogram?: string;
electronic_commerce_indicator?: "01" | "02" | "05" | "06" | "07";
network_options?: {
cartes_bancaires?: {
cb_avalgo: "0" | "1" | "2" | "3" | "4" | "A";
cb_exemption?: string;
cb_score?: number;
[k: string]: unknown;
};
[k: string]: unknown;
};
requestor_challenge_indicator?: string;
transaction_id?: string;
version?: "1.0.2" | "2.1.0" | "2.2.0";
[k: string]: unknown;
};
[k: string]: unknown;
};
link?: { [k: string]: unknown };
paypal?: { billing_agreement_id?: string; [k: string]: unknown };
sepa_debit?: {
mandate_options?: { [k: string]: unknown };
[k: string]: unknown;
};
us_bank_account?: {
financial_connections?: {
permissions?: (
| "balances"
| "ownership"
| "payment_method"
| "transactions"
)[];
prefetch?: ("balances" | "transactions")[];
return_url?: string;
[k: string]: unknown;
};
mandate_options?: {
collection_method?: "" | "paper";
[k: string]: unknown;
};
networks?: {
requested?: ("ach" | "us_domestic_wire")[];
[k: string]: unknown;
};
verification_method?: "automatic" | "instant" | "microdeposits";
[k: string]: unknown;
};
[k: string]: unknown;
};
return_url?: string;
use_stripe_sdk?: boolean;
}
) {
const url = new URL(
`https://api.stripe.com/v1/setup_intents/${intent}/confirm`
);
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Authorization: "Bearer " + auth.token,
},
body: encodeParams(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
function encodeParams(o: any) {
function iter(o: any, path: string) {
if (Array.isArray(o)) {
o.forEach(function (a) {
iter(a, path + "[]");
});
return;
}
if (o !== null && typeof o === "object") {
Object.keys(o).forEach(function (k) {
iter(o[k], path + "[" + k + "]");
});
return;
}
data.push(path + "=" + o);
}
const data: string[] = [];
Object.keys(o).forEach(function (k) {
if (o[k] !== undefined) {
iter(o[k], k);
}
});
return new URLSearchParams(data.join("&"));
}
Submitted by hugo697 795 days ago
type Stripe = {
token: string;
};
/**
* Post setup intents intent confirm
* <p>Confirm that your customer intends to set up the current or
provided payment method.
*/
export async function main(
auth: Stripe,
intent: string,
body: {
client_secret?: string;
expand?: string[];
mandate_data?:
| {
customer_acceptance: {
accepted_at?: number;
offline?: { [k: string]: unknown };
online?: {
ip_address: string;
user_agent: string;
[k: string]: unknown;
};
type: "offline" | "online";
[k: string]: unknown;
};
[k: string]: unknown;
}
| ""
| {
customer_acceptance: {
online: {
ip_address?: string;
user_agent?: string;
[k: string]: unknown;
};
type: "online";
[k: string]: unknown;
};
[k: string]: unknown;
};
payment_method?: string;
payment_method_data?: {
acss_debit?: {
account_number: string;
institution_number: string;
transit_number: string;
[k: string]: unknown;
};
affirm?: { [k: string]: unknown };
afterpay_clearpay?: { [k: string]: unknown };
alipay?: { [k: string]: unknown };
au_becs_debit?: {
account_number: string;
bsb_number: string;
[k: string]: unknown;
};
bacs_debit?: {
account_number?: string;
sort_code?: string;
[k: string]: unknown;
};
bancontact?: { [k: string]: unknown };
billing_details?: {
address?:
| {
city?: string;
country?: string;
line1?: string;
line2?: string;
postal_code?: string;
state?: string;
[k: string]: unknown;
}
| "";
email?: string | "";
name?: string | "";
phone?: string | "";
[k: string]: unknown;
};
blik?: { [k: string]: unknown };
boleto?: { tax_id: string; [k: string]: unknown };
cashapp?: { [k: string]: unknown };
customer_balance?: { [k: string]: unknown };
eps?: {
bank?:
| "arzte_und_apotheker_bank"
| "austrian_anadi_bank_ag"
| "bank_austria"
| "bankhaus_carl_spangler"
| "bankhaus_schelhammer_und_schattera_ag"
| "bawag_psk_ag"
| "bks_bank_ag"
| "brull_kallmus_bank_ag"
| "btv_vier_lander_bank"
| "capital_bank_grawe_gruppe_ag"
| "deutsche_bank_ag"
| "dolomitenbank"
| "easybank_ag"
| "erste_bank_und_sparkassen"
| "hypo_alpeadriabank_international_ag"
| "hypo_bank_burgenland_aktiengesellschaft"
| "hypo_noe_lb_fur_niederosterreich_u_wien"
| "hypo_oberosterreich_salzburg_steiermark"
| "hypo_tirol_bank_ag"
| "hypo_vorarlberg_bank_ag"
| "marchfelder_bank"
| "oberbank_ag"
| "raiffeisen_bankengruppe_osterreich"
| "schoellerbank_ag"
| "sparda_bank_wien"
| "volksbank_gruppe"
| "volkskreditbank_ag"
| "vr_bank_braunau";
[k: string]: unknown;
};
fpx?: {
bank:
| "affin_bank"
| "agrobank"
| "alliance_bank"
| "ambank"
| "bank_islam"
| "bank_muamalat"
| "bank_of_china"
| "bank_rakyat"
| "bsn"
| "cimb"
| "deutsche_bank"
| "hong_leong_bank"
| "hsbc"
| "kfh"
| "maybank2e"
| "maybank2u"
| "ocbc"
| "pb_enterprise"
| "public_bank"
| "rhb"
| "standard_chartered"
| "uob";
[k: string]: unknown;
};
giropay?: { [k: string]: unknown };
grabpay?: { [k: string]: unknown };
ideal?: {
bank?:
| "abn_amro"
| "asn_bank"
| "bunq"
| "handelsbanken"
| "ing"
| "knab"
| "moneyou"
| "n26"
| "rabobank"
| "regiobank"
| "revolut"
| "sns_bank"
| "triodos_bank"
| "van_lanschot"
| "yoursafe";
[k: string]: unknown;
};
interac_present?: { [k: string]: unknown };
klarna?: {
dob?: {
day: number;
month: number;
year: number;
[k: string]: unknown;
};
[k: string]: unknown;
};
konbini?: { [k: string]: unknown };
link?: { [k: string]: unknown };
metadata?: { [k: string]: string };
oxxo?: { [k: string]: unknown };
p24?: {
bank?:
| "alior_bank"
| "bank_millennium"
| "bank_nowy_bfg_sa"
| "bank_pekao_sa"
| "banki_spbdzielcze"
| "blik"
| "bnp_paribas"
| "boz"
| "citi_handlowy"
| "credit_agricole"
| "envelobank"
| "etransfer_pocztowy24"
| "getin_bank"
| "ideabank"
| "ing"
| "inteligo"
| "mbank_mtransfer"
| "nest_przelew"
| "noble_pay"
| "pbac_z_ipko"
| "plus_bank"
| "santander_przelew24"
| "tmobile_usbugi_bankowe"
| "toyota_bank"
| "volkswagen_bank";
[k: string]: unknown;
};
paynow?: { [k: string]: unknown };
paypal?: { [k: string]: unknown };
pix?: { [k: string]: unknown };
promptpay?: { [k: string]: unknown };
radar_options?: { session?: string; [k: string]: unknown };
sepa_debit?: { iban: string; [k: string]: unknown };
sofort?: {
country: "AT" | "BE" | "DE" | "ES" | "IT" | "NL";
[k: string]: unknown;
};
type:
| "acss_debit"
| "affirm"
| "afterpay_clearpay"
| "alipay"
| "au_becs_debit"
| "bacs_debit"
| "bancontact"
| "blik"
| "boleto"
| "cashapp"
| "customer_balance"
| "eps"
| "fpx"
| "giropay"
| "grabpay"
| "ideal"
| "klarna"
| "konbini"
| "link"
| "oxxo"
| "p24"
| "paynow"
| "paypal"
| "pix"
| "promptpay"
| "sepa_debit"
| "sofort"
| "us_bank_account"
| "wechat_pay"
| "zip";
us_bank_account?: {
account_holder_type?: "company" | "individual";
account_number?: string;
account_type?: "checking" | "savings";
financial_connections_account?: string;
routing_number?: string;
[k: string]: unknown;
};
wechat_pay?: { [k: string]: unknown };
zip?: { [k: string]: unknown };
[k: string]: unknown;
};
payment_method_options?: {
acss_debit?: {
currency?: "cad" | "usd";
mandate_options?: {
custom_mandate_url?: string | "";
default_for?: ("invoice" | "subscription")[];
interval_description?: string;
payment_schedule?: "combined" | "interval" | "sporadic";
transaction_type?: "business" | "personal";
[k: string]: unknown;
};
verification_method?: "automatic" | "instant" | "microdeposits";
[k: string]: unknown;
};
card?: {
mandate_options?: {
amount: number;
amount_type: "fixed" | "maximum";
currency: string;
description?: string;
end_date?: number;
interval: "day" | "month" | "sporadic" | "week" | "year";
interval_count?: number;
reference: string;
start_date: number;
supported_types?: "india"[];
[k: string]: unknown;
};
network?:
| "amex"
| "cartes_bancaires"
| "diners"
| "discover"
| "eftpos_au"
| "interac"
| "jcb"
| "mastercard"
| "unionpay"
| "unknown"
| "visa";
request_three_d_secure?: "any" | "automatic";
[k: string]: unknown;
};
link?: { [k: string]: unknown };
paypal?: { billing_agreement_id?: string; [k: string]: unknown };
sepa_debit?: {
mandate_options?: { [k: string]: unknown };
[k: string]: unknown;
};
us_bank_account?: {
financial_connections?: {
permissions?: (
| "balances"
| "ownership"
| "payment_method"
| "transactions"
)[];
prefetch?: "balances"[];
return_url?: string;
[k: string]: unknown;
};
networks?: {
requested?: ("ach" | "us_domestic_wire")[];
[k: string]: unknown;
};
verification_method?: "automatic" | "instant" | "microdeposits";
[k: string]: unknown;
};
[k: string]: unknown;
};
return_url?: string;
use_stripe_sdk?: boolean;
}
) {
const url = new URL(
`https://api.stripe.com/v1/setup_intents/${intent}/confirm`
);
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Authorization: "Bearer " + auth.token,
},
body: encodeParams(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
function encodeParams(o: any) {
function iter(o: any, path: string) {
if (Array.isArray(o)) {
o.forEach(function (a) {
iter(a, path + "[]");
});
return;
}
if (o !== null && typeof o === "object") {
Object.keys(o).forEach(function (k) {
iter(o[k], path + "[" + k + "]");
});
return;
}
data.push(path + "=" + o);
}
const data: string[] = [];
Object.keys(o).forEach(function (k) {
if (o[k] !== undefined) {
iter(o[k], k);
}
});
return new URLSearchParams(data.join("&"));
}
Submitted by hugo697 922 days ago