type Stripe = {
token: string;
};
/**
* Post payment intents
* Creates a PaymentIntent object.
After the PaymentIntent is created, attach a payment method and confirm
to continue the payment. Learn more about the available payment flows
with the Payment Intents API.
When you use confirm=true during creation, it’s equivalent to creating
and confirming the PaymentIntent in the same call. You can use any parameters
available in the confirm API when you supply
confirm=true.
*/
export async function main(
auth: Stripe,
body: {
amount: number;
application_fee_amount?: number;
automatic_payment_methods?: {
allow_redirects?: "always" | "never";
enabled: boolean;
[k: string]: unknown;
};
capture_method?: "automatic" | "automatic_async" | "manual";
confirm?: boolean;
confirmation_method?: "automatic" | "manual";
currency: string;
customer?: string;
description?: string;
error_on_requires_action?: boolean;
expand?: string[];
mandate?: 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;
}
| "";
metadata?: { [k: string]: string };
off_session?: boolean | ("one_off" | "recurring");
on_behalf_of?: string;
payment_method?: string;
payment_method_configuration?: 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?:
| {
mandate_options?: {
custom_mandate_url?: string | "";
interval_description?: string;
payment_schedule?: "combined" | "interval" | "sporadic";
transaction_type?: "business" | "personal";
[k: string]: unknown;
};
setup_future_usage?: "" | "none" | "off_session" | "on_session";
verification_method?: "automatic" | "instant" | "microdeposits";
[k: string]: unknown;
}
| "";
affirm?:
| {
capture_method?: "" | "manual";
preferred_locale?: string;
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
afterpay_clearpay?:
| {
capture_method?: "" | "manual";
reference?: string;
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
alipay?:
| {
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
au_becs_debit?:
| {
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
bacs_debit?:
| {
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
bancontact?:
| {
preferred_language?: "de" | "en" | "fr" | "nl";
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
blik?:
| {
code?: string;
setup_future_usage?: "" | "none";
[k: string]: unknown;
}
| "";
boleto?:
| {
expires_after_days?: number;
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
card?:
| {
capture_method?: "" | "manual";
cvc_token?: string;
installments?: {
enabled?: boolean;
plan?:
| {
count: number;
interval: "month";
type: "fixed_count";
[k: string]: unknown;
}
| "";
[k: string]: unknown;
};
mandate_options?: {
amount: number;
amount_type: "fixed" | "maximum";
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_extended_authorization?: "if_available" | "never";
request_incremental_authorization?: "if_available" | "never";
request_multicapture?: "if_available" | "never";
request_overcapture?: "if_available" | "never";
request_three_d_secure?: "any" | "automatic" | "challenge";
require_cvc_recollection?: boolean;
setup_future_usage?: "" | "none" | "off_session" | "on_session";
statement_descriptor_suffix_kana?: string | "";
statement_descriptor_suffix_kanji?: string | "";
three_d_secure?: {
ares_trans_status?: "A" | "C" | "I" | "N" | "R" | "U" | "Y";
cryptogram: string;
electronic_commerce_indicator?: "01" | "02" | "05" | "06" | "07";
exemption_indicator?: "low_risk" | "none";
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;
}
| "";
card_present?:
| {
request_extended_authorization?: boolean;
request_incremental_authorization_support?: boolean;
[k: string]: unknown;
}
| "";
cashapp?:
| {
capture_method?: "" | "manual";
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
customer_balance?:
| {
bank_transfer?: {
eu_bank_transfer?: { country: string; [k: string]: unknown };
requested_address_types?: (
| "aba"
| "iban"
| "sepa"
| "sort_code"
| "spei"
| "swift"
| "zengin"
)[];
type:
| "eu_bank_transfer"
| "gb_bank_transfer"
| "jp_bank_transfer"
| "mx_bank_transfer"
| "us_bank_transfer";
[k: string]: unknown;
};
funding_type?: "bank_transfer";
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
eps?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
fpx?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
giropay?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
grabpay?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
ideal?:
| {
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
interac_present?: { [k: string]: unknown } | "";
klarna?:
| {
capture_method?: "" | "manual";
preferred_locale?:
| "cs-CZ"
| "da-DK"
| "de-AT"
| "de-CH"
| "de-DE"
| "el-GR"
| "en-AT"
| "en-AU"
| "en-BE"
| "en-CA"
| "en-CH"
| "en-CZ"
| "en-DE"
| "en-DK"
| "en-ES"
| "en-FI"
| "en-FR"
| "en-GB"
| "en-GR"
| "en-IE"
| "en-IT"
| "en-NL"
| "en-NO"
| "en-NZ"
| "en-PL"
| "en-PT"
| "en-SE"
| "en-US"
| "es-ES"
| "es-US"
| "fi-FI"
| "fr-BE"
| "fr-CA"
| "fr-CH"
| "fr-FR"
| "it-CH"
| "it-IT"
| "nb-NO"
| "nl-BE"
| "nl-NL"
| "pl-PL"
| "pt-PT"
| "sv-FI"
| "sv-SE";
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
konbini?:
| {
confirmation_number?: string | "";
expires_after_days?: number | "";
expires_at?: number | "";
product_description?: string | "";
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
link?:
| {
capture_method?: "" | "manual";
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
oxxo?:
| {
expires_after_days?: number;
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
p24?:
| {
setup_future_usage?: "none";
tos_shown_and_accepted?: boolean;
[k: string]: unknown;
}
| "";
paynow?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
paypal?:
| {
capture_method?: "" | "manual";
preferred_locale?:
| "cs-CZ"
| "da-DK"
| "de-AT"
| "de-DE"
| "de-LU"
| "el-GR"
| "en-GB"
| "en-US"
| "es-ES"
| "fi-FI"
| "fr-BE"
| "fr-FR"
| "fr-LU"
| "hu-HU"
| "it-IT"
| "nl-BE"
| "nl-NL"
| "pl-PL"
| "pt-PT"
| "sk-SK"
| "sv-SE";
reference?: string;
risk_correlation_id?: string;
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
pix?:
| {
expires_after_seconds?: number;
expires_at?: number;
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
promptpay?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
revolut_pay?:
| {
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
sepa_debit?:
| {
mandate_options?: { [k: string]: unknown };
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
sofort?:
| {
preferred_language?:
| ""
| "de"
| "en"
| "es"
| "fr"
| "it"
| "nl"
| "pl";
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
swish?:
| {
reference?: string | "";
setup_future_usage?: "none";
[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;
};
preferred_settlement_speed?: "" | "fastest" | "standard";
setup_future_usage?: "" | "none" | "off_session" | "on_session";
verification_method?: "automatic" | "instant" | "microdeposits";
[k: string]: unknown;
}
| "";
wechat_pay?:
| {
app_id?: string;
client: "android" | "ios" | "web";
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
zip?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
[k: string]: unknown;
};
payment_method_types?: string[];
radar_options?: { session?: string; [k: string]: unknown };
receipt_email?: string;
return_url?: string;
setup_future_usage?: "off_session" | "on_session";
shipping?: {
address: {
city?: string;
country?: string;
line1?: string;
line2?: string;
postal_code?: string;
state?: string;
[k: string]: unknown;
};
carrier?: string;
name: string;
phone?: string;
tracking_number?: string;
[k: string]: unknown;
};
statement_descriptor?: string;
statement_descriptor_suffix?: string;
transfer_data?: {
amount?: number;
destination: string;
[k: string]: unknown;
};
transfer_group?: string;
use_stripe_sdk?: boolean;
}
) {
const url = new URL(`https://api.stripe.com/v1/payment_intents`);
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 payment intents
* Creates a PaymentIntent object.
After the PaymentIntent is created, attach a payment method and confirm
to continue the payment. Learn more about the available payment flows
with the Payment Intents API.
When you use confirm=true during creation, it’s equivalent to creating
and confirming the PaymentIntent in the same call. You can use any parameters
available in the confirm API when you supply
confirm=true.
*/
export async function main(
auth: Stripe,
body: {
amount: number;
application_fee_amount?: number;
automatic_payment_methods?: {
allow_redirects?: "always" | "never";
enabled: boolean;
[k: string]: unknown;
};
capture_method?: "automatic" | "automatic_async" | "manual";
confirm?: boolean;
confirmation_method?: "automatic" | "manual";
currency: string;
customer?: string;
description?: string;
error_on_requires_action?: boolean;
expand?: string[];
mandate?: 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;
}
| "";
metadata?: { [k: string]: string };
off_session?: boolean | ("one_off" | "recurring");
on_behalf_of?: string;
payment_method?: string;
payment_method_configuration?: 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?:
| {
mandate_options?: {
custom_mandate_url?: string | "";
interval_description?: string;
payment_schedule?: "combined" | "interval" | "sporadic";
transaction_type?: "business" | "personal";
[k: string]: unknown;
};
setup_future_usage?: "" | "none" | "off_session" | "on_session";
verification_method?: "automatic" | "instant" | "microdeposits";
[k: string]: unknown;
}
| "";
affirm?:
| {
capture_method?: "" | "manual";
preferred_locale?: string;
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
afterpay_clearpay?:
| {
capture_method?: "" | "manual";
reference?: string;
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
alipay?:
| {
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
au_becs_debit?:
| {
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
bacs_debit?:
| {
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
bancontact?:
| {
preferred_language?: "de" | "en" | "fr" | "nl";
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
blik?:
| {
code?: string;
setup_future_usage?: "" | "none";
[k: string]: unknown;
}
| "";
boleto?:
| {
expires_after_days?: number;
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
card?:
| {
capture_method?: "" | "manual";
cvc_token?: string;
installments?: {
enabled?: boolean;
plan?:
| {
count: number;
interval: "month";
type: "fixed_count";
[k: string]: unknown;
}
| "";
[k: string]: unknown;
};
mandate_options?: {
amount: number;
amount_type: "fixed" | "maximum";
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_extended_authorization?: "if_available" | "never";
request_incremental_authorization?: "if_available" | "never";
request_multicapture?: "if_available" | "never";
request_overcapture?: "if_available" | "never";
request_three_d_secure?: "any" | "automatic" | "challenge";
require_cvc_recollection?: boolean;
setup_future_usage?: "" | "none" | "off_session" | "on_session";
statement_descriptor_suffix_kana?: string | "";
statement_descriptor_suffix_kanji?: string | "";
three_d_secure?: {
ares_trans_status?: "A" | "C" | "I" | "N" | "R" | "U" | "Y";
cryptogram: string;
electronic_commerce_indicator?: "01" | "02" | "05" | "06" | "07";
exemption_indicator?: "low_risk" | "none";
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;
}
| "";
card_present?:
| {
request_extended_authorization?: boolean;
request_incremental_authorization_support?: boolean;
[k: string]: unknown;
}
| "";
cashapp?:
| {
capture_method?: "" | "manual";
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
customer_balance?:
| {
bank_transfer?: {
eu_bank_transfer?: { country: string; [k: string]: unknown };
requested_address_types?: (
| "aba"
| "iban"
| "sepa"
| "sort_code"
| "spei"
| "swift"
| "zengin"
)[];
type:
| "eu_bank_transfer"
| "gb_bank_transfer"
| "jp_bank_transfer"
| "mx_bank_transfer"
| "us_bank_transfer";
[k: string]: unknown;
};
funding_type?: "bank_transfer";
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
eps?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
fpx?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
giropay?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
grabpay?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
ideal?:
| {
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
interac_present?: { [k: string]: unknown } | "";
klarna?:
| {
capture_method?: "" | "manual";
preferred_locale?:
| "cs-CZ"
| "da-DK"
| "de-AT"
| "de-CH"
| "de-DE"
| "el-GR"
| "en-AT"
| "en-AU"
| "en-BE"
| "en-CA"
| "en-CH"
| "en-CZ"
| "en-DE"
| "en-DK"
| "en-ES"
| "en-FI"
| "en-FR"
| "en-GB"
| "en-GR"
| "en-IE"
| "en-IT"
| "en-NL"
| "en-NO"
| "en-NZ"
| "en-PL"
| "en-PT"
| "en-SE"
| "en-US"
| "es-ES"
| "es-US"
| "fi-FI"
| "fr-BE"
| "fr-CA"
| "fr-CH"
| "fr-FR"
| "it-CH"
| "it-IT"
| "nb-NO"
| "nl-BE"
| "nl-NL"
| "pl-PL"
| "pt-PT"
| "sv-FI"
| "sv-SE";
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
konbini?:
| {
confirmation_number?: string | "";
expires_after_days?: number | "";
expires_at?: number | "";
product_description?: string | "";
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
link?:
| {
capture_method?: "" | "manual";
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
oxxo?:
| {
expires_after_days?: number;
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
p24?:
| {
setup_future_usage?: "none";
tos_shown_and_accepted?: boolean;
[k: string]: unknown;
}
| "";
paynow?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
paypal?:
| {
capture_method?: "" | "manual";
preferred_locale?:
| "cs-CZ"
| "da-DK"
| "de-AT"
| "de-DE"
| "de-LU"
| "el-GR"
| "en-GB"
| "en-US"
| "es-ES"
| "fi-FI"
| "fr-BE"
| "fr-FR"
| "fr-LU"
| "hu-HU"
| "it-IT"
| "nl-BE"
| "nl-NL"
| "pl-PL"
| "pt-PT"
| "sk-SK"
| "sv-SE";
reference?: string;
risk_correlation_id?: string;
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
pix?:
| {
expires_after_seconds?: number;
expires_at?: number;
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
promptpay?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
revolut_pay?:
| {
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
sepa_debit?:
| {
mandate_options?: { [k: string]: unknown };
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
sofort?:
| {
preferred_language?:
| ""
| "de"
| "en"
| "es"
| "fr"
| "it"
| "nl"
| "pl";
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
swish?:
| {
reference?: string | "";
setup_future_usage?: "none";
[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;
};
preferred_settlement_speed?: "" | "fastest" | "standard";
setup_future_usage?: "" | "none" | "off_session" | "on_session";
verification_method?: "automatic" | "instant" | "microdeposits";
[k: string]: unknown;
}
| "";
wechat_pay?:
| {
app_id?: string;
client: "android" | "ios" | "web";
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
zip?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
[k: string]: unknown;
};
payment_method_types?: string[];
radar_options?: { session?: string; [k: string]: unknown };
receipt_email?: string;
return_url?: string;
setup_future_usage?: "off_session" | "on_session";
shipping?: {
address: {
city?: string;
country?: string;
line1?: string;
line2?: string;
postal_code?: string;
state?: string;
[k: string]: unknown;
};
carrier?: string;
name: string;
phone?: string;
tracking_number?: string;
[k: string]: unknown;
};
statement_descriptor?: string;
statement_descriptor_suffix?: string;
transfer_data?: {
amount?: number;
destination: string;
[k: string]: unknown;
};
transfer_group?: string;
use_stripe_sdk?: boolean;
}
) {
const url = new URL(`https://api.stripe.com/v1/payment_intents`);
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 payment intents
* <p>Creates a PaymentIntent object.
*/
export async function main(
auth: Stripe,
body: {
amount: number;
application_fee_amount?: number;
automatic_payment_methods?: {
allow_redirects?: "always" | "never";
enabled: boolean;
[k: string]: unknown;
};
capture_method?: "automatic" | "automatic_async" | "manual";
confirm?: boolean;
confirmation_method?: "automatic" | "manual";
currency: string;
customer?: string;
description?: string;
error_on_requires_action?: boolean;
expand?: string[];
mandate?: 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;
}
| "";
metadata?: { [k: string]: string };
off_session?: boolean | ("one_off" | "recurring");
on_behalf_of?: string;
payment_method?: string;
payment_method_configuration?: 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?:
| {
mandate_options?: {
custom_mandate_url?: string | "";
interval_description?: string;
payment_schedule?: "combined" | "interval" | "sporadic";
transaction_type?: "business" | "personal";
[k: string]: unknown;
};
setup_future_usage?: "" | "none" | "off_session" | "on_session";
verification_method?: "automatic" | "instant" | "microdeposits";
[k: string]: unknown;
}
| "";
affirm?:
| {
capture_method?: "" | "manual";
preferred_locale?: string;
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
afterpay_clearpay?:
| {
capture_method?: "" | "manual";
reference?: string;
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
alipay?:
| {
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
au_becs_debit?:
| {
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
bacs_debit?:
| {
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
bancontact?:
| {
preferred_language?: "de" | "en" | "fr" | "nl";
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
blik?: { code?: string; [k: string]: unknown } | "";
boleto?:
| {
expires_after_days?: number;
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
card?:
| {
capture_method?: "" | "manual";
cvc_token?: string;
installments?: {
enabled?: boolean;
plan?:
| {
count: number;
interval: "month";
type: "fixed_count";
[k: string]: unknown;
}
| "";
[k: string]: unknown;
};
mandate_options?: {
amount: number;
amount_type: "fixed" | "maximum";
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_extended_authorization?: "if_available" | "never";
request_incremental_authorization?: "if_available" | "never";
request_multicapture?: "if_available" | "never";
request_overcapture?: "if_available" | "never";
request_three_d_secure?: "any" | "automatic";
setup_future_usage?: "" | "none" | "off_session" | "on_session";
statement_descriptor_suffix_kana?: string | "";
statement_descriptor_suffix_kanji?: string | "";
[k: string]: unknown;
}
| "";
card_present?:
| {
request_extended_authorization?: boolean;
request_incremental_authorization_support?: boolean;
[k: string]: unknown;
}
| "";
cashapp?:
| {
capture_method?: "" | "manual";
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
customer_balance?:
| {
bank_transfer?: {
eu_bank_transfer?: { country: string; [k: string]: unknown };
requested_address_types?: (
| "aba"
| "iban"
| "sepa"
| "sort_code"
| "spei"
| "swift"
| "zengin"
)[];
type:
| "eu_bank_transfer"
| "gb_bank_transfer"
| "jp_bank_transfer"
| "mx_bank_transfer"
| "us_bank_transfer";
[k: string]: unknown;
};
funding_type?: "bank_transfer";
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
eps?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
fpx?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
giropay?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
grabpay?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
ideal?:
| {
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
interac_present?: { [k: string]: unknown } | "";
klarna?:
| {
capture_method?: "" | "manual";
preferred_locale?:
| "cs-CZ"
| "da-DK"
| "de-AT"
| "de-CH"
| "de-DE"
| "el-GR"
| "en-AT"
| "en-AU"
| "en-BE"
| "en-CA"
| "en-CH"
| "en-CZ"
| "en-DE"
| "en-DK"
| "en-ES"
| "en-FI"
| "en-FR"
| "en-GB"
| "en-GR"
| "en-IE"
| "en-IT"
| "en-NL"
| "en-NO"
| "en-NZ"
| "en-PL"
| "en-PT"
| "en-SE"
| "en-US"
| "es-ES"
| "es-US"
| "fi-FI"
| "fr-BE"
| "fr-CA"
| "fr-CH"
| "fr-FR"
| "it-CH"
| "it-IT"
| "nb-NO"
| "nl-BE"
| "nl-NL"
| "pl-PL"
| "pt-PT"
| "sv-FI"
| "sv-SE";
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
konbini?:
| {
confirmation_number?: string | "";
expires_after_days?: number | "";
expires_at?: number | "";
product_description?: string | "";
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
link?:
| {
capture_method?: "" | "manual";
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
oxxo?:
| {
expires_after_days?: number;
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
p24?:
| {
setup_future_usage?: "none";
tos_shown_and_accepted?: boolean;
[k: string]: unknown;
}
| "";
paynow?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
paypal?:
| {
capture_method?: "" | "manual";
preferred_locale?:
| "cs-CZ"
| "da-DK"
| "de-AT"
| "de-DE"
| "de-LU"
| "el-GR"
| "en-GB"
| "en-US"
| "es-ES"
| "fi-FI"
| "fr-BE"
| "fr-FR"
| "fr-LU"
| "hu-HU"
| "it-IT"
| "nl-BE"
| "nl-NL"
| "pl-PL"
| "pt-PT"
| "sk-SK"
| "sv-SE";
reference?: string;
risk_correlation_id?: string;
setup_future_usage?: "" | "none" | "off_session";
[k: string]: unknown;
}
| "";
pix?:
| {
expires_after_seconds?: number;
expires_at?: number;
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
promptpay?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
sepa_debit?:
| {
mandate_options?: { [k: string]: unknown };
setup_future_usage?: "" | "none" | "off_session" | "on_session";
[k: string]: unknown;
}
| "";
sofort?:
| {
preferred_language?:
| ""
| "de"
| "en"
| "es"
| "fr"
| "it"
| "nl"
| "pl";
setup_future_usage?: "" | "none" | "off_session";
[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;
};
preferred_settlement_speed?: "" | "fastest" | "standard";
setup_future_usage?: "" | "none" | "off_session" | "on_session";
verification_method?: "automatic" | "instant" | "microdeposits";
[k: string]: unknown;
}
| "";
wechat_pay?:
| {
app_id?: string;
client: "android" | "ios" | "web";
setup_future_usage?: "none";
[k: string]: unknown;
}
| "";
zip?: { setup_future_usage?: "none"; [k: string]: unknown } | "";
[k: string]: unknown;
};
payment_method_types?: string[];
radar_options?: { session?: string; [k: string]: unknown };
receipt_email?: string;
return_url?: string;
setup_future_usage?: "off_session" | "on_session";
shipping?: {
address: {
city?: string;
country?: string;
line1?: string;
line2?: string;
postal_code?: string;
state?: string;
[k: string]: unknown;
};
carrier?: string;
name: string;
phone?: string;
tracking_number?: string;
[k: string]: unknown;
};
statement_descriptor?: string;
statement_descriptor_suffix?: string;
transfer_data?: {
amount?: number;
destination: string;
[k: string]: unknown;
};
transfer_group?: string;
use_stripe_sdk?: boolean;
}
) {
const url = new URL(`https://api.stripe.com/v1/payment_intents`);
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