ADD: Display invoice after purchase success

This commit is contained in:
Brian Huang 2021-11-12 15:50:47 -05:00
parent 1eefb8df52
commit 17d9144e7d
4 changed files with 45 additions and 8 deletions

View File

@ -2,14 +2,14 @@ import React from 'react';
import './App.css'; import './App.css';
import { Nav } from './components/header'; import { Nav } from './components/header';
import { Footer } from './components/footer'; import { Footer } from './components/footer';
import { Landding } from './components/mainPage'; import { Landing } from './components/mainPage';
function App() { function App() {
return ( return (
<div className="page-container"> <div className="page-container">
<div className="content-wrap"> <div className="content-wrap">
<Nav /> <Nav />
<Landding /> <Landing />
</div> </div>
<Footer /> <Footer />
</div> </div>

View File

@ -2,4 +2,5 @@ export {default as PayPal} from './paypal';
export {default as Purchase} from './purchase'; export {default as Purchase} from './purchase';
export {default as ShowCase} from './showCase'; export {default as ShowCase} from './showCase';
export {default as Home} from './home'; export {default as Home} from './home';
export {default as Landding} from './landing'; export {default as Landing} from './landing';
export {default as Invoice} from './invoice';

View File

@ -0,0 +1,20 @@
import React from "react";
const Invoice = (props) => {
return (
<div className="container">
Date Purchased: {props.date}
<br />
Item: {props.itemName}
<br />
Amount Paid: ${props.itemValue}
<br />
Ship to: {props.buyerName}
<br />
Shipping address: {props.streetAddr} {props.city}, {props.state} {props.postalCode}
</div>
);
}
export default Invoice;

View File

@ -1,15 +1,19 @@
import React from "react"; import React, { useState } from "react";
import { PayPalScriptProvider, PayPalButtons, FUNDING } from "@paypal/react-paypal-js"; import { PayPalScriptProvider, PayPalButtons, FUNDING } from "@paypal/react-paypal-js";
import { Invoice } from '.';
const initialOptions = { const initialOptions = {
"client-id": "AQBhJiIcG8lS4K5UoTo_-G5it85lbFpxEcA-WWBb1A-_Nq6YfKUdn05oyg-SgpxzXTyjfpdMceWskq7G", "client-id": "AQBhJiIcG8lS4K5UoTo_-G5it85lbFpxEcA-WWBb1A-_Nq6YfKUdn05oyg-SgpxzXTyjfpdMceWskq7G",
currency: "USD", currency: "USD",
intent: "capture" intent: "capture"
} }
// buyer account: dev01.oemautomation.com, pwd: 3Deerhead // buyer account: dev01@oemautomation.com, pwd: 3Deerhead
// merchant account: biz01.oemautomation.com, pwd 3Deerhead // merchant account: biz01@oemautomation.com, pwd 3Deerhead
const PayPal = () => { const PayPal = () => {
const [showInvoice, setShowInvoice] = useState(false);
const [invoiceDetails, setInvoiceDetails] = useState({});
const createOrder = (data, actions) => { const createOrder = (data, actions) => {
return actions.order.create({ return actions.order.create({
@ -25,8 +29,8 @@ const PayPal = () => {
const onApprove = (data, actions) => { const onApprove = (data, actions) => {
return actions.order.capture().then(function(details) { return actions.order.capture().then(function(details) {
console.dir(details); setInvoiceDetails(details);
alert('Transaction completed by ' + details.payer.name.given_name); setShowInvoice(true);
}); });
} }
@ -44,6 +48,18 @@ const PayPal = () => {
</div> </div>
</PayPalScriptProvider> </PayPalScriptProvider>
</div> </div>
{showInvoice &&
<Invoice
date={invoiceDetails.create_time}
itemName={invoiceDetails.purchase_units[0].description}
itemValue={invoiceDetails.purchase_units[0].amount.value}
buyerName={invoiceDetails.purchase_units[0].shipping.name.full_name}
streetAddr={invoiceDetails.purchase_units[0].shipping.address.address_line_1}
city={invoiceDetails.purchase_units[0].shipping.address.admin_area_2}
state={invoiceDetails.purchase_units[0].shipping.address.admin_area_1}
postalCode={invoiceDetails.purchase_units[0].shipping.address.postal_code}
/>
}
</> </>
); );
}; };