You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
4.3 KiB
PHP
121 lines
4.3 KiB
PHP
<?php
|
|
|
|
require_once __DIR__ . "/required.php";
|
|
|
|
$shipmentinfo = [];
|
|
|
|
try {
|
|
|
|
if (empty($_REQUEST["to_street"])) {
|
|
throw new Exception("Please enter the delivery address.");
|
|
}
|
|
|
|
if (empty($_REQUEST["to_name"]) && empty($_REQUEST["to_company"])) {
|
|
throw new Exception("Please enter the recipient's name and/or a company name.");
|
|
}
|
|
|
|
if (empty($_REQUEST["to_zip"]) && (empty($_REQUEST["to_city"]) || empty($_REQUEST["to_state"]))) {
|
|
throw new Exception("Please enter the delivery ZIP code, or if you don't know, enter the city and state and we'll find the ZIP code for you.");
|
|
}
|
|
|
|
if (empty($_REQUEST["from_name"]) || empty($_REQUEST["from_street"])) {
|
|
throw new Exception("Please enter your return address.");
|
|
}
|
|
|
|
if (empty($_REQUEST["from_zip"]) && (empty($_REQUEST["from_city"]) || empty($_REQUEST["from_state"]))) {
|
|
throw new Exception("Please enter your ZIP code, or if you don't know, enter your city and state and we'll find the ZIP code for you.");
|
|
}
|
|
|
|
$shipmentinfo["from_address"] = \EasyPost\Address::create([
|
|
"verify" => array("delivery"),
|
|
"name" => $_REQUEST["from_name"],
|
|
"street1" => $_REQUEST["from_street"],
|
|
"street2" => $_REQUEST["from_street2"],
|
|
"city" => $_REQUEST["from_city"],
|
|
"state" => $_REQUEST["from_state"],
|
|
"zip" => $_REQUEST["from_zip"],
|
|
"country" => "US"
|
|
]);
|
|
|
|
$shipmentinfo["to_address"] = \EasyPost\Address::create([
|
|
"verify" => array("delivery"),
|
|
"name" => $_REQUEST["to_name"],
|
|
"company" => $_REQUEST["to_company"],
|
|
"street1" => $_REQUEST["to_street"],
|
|
"street2" => $_REQUEST["to_street2"],
|
|
"city" => $_REQUEST["to_city"],
|
|
"state" => $_REQUEST["to_state"],
|
|
"zip" => $_REQUEST["to_zip"],
|
|
"country" => "US"
|
|
]);
|
|
|
|
$shipmentinfo["parcel"] = \EasyPost\Parcel::create([
|
|
"predefined_package" => "Letter",
|
|
"weight" => 3.5
|
|
]);
|
|
|
|
if ($_REQUEST["postagetype"] == "certified") {
|
|
$shipmentinfo["options"]["certified_mail"] = true;
|
|
} else if ($_REQUEST["postagetype"] == "certified_receipt") {
|
|
$shipmentinfo["options"]["certified_mail"] = true;
|
|
$shipmentinfo["options"]["return_receipt"] = true;
|
|
}
|
|
|
|
$shipmentinfo["options"]["label_format"] = "PNG";
|
|
$shipmentinfo["options"]["label_size"] = "7x3";
|
|
|
|
$shipmentinfo["options"]["label_date"] = date("c", strtotime("tomorrow"));
|
|
|
|
$shipment = \EasyPost\Shipment::create($shipmentinfo);
|
|
|
|
$selectedrate = [];
|
|
for ($i = 0; $i < count($shipment->rates); $i++) {
|
|
$rate = $shipment->rates[$i];
|
|
|
|
$retail_rate = $rate->retail_rate ?? ($rate->list_rate ?? $rate->rate);
|
|
if ($rate->service != "First") {
|
|
continue;
|
|
}
|
|
|
|
$selectedrate = [
|
|
"id" => $rate->id,
|
|
"cost" => $retail_rate,
|
|
"price" => $retail_rate + 1.00
|
|
];
|
|
}
|
|
|
|
if (empty($selectedrate)) {
|
|
throw new Exception("Unable to find price. Check your destination address and try again.");
|
|
}
|
|
|
|
$address = $shipment->to_address;
|
|
$fromaddress = $shipment->from_address;
|
|
|
|
header("Content-Type: application/json");
|
|
|
|
exit(json_encode([
|
|
"status" => "OK",
|
|
"rate" => $selectedrate,
|
|
"shipmentid" => $shipment->id,
|
|
"address" => [
|
|
"name" => $address->name ?? "",
|
|
"company" => $address->company ?? "",
|
|
"street1" => $address->street1 ?? "",
|
|
"street2" => $address->street2 ?? "",
|
|
"city" => $address->city ?? "",
|
|
"state" => $address->state ?? "",
|
|
"zip" => $address->zip ?? ""
|
|
],
|
|
"fromaddress" => [
|
|
"name" => $fromaddress->name ?? "",
|
|
"street1" => $fromaddress->street1 ?? "",
|
|
"street2" => $fromaddress->street2 ?? "",
|
|
"city" => $fromaddress->city ?? "",
|
|
"state" => $fromaddress->state ?? "",
|
|
"zip" => $fromaddress->zip ?? ""
|
|
]]
|
|
));
|
|
} catch (Exception $ex) {
|
|
header("Content-Type: application/json");
|
|
exit(json_encode(["status" => "ERROR", "message" => $ex->getMessage()]));
|
|
} |