66 lines
1.8 KiB
JavaScript
66 lines
1.8 KiB
JavaScript
import { mergeObject } from "@/utils";
|
|
import { loadAirwallex, redirectToCheckout } from "airwallex-payment-elements";
|
|
|
|
/**
|
|
* 空中云汇率,支付环境.
|
|
*/
|
|
export function getAirwallexEnv() {
|
|
const env = process.env.ENV;
|
|
if (env === "staging") {
|
|
return "staging";
|
|
}
|
|
if (env === "production") {
|
|
return "prod";
|
|
}
|
|
return "demo";
|
|
}
|
|
|
|
/**
|
|
* 发起支付.
|
|
* @param result 下单结果
|
|
* @param callback 支付拉起加载回掉
|
|
* @param props 空中云汇支付属性
|
|
*/
|
|
export function goAirwallex({ result, props, callback }) {
|
|
const env = getAirwallexEnv();
|
|
loadAirwallex({ env })
|
|
.then(() => {
|
|
callback({ code: "INIT-LOAD", msg: "init load success." });
|
|
const param = mergeObject(
|
|
{
|
|
env,
|
|
mode: "payment",
|
|
currency: result.currency,
|
|
intent_id: result.expand.id,
|
|
client_secret: result.expand["client_secret"],
|
|
methods: [result.factoryChannelCode],
|
|
// country_code: result.countryCode,
|
|
recurringOptions: {
|
|
card: {
|
|
next_triggered_by: "customer",
|
|
merchant_trigger_reason: "unscheduled",
|
|
currency: result.currency,
|
|
},
|
|
},
|
|
theme: {
|
|
// Must provide theme to display the checkout page properly
|
|
fonts: [
|
|
// Customizes the font for the payment elements
|
|
{
|
|
src: "https://checkout.airwallex.com/fonts/CircularXXWeb/CircularXXWeb-Regular.woff2",
|
|
family: "AxLLCircular",
|
|
weight: 400,
|
|
},
|
|
],
|
|
},
|
|
},
|
|
props
|
|
);
|
|
redirectToCheckout(param);
|
|
})
|
|
.catch((er) => {
|
|
console.error(er);
|
|
callback({ code: "FAIL", msg: "init fail!!!" });
|
|
});
|
|
}
|