Automatic stripe customers; address
This commit is contained in:
@@ -119,7 +119,7 @@ class StripeProviderService extends PaymentService {
|
||||
customer: stripeCustomerId,
|
||||
amount: amount * 100, // Stripe amount is in cents
|
||||
currency: currency_code,
|
||||
setup_future_usage: "on-session",
|
||||
setup_future_usage: "on_session",
|
||||
capture_method: "manual",
|
||||
metadata: { cart_id: `${cart._id}` },
|
||||
})
|
||||
|
||||
@@ -29,15 +29,18 @@ export default async (req, res) => {
|
||||
}
|
||||
|
||||
let customerId = ""
|
||||
let email = ""
|
||||
if (req.user && req.user.customer_id) {
|
||||
const customerService = req.scope.resolve("customerService")
|
||||
const customer = await customerService.retrieve(req.user.customer_id)
|
||||
customerId = customer._id
|
||||
email = customer.email
|
||||
}
|
||||
|
||||
let cart = await cartService.create({
|
||||
region_id: regionId,
|
||||
customer_id: customerId,
|
||||
email,
|
||||
})
|
||||
|
||||
if (value.items) {
|
||||
|
||||
@@ -6,7 +6,11 @@ export default async (req, res) => {
|
||||
|
||||
// If there is a logged in user add the user to the cart
|
||||
if (req.user && req.user.customer_id) {
|
||||
if (!cart.customer_id || cart.customer_id !== req.user.customer_id) {
|
||||
if (
|
||||
!cart.customer_id ||
|
||||
!cart.email ||
|
||||
cart.customer_id !== req.user.customer_id
|
||||
) {
|
||||
const customerService = req.scope.resolve("customerService")
|
||||
const customer = await customerService.retrieve(req.user.customer_id)
|
||||
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
import mongoose from "mongoose"
|
||||
|
||||
export default new mongoose.Schema({
|
||||
first_name: { type: String, required: true },
|
||||
last_name: { type: String, required: true },
|
||||
address_1: { type: String, required: true },
|
||||
first_name: { type: String },
|
||||
last_name: { type: String },
|
||||
address_1: { type: String },
|
||||
address_2: { type: String },
|
||||
city: { type: String, required: true },
|
||||
country_code: { type: String, required: true },
|
||||
city: { type: String },
|
||||
country_code: { type: String },
|
||||
province: { type: String },
|
||||
postal_code: { type: String, required: true },
|
||||
postal_code: { type: String },
|
||||
phone: { type: String },
|
||||
metadata: { type: mongoose.Schema.Types.Mixed, default: {} },
|
||||
})
|
||||
|
||||
@@ -211,11 +211,7 @@ class CartService extends BaseService {
|
||||
if (region.countries.length === 1) {
|
||||
// Preselect the country if the region only has 1
|
||||
data.shipping_address = {
|
||||
country_code: countries[0],
|
||||
}
|
||||
|
||||
data.billing_address = {
|
||||
country_code: countries[0],
|
||||
country_code: region.countries[0],
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -259,7 +259,7 @@ class CustomerService extends BaseService {
|
||||
const customer = await this.retrieve(customerId)
|
||||
this.validateBillingAddress_(address)
|
||||
|
||||
let shouldAdd = !!customer.shipping_addresses.find(
|
||||
let shouldAdd = !customer.shipping_addresses.find(
|
||||
a =>
|
||||
a.country_code === address.country_code &&
|
||||
a.address_1 === address.address_1 &&
|
||||
|
||||
@@ -21,10 +21,13 @@ class OrderSubscriber {
|
||||
|
||||
this.eventBus_.subscribe("order.placed", async order => {
|
||||
await this.customerService_.addOrder(order.customer_id, order._id)
|
||||
await this.customerService_.addAddress(
|
||||
order.customer_id,
|
||||
order.shipping_address
|
||||
)
|
||||
|
||||
const address = {
|
||||
...order.shipping_address,
|
||||
}
|
||||
delete address._id
|
||||
|
||||
await this.customerService_.addAddress(order.customer_id, address)
|
||||
})
|
||||
|
||||
this.eventBus_.subscribe("order.placed", async order => {
|
||||
|
||||
Reference in New Issue
Block a user