<?php
$jsonAsString = ' {
"header": {
"dateTimeIssued": "2022-12-28T00:34:00Z",
"receiptNumber": "INV-2204577",
"uuid": "",
"previousUUID": "",
"referenceOldUUID": "",
"currency": "EGP",
"exchangeRate": 0,
"sOrderNameCode": "sOrderNameCode",
"orderdeliveryMode": "FC"
},
"documentType": {
"receiptType": "SC",
"typeVersion": "1.2"
},
"seller": {
"rin": "619013583",
"companyTradeName": "شركة الصوفى",
"branchCode": "0",
"branchAddress": {
"country": "EG",
"governate": "cairo",
"regionCity": "city center",
"street": "16 street",
"buildingNumber": "14BN",
"postalCode": "74235",
"floor": "1F",
"room": "3R",
"landmark": "tahrir square",
"additionalInformation": "talaat harb street"
},
"deviceSerialNumber": "Soft2010",
"activityCode": "5610"
},
"buyer": {
"type": "F",
"id": "313717919",
"name": "taxpayer 1",
"mobileNumber": "+201020567462",
"paymentNumber": "987654"
},
"itemData": [
{
"internalCode": "880609",
"description": "Samsung A02 32GB_LTE_BLACK_DS_SM-A022FZKDMEB_A022 _ A022_SM-A022FZKDMEB",
"itemType": "GS1",
"itemCode": "037000401629",
"unitType": "EA",
"quantity": 35,
"unitPrice": 247.96000 ,
"netSale": 7810.74000 ,
"totalSale": 8678.60000 ,
"total": 8887.04360 ,
"commercialDiscountData": [
{
"amount": 867.86000,
"description": "XYZ"
}
],
"itemDiscountData": [
{
"amount": 10,
"description":"ABC"
},
{
"amount": 10,
"description": "XYZ"
}
],
"valueDifference": 20,
"taxableItems": [
{
"taxType": "T1",
"amount": 1096.30360 ,
"subType": "V009",
"rate": 14
}
]
}
],
"totalSales": 8678.60000,
"totalCommercialDiscount": 867.86000,
"totalItemsDiscount": 20,
"extraReceiptDiscountData": [
{
"amount": 0,
"description": "ABC"
}
],
"netAmount": 7810.74000,
"feesAmount": 0,
"totalAmount": 8887.04360,
"taxTotals": [
{
"taxType": "T1",
"amount": 1096.30360
}
],
"paymentMethod": "C",
"adjustment": 0
}';
$jsonAsArray = json_decode($jsonAsString);
function Serialize11($documentStructure): string
{
if (is_float($documentStructure)) {
return '"' . number_format($documentStructure, 5, '.', '') . '"';
}
if (!is_object($documentStructure) and !is_array($documentStructure)) {
return '"' . $documentStructure . '"';
}
$serializedString = '';
foreach ($documentStructure as $key => $value) {
if (! is_array($value)) {
$serializedString .= '"' . strtoupper($key) . '"';
$serializedString .= Serialize11($value);
}
if (is_array($value)) {
$serializedString .= '"' . strtoupper($key) . '"';
foreach ($value as $elementItem) {
$serializedString .= '"' . strtoupper($key) . '"';
$serializedString .= Serialize11($elementItem);
}
}
}
return $serializedString;
}
$serializedString = Serialize11($jsonAsArray);
$uuid = hash('sha256', $serializedString);
echo strtoupper ($uuid);
?>
What I have tried:
<pre><?php
$jsonAsString = ' {
"header": {
"dateTimeIssued": "2022-12-28T00:34:00Z",
"receiptNumber": "INV-2204577",
"uuid": "",
"previousUUID": "",
"referenceOldUUID": "",
"currency": "EGP",
"exchangeRate": 0,
"sOrderNameCode": "sOrderNameCode",
"orderdeliveryMode": "FC"
},
"documentType": {
"receiptType": "SC",
"typeVersion": "1.2"
},
"seller": {
"rin": "619013583",
"companyTradeName": "شركة الصوفى",
"branchCode": "0",
"branchAddress": {
"country": "EG",
"governate": "cairo",
"regionCity": "city center",
"street": "16 street",
"buildingNumber": "14BN",
"postalCode": "74235",
"floor": "1F",
"room": "3R",
"landmark": "tahrir square",
"additionalInformation": "talaat harb street"
},
"deviceSerialNumber": "Soft2010",
"activityCode": "5610"
},
"buyer": {
"type": "F",
"id": "313717919",
"name": "taxpayer 1",
"mobileNumber": "+201020567462",
"paymentNumber": "987654"
},
"itemData": [
{
"internalCode": "880609",
"description": "Samsung A02 32GB_LTE_BLACK_DS_SM-A022FZKDMEB_A022 _ A022_SM-A022FZKDMEB",
"itemType": "GS1",
"itemCode": "037000401629",
"unitType": "EA",
"quantity": 35,
"unitPrice": 247.96000 ,
"netSale": 7810.74000 ,
"totalSale": 8678.60000 ,
"total": 8887.04360 ,
"commercialDiscountData": [
{
"amount": 867.86000,
"description": "XYZ"
}
],
"itemDiscountData": [
{
"amount": 10,
"description":"ABC"
},
{
"amount": 10,
"description": "XYZ"
}
],
"valueDifference": 20,
"taxableItems": [
{
"taxType": "T1",
"amount": 1096.30360 ,
"subType": "V009",
"rate": 14
}
]
}
],
"totalSales": 8678.60000,
"totalCommercialDiscount": 867.86000,
"totalItemsDiscount": 20,
"extraReceiptDiscountData": [
{
"amount": 0,
"description": "ABC"
}
],
"netAmount": 7810.74000,
"feesAmount": 0,
"totalAmount": 8887.04360,
"taxTotals": [
{
"taxType": "T1",
"amount": 1096.30360
}
],
"paymentMethod": "C",
"adjustment": 0
}';
$jsonAsArray = json_decode($jsonAsString);
function Serialize11($documentStructure): string
{
if (is_float($documentStructure)) {
return '"' . number_format($documentStructure, 5, '.', '') . '"';
}
if (!is_object($documentStructure) and !is_array($documentStructure)) {
return '"' . $documentStructure . '"';
}
$serializedString = '';
foreach ($documentStructure as $key => $value) {
if (! is_array($value)) {
$serializedString .= '"' . strtoupper($key) . '"';
$serializedString .= Serialize11($value);
}
if (is_array($value)) {
$serializedString .= '"' . strtoupper($key) . '"';
foreach ($value as $elementItem) {
$serializedString .= '"' . strtoupper($key) . '"';
$serializedString .= Serialize11($elementItem);
}
}
}
return $serializedString;
}
$serializedString = Serialize11($jsonAsArray);
$uuid = hash('sha256', $serializedString);
echo strtoupper ($uuid);
?>