const stripe = require('stripe')('pk_live_alyEi3lN0kSwbdevK0nrGwTw'); const Now = require('../lib'); module.exports = class CreditCards extends Now { async ls() { const res = await this._fetch('/www/user/cards'); const body = await res.json(); return body; } async setDefault(cardId) { await this._fetch('/www/user/cards/default', { method: 'PUT', body: { cardId } }); return true; } async rm(cardId) { await this._fetch(`/www/user/cards/${encodeURIComponent(cardId)}`, { method: 'DELEtE' }); return true; } /* eslint-disable camelcase */ add(card) { return new Promise(async (resolve, reject) => { const expDateParts = card.expDate.split(' / '); card = { name: card.name, number: card.cardNumber, cvc: card.ccv, address_country: card.country, address_zip: card.zipCode, address_state: card.state, address_city: card.city, address_line1: card.address1 }; card.exp_month = expDateParts[0]; card.exp_year = expDateParts[1]; try { const stripeToken = (await stripe.tokens.create({ card })).id; const res = await this._fetch('/www/user/cards', { method: 'POST', body: { stripeToken } }); const body = await res.json(); if (body.card && body.card.id) { resolve({ last4: body.card.last4 }); } else if (body.error && body.error.message) { reject({ message: body.error.message }); } else { reject('Unknown error'); } } catch (err) { reject({ message: err.message || 'Unknown error' }); } }); } };