Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 18 additions & 8 deletions advanced-integration/paypal-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ export async function createOrder() {
],
}),
});
const data = await response.json();
return data;

return handleResponse(response);
}

// capture payment for an order
Expand All @@ -42,8 +42,8 @@ export async function capturePayment(orderId) {
Authorization: `Bearer ${accessToken}`,
},
});
const data = await response.json();
return data;

return handleResponse(response);
}

// generate access token
Expand All @@ -56,8 +56,8 @@ export async function generateAccessToken() {
Authorization: `Basic ${auth}`,
},
});
const data = await response.json();
return data.access_token;
const jsonData = await handleResponse(response);
return jsonData.access_token;
}

// generate client token
Expand All @@ -71,6 +71,16 @@ export async function generateClientToken() {
"Content-Type": "application/json",
},
});
const data = await response.json();
return data.client_token;
console.log('response', response.status)
const jsonData = await handleResponse(response);
return jsonData.client_token;
}

async function handleResponse(response) {
if (response.status === 200 || response.status === 201) {
return response.json();
}

const errorMessage = await response.text();
throw new Error(errorMessage);
}
24 changes: 18 additions & 6 deletions advanced-integration/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,33 @@ app.use(express.static("public"));
// render checkout page with client id & unique client token
app.get("/", async (req, res) => {
const clientId = process.env.CLIENT_ID;
const clientToken = await paypal.generateClientToken();
res.render("checkout", { clientId, clientToken });
try {
const clientToken = await paypal.generateClientToken();
res.render("checkout", { clientId, clientToken });
} catch (err) {
res.status(500).send(err.message);
}
});

// create order
app.post("/api/orders", async (req, res) => {
const order = await paypal.createOrder();
res.json(order);
try {
const order = await paypal.createOrder();
res.json(order);
} catch (err) {
res.status(500).send(err.message);
}
});

// capture payment
app.post("/api/orders/:orderID/capture", async (req, res) => {
const { orderID } = req.params;
const captureData = await paypal.capturePayment(orderID);
res.json(captureData);
try {
const captureData = await paypal.capturePayment(orderID);
res.json(captureData);
} catch (err) {
res.status(500).send(err.message);
}
});

app.listen(8888);
22 changes: 16 additions & 6 deletions standard-integration/paypal-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ export async function createOrder() {
],
}),
});
const data = await response.json();
return data;

return handleResponse(response);
}

export async function capturePayment(orderId) {
Expand All @@ -38,8 +38,8 @@ export async function capturePayment(orderId) {
Authorization: `Bearer ${accessToken}`,
},
});
const data = await response.json();
return data;

return handleResponse(response);
}

export async function generateAccessToken() {
Expand All @@ -51,6 +51,16 @@ export async function generateAccessToken() {
Authorization: `Basic ${auth}`,
},
});
const data = await response.json();
return data.access_token;

const jsonData = await handleResponse(response);
return jsonData.access_token;
}

async function handleResponse(response) {
if (response.status === 200 || response.status === 201) {
return response.json();
}

const errorMessage = await response.text();
throw new Error(errorMessage);
}
16 changes: 12 additions & 4 deletions standard-integration/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,22 @@ const app = express();
app.use(express.static("public"));

app.post("/api/orders", async (req, res) => {
const order = await paypal.createOrder();
res.json(order);
try {
const order = await paypal.createOrder();
res.json(order);
} catch (err) {
res.status(500).send(err.message);
}
});

app.post("/api/orders/:orderID/capture", async (req, res) => {
const { orderID } = req.params;
const captureData = await paypal.capturePayment(orderID);
res.json(captureData);
try {
const captureData = await paypal.capturePayment(orderID);
res.json(captureData);
} catch (err) {
res.status(500).send(err.message);
}
});

app.listen(8888);