Package Exports
- @paycargo/js-react
- @paycargo/js-react/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@paycargo/js-react) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
React TypeScript
First, run npm i @paycargo/js-react
in your Command Line Interface. Afterwards, the following dependency will be found in the package.json
. The ellipses (...) represent the presence of other possible code.
. . .
{
"dependencies": {
. . .
"@paycargo/js-react": "^0.0.2"
. . .
}
. . .
Next, import React into the file, set up the useState
, and define handleOnClick
. We have included some dummy transaction information to fully illustrate what this implementation would look like.
import React, { useState, ChangeEvent} from "react";
import "./styles.css";
export default function App() {
const [selectedTransactions, setSelectedTransactions] = useState<any[]>([]);
const transactions = [
{
number: "2123190692",
departureDate: "2023-11-17T00:00:00.000Z",
arrivalDate: "2023-11-29T00:00:00.000Z",
paymentDueDate: "2023-11-22T00:00:00.000Z",
hasArrived: "N",
total: 45.38,
direction: "Inbound",
customerRefNumber: "29338586",
parent: "HLCUDUB231004840",
notes: "4716747",
type: "Invoice",
index: 0,
vendorId: 281573,
},
{
number: "2123190470",
departureDate: "2023-10-10T00:00:00.000Z",
arrivalDate: "2023-11-26T00:00:00.000Z",
paymentDueDate: "2023-11-22T00:00:00.000Z",
total: 6395.04,
direction: "Inbound",
customerRefNumber: "23686246",
parent: "HLCUBKK231007945",
batchId: 344788,
notes: "4716734",
type: "Invoice",
index: 1,
vendorId: 281573,
},
{
number: "2123190469",
departureDate: "2023-10-10T00:00:00.000Z",
arrivalDate: "2023-11-26T00:00:00.000Z",
paymentDueDate: "2023-11-22T00:00:00.000Z",
hasArrived: "N",
total: 6595.04,
customerRefNumber: "23686246",
parent: "HLCUBKK231007945",
notes: "4716733",
type: "Invoice",
index: 2,
vendorId: 281573,
},
];
function handleOnClick(event: ChangeEvent<HTMLInputElement>) {
const { target } = event;
const { value, checked } = target;
if (checked) {
setSelectedTransactions((state) => [
...state,
transactions[Number(value)],
]);
} else {
setSelectedTransactions((state) => {
const newState = state.filter((trans) => trans.index !== Number(value));
return newState;
});
}
}
Now, the PayCargo Checkout button must be loaded by importing and defining defineCustomElements
as well as importing the PayCargo Checkout component itself and passing Options into it.
import React, { useState, ChangeEvent, useEffect, useRef } from "react";
import { defineCustomElements, PaycargoCheckout } from "@paycargo/js-react";
import "./styles.css";
defineCustomElements();
// OPTIONS that will be passed as a prop to the PaycargoCheckout Component
const options = {
env: "dev", // PROD , TEST, DEV
code: "odex", // Provied by PayCargo
brand: "odex", // Provied By PayCargo
originURL: "https://d566dp.csb.app", // URL to whitelist
};
. . .
<div style={{ border: "1px solid black", marginBottom: "10px" }} />
<div id="paycargo-button-container" className="text-center">
<PaycargoCheckout
options={options}
pcTransactions={selectedTransactions}
/>
</div>
Event Listeners
We want to listen to two types of events: (1) when the transaction is being closed to see if any action was taken, and (2) when a payment has been attempted or successfully approved. To do this, we need to implement useEffect
and add event listeners to the PayCargo Checkout component.
import React, { useState, ChangeEvent, useEffect, useRef } from "react";
. . .
export default function App() {
. . .
const paycargoRef = useRef<HTMLPaycargoCheckoutElement | null>(null);
. . .
. . .
useEffect(() => {
const listener = (event: any) => {
console.log("PaycargoCheckout Event", event.detail);
};
paycargoRef?.current?.addEventListener("close", listener);
paycargoRef?.current?.addEventListener("paymentResponse", listener);
return () => {
paycargoRef?.current?.removeEventListener("close", listener);
paycargoRef?.current?.removeEventListener("paymentResponse", listener);
};
}, [paycargoRef]);
return ( . . .
<PaycargoCheckout
ref={paycargoRef}
options={options}
pcTransactions={selectedTransactions}
/>
. . .
How to Pass Data to the PayCargo Checkout Component
Properties
Property Name | Values | Type | Required | Description |
---|---|---|---|---|
options | object |
✔️ | Passing necessary options into the component | |
env | string |
✔️ | Options: local , dev , test , prod |
|
code | string |
✔️ | PayCargo integration code |
|
originURL | string |
✔️ | Host URL where component is loaded | |
brand | string |
|||
size | string |
Options: full , lg , md where the default size is md |
||
visible | true / false | boolean |
✔️ | To make PayCargo Checkout component visible or hidden |
pcTransactions | object[] |
✔️ | PayCargo transaction object | |
type | string |
✔️ | Transaction type (example: Invoice , Terminal Fee , etc) |
|
vendorId | number / null |
✔️ | ||
number | string |
✔️ | ||
direction | 'Inbound' / 'Outbound' |
✔️ | ||
total | number |
✔️ | Amount of total transaction. If transaction lines are present, then the total should equal the sum of all transaction line amounts | |
arrivalDate | string / date |
|||
hasArrived | 'Y' / 'N' |
✔️ | ||
bolLink | string |
|||
parent | string |
|||
shipperRefNumber | string |
|||
customerRefNumber | string |
|||
subcategory | string |
|||
paymentDueDate | date |
|||
notes | string / null |
|||
transactionLines | array |
Transaction Lines
Property Name | Values | Type | Required | Description |
---|---|---|---|---|
transactionLines | object |
Passing necessary options into the component. Note: these property names are case sensitive | ||
AMOUNT | number |
✔️ | Amount for transaction line | |
DESCRIPTION | string |
✔️ | ||
START_DATE | string / date |
|||
END_DATE | string / date |
|||
QUANTITY | number |
|||
UNIT_PRICE | number |
|||
containerNumber | string |
OSRA: container number | ||
availabilityDate | string / date |
OSRA: first available date | ||
pod | string |
OSRA: port of discharge | ||
sfd | string |
OSRA: start free day | ||
lfd | string |
OSRA: last free day | ||
freeTimeDays | string |
OSRA: free time days | ||
ddr | string |
OSRA: demurrage detention rule | ||
feeContact | string |
OSRA: mitigation contact | ||
complianceStatement | string |
OSRA: compliance statement | ||
commonCarrierStatement | string |
OSRA: common carrier statement |