| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import { ref, reactive, nextTick } from 'vue'
- // #ifdef H5
- import { createElement, loadAirwallex, getElement } from 'airwallex-payment-elements'
- // #ifdef H5
- import { SHOP_SUBMIT_PAY } from '@/api'
- import { getLan } from "@/locale"
- import verConfig from '@/ver.config'
- let appleInstance = ref(null);
- let appleParams = reactive({})
- const init = (callback) => {
- loadAirwallex({
- env: 'staging',
- env: 'prod',
- origin: window.location.origin,
- // origin: verConfig.origin,
- locale: getLan(),
- }).then(() => {
- appleInstance.value = createElement('applePayButton', {
- ...appleParams
- });
- appleInstance.value.mount('apple_pay_card');
- callback && callback();
- })
- }
- const unmountCard = () => {
- let card = getElement('applePayButton');
- card.destroy();
- card.unmount();
- appleInstance.value = null;
- }
- const fetchCardPaymentInfo = (params = {}, callback) => {
- return new Promise((resolve, reject) => {
- const query = {
- payType: 'airwallex',
- ...params
- }
- SHOP_SUBMIT_PAY(query).then(result => {
- const { id, client_secret, amount, currency, countryCode } = result.data;
- appleParams.intent_id = id;
- appleParams.client_secret = client_secret;
- appleParams.amount = {
- value: amount,
- currency,
- };
- appleParams.countryCode = countryCode
- nextTick(() => {
- init(callback);
- })
- resolve(result.data)
- }).catch(err => { reject(err) })
- })
- }
- export const useAppleInfo = () => {
- return { appleInstance, init, unmountCard, fetchCardPaymentInfo }
- }
|