Полоса - способ оплаты по умолчанию клиента не находится в объекте карты

У меня возникла проблема с организацией моего кода, и я не мог понять, как решить эту проблему в течение последних 48 часов. Мой мозг в основном застрял, и я хотел бы помочь, как найти решение. Я использую expressjs для сервера и Svelte для фронта.

Проблема : Я могу создавать клиентов, методы оплаты, платежные намерения и прикреплять метод оплаты к клиенту, устанавливать указанный метод оплаты в качестве метода оплаты по умолчанию для своего клиента... и т. д.

Чтобы отобразить методы оплаты клиента, я должен использовать Stripe.paymentMethods.list, который возвращает массив карт. Объект карты не содержит поля, указывающего, что карта является способом оплаты по умолчанию для клиента.

Default_payment_method, в котором хранится метод оплаты по умолчанию, находится в объекте клиента. Итак, мне нужно получить объект клиента, и здесь мне нужна помощь. Как мне решить эту проблему, как получить доступ к Stripe.paymentMethods.list(), чтобы получить список карт и stripe.customer.retrieve(), чтобы у меня был доступ к методу оплаты по умолчанию в моем дескрипторе сервера, чтобы я мог вернуть всю эту информацию спереди?

// get cards
stripe.paymentMethods.list({
        customer: customer,
        type: 'card'
    }).then(cards => {
        //I can return cards but not customer
        return res.end(JSON.stringify({ cards: cards}));
        }).catch(err => { console.info("err message :", err.message)});
});    

// now get customer
stripe.customers.retrieve(
  'cus_Ib01d7QtMdz2ez'
).then(customer=>{ 
      // I can return customer but not cards
     return res.end(JSON.stringify({customer : customer}));
});

// next step, send customer and cards to the frontst 

return res.end(JSON.Stringfy({cards : cards; customer : customer}))
    ?????

Как вернуть объекты «карты и клиент», чтобы я мог показать клиенту его/ее карты и какой из них является методом оплаты по умолчанию. Как использовать res.end(JSON.stringfy({})) с двумя отдельными функциями, могу ли я объединить их обе и вернуть один возврат?

JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Раскрытие чувствительных данных
Раскрытие чувствительных данных
Все внешние компоненты, рассмотренные здесь до сих пор, взаимодействуют с клиентской стороной. Однако, если они подвергаются атаке, они не...
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Руководство ChatGPT по продаже мини JS-файлов
Руководство ChatGPT по продаже мини JS-файлов
JS-файл - это файл, содержащий код JavaScript. JavaScript - это язык программирования, который в основном используется для добавления интерактивности...
1
0
610
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, вы прошли 80% пути. Вы определенно можете вернуть оба объекта, хотя я бы рекомендовал возвращать только те биты информации, которые вам нужны. Вместо ответа в блоке .then() используйте async/await, чтобы получить оба ответа.

const cards = await stripe.paymentMethods.list({
    customer: 'cus_123',
    type: 'card'
})

const customer = stripe.customers.retrieve(
  'cus_123'
)

return res.send(JSON.Stringify({cards : cards, customer : customer}))
// or, send json directly
// return res.json({cards : cards, customer : customer})

(Также обратите внимание, что я заменил точку с запятой ; запятой , и исправил опечатку):

Return res.end(JSON.String**i**fy({cards : cards**,** customer : customer}))

Спасибо. Оно работает. В итоге у меня было два обработчика сервера для возврата каждого объекта, и я объединил их на переднем плане, но это было много работы. Теперь я знаю, как сделать это проще :) ... Я пытаюсь использовать async/await больше, но я все еще не на 100% осознаю преимущества. Звездочки были оценены - после того, как я так долго смотрел на экран, я не смогу найти свою опечатку (я написал этот вопрос так расстроен, что не обратил внимания на то, что я печатал) ... Большое спасибо ты.

Marco 18.12.2020 21:38

Рад, что помогло :)

Nolan H 18.12.2020 23:00

Другие вопросы по теме