world! I'm having some troubles with my API script with OLX. Can someone help me, please?
I'm making a JSON that returns this:
{
"access_token": "7b1cb35b4eca28be89174d75baf66e00d2728bf6",
"ad_list": [
{
"id": "31dasa1d23",
"operation": "insert",
"category": 1040,
"subject": "Título teste - Anúncio OLX - Marília/SP",
"body": "Imóvel com Sala, Copa, Cozinha planejada e Gabinete, 3 Dormitórios sendo 1 suíte, Lavanderia com Área de Serviço Coberta, Espaço Gourmet com Churrasqueira e Chuveirão para Ducha, Garagem para 2 Carros, Cerca Elétrica e Interfone. Confira mais sobre o imóvel: http://www.silvioimoveis.com.br/imovel-residencial-professor-antonio-da-silva-penteado-marilia-sp-venda/principal/imovel/principal/5394",
"phone": 1433333333,
"type": "s",
"price": 260000,
"zipcode": "17504000",
"params":{
"rooms": "3",
"garage_spaces": "2"
},
"images": [
"http://homologacao.silvioimoveis.com.br/fotos/imoveis_internos/5394/2175ea284f81f03.jpg",
"http://homologacao.silvioimoveis.com.br/fotos/imoveis_internos/5394/bb0ff30ac2bcbae.jpg"
]
}
]
}
And my code to create this JSON is:
$json = '{
"access_token": "'.$data['access_token'].'",
"ad_list": [
{
"id": "'.$jsonGerado[0]['id'].'",
"operation": "'.$jsonGerado[0]['operation'].'",
"category": '.$jsonGerado[0]['category'].',
"subject": "'.$jsonGerado[0]['subject'].'",
"body": "'.$jsonGerado[0]['body'].'",
"phone": '.$jsonGerado[0]['phone'].',
"type": "'.$jsonGerado[0]['type'].'",
"price": '.$jsonGerado[0]['price'].',
"zipcode": "'.$jsonGerado[0]['zipcode'].'",
"params": {
"rooms": "'.$jsonGerado[0]['params']['rooms'].'",
"garage_spaces": "'.$jsonGerado[0]['params']['garage_spaces'].'"
},
"images": [
'.$jsonGerado[0]['images']['linkFotoPrincipal'].',
'.$jsonGerado[0]['images']['linkDemaisFotos'][0].',
'.$jsonGerado[0]['images']['linkDemaisFotos'][1].',
'.$jsonGerado[0]['images']['linkDemaisFotos'][2].',
'.$jsonGerado[0]['images']['linkDemaisFotos'][3].',
'.$jsonGerado[0]['images']['linkDemaisFotos'][4].',
'.$jsonGerado[0]['images']['linkDemaisFotos'][5].',
'.$jsonGerado[0]['images']['linkDemaisFotos'][6].',
'.$jsonGerado[0]['images']['linkDemaisFotos'][7].',
'.$jsonGerado[0]['images']['linkDemaisFotos'][8].',
'.$jsonGerado[0]['images']['linkDemaisFotos'][9].'
]
}
]
}';
The CURL code is:
curl_setopt_array($curl, array(
CURLOPT_URL => "https://apps.olx.com.br/autoupload/import",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => $json
));
And finally, the error is:
When I don't use json_encode() in $json variable, I got "NULL value found..." instead of "string value found"
As RiggsFolly mentioned, use json_encode on a PHP array or object rather than building the JSON yourself. Here's an example of how you might do that with the example code you provided:
$json_array = array(
"access_token" => $data['access_token'],
"ad_list" => array(
array(
"id" => $jsonGerado[0]['id'],
"operation" => $jsonGerado[0]['operation'],
"category" => $jsonGerado[0]['category'],
"subject" => $jsonGerado[0]['subject'],
"body" => $jsonGerado[0]['body'],
"phone" => $jsonGerado[0]['phone'],
"type" => $jsonGerado[0]['type'],
"price" => $jsonGerado[0]['price'],
"zipcode" => $jsonGerado[0]['zipcode'],
"params" => array(
"rooms" => $jsonGerado[0]['params']['rooms'],
"garage_spaces" => $jsonGerado[0]['params']['garage_spaces']
),
"images" => array(
$jsonGerado[0]['images']['linkFotoPrincipal'],
$jsonGerado[0]['images']['linkDemaisFotos'][0],
$jsonGerado[0]['images']['linkDemaisFotos'][1],
$jsonGerado[0]['images']['linkDemaisFotos'][2],
$jsonGerado[0]['images']['linkDemaisFotos'][3],
$jsonGerado[0]['images']['linkDemaisFotos'][4],
$jsonGerado[0]['images']['linkDemaisFotos'][5],
$jsonGerado[0]['images']['linkDemaisFotos'][6],
$jsonGerado[0]['images']['linkDemaisFotos'][7],
$jsonGerado[0]['images']['linkDemaisFotos'][8],
$jsonGerado[0]['images']['linkDemaisFotos'][9]
)
)
)
);
You can then do $json = json_encode($json_array);. I hope that helps!
Related
I am trying to connect Shipstation with my website using REST API and creating order which can be added to manual store inside Shipstation by default. However, I am getting error 401 unauthorised continuously, even I copied API key and API secret from Shipstation account and passed its base64 form to Authorization header.
Here is my Simple Post Request :
$api_key = 'SS_KEY';
$api_secret = 'SS_SECRET';
$token = base64_encode($api_key.':'.$api_secret);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://ssapi.shipstation.com/orders/createorder/',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"orderNumber": "TEST-ORDER-API-DOCS",
"orderStatus": "awaiting_shipment",
"customerUsername": "abc",
"customerEmail": "headhoncho#whitehouse.gov",
"billTo": {
"name": "Inam Ali",
"company": "abc",
"street1": "1",
"street2": null,
"street3": null,
"city": "Pesh",
"state": "KPK",
"postalCode": 25000,
"country": "Pakistan",
"phone": "0315333333",
"residential": true
},
"shipTo": {
"name": "Inam Ali",
"company": "US Govt",
"street1": "1600 Pennsylvania Ave",
"street2": "Oval Office",
"street3": null,
"city": "Washington",
"state": "DC",
"postalCode": "20500",
"country": "US",
"phone": "555-555-5555",
"residential": true
},
"items": [
{
"lineItemKey": "vd08-MSLbtx",
"name": "Test item #1",
"imageUrl": null,
"quantity": 2,
"unitPrice": 99.99,
"taxAmount": 2.5,
}
],
"amountPaid": 218.73,
"taxAmount": 5,
"tagIds": [
53974
]
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'host: ssapi.shipstation.com',
'Authorization: Basic '.$token
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
I am creating and sending an envelope (in PHP) via the DocuSign API.
Here is the PHP code:
$headers = array(
'Authorization: Bearer '. $infos["access_token"],
'Content-Type:application/json'
);
$file = base64_encode("document.pdf");
$postfields = [
"documents" => [
[
"documentBase64" => $file,
"documentId" => "1",
"name" => "Document",
"fileExtension" => "pdf"
]
],
"emailSubject" => "Please sign this document set",
"recipients" => [
"carbonCopies" => [
[
"email" => "[EMAIL_CC]",
"name" => "CC",
"recipientId" => "2",
"routingOrder" => "2"
]
],
"signers" => [
[
"email" => "[EMAIL]",
"name" => "Hey",
"recipientId" => "1",
"recipientIdGuid" => "1",
"routingOrder" => "1",
"tabs" => [
"signHereTabs" => [
[
"anchorString" => "« Lu et approuvé »",
"name" => "« Lu et approuvé »",
"anchorUnits" => "pixels",
"anchorXOffset" => "20",
"anchorYOffset" => "35"
]
]
]
]
]
],
"status" => "sent"
];
$curl = curl_init("https://demo.docusign.net/restapi/v2.1/accounts/".$GLOBALS['account_id']."/envelopes");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($postfields));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
// Exécution de la requête
$infos2 = curl_exec($curl);
if($infos2 === false) {
return curl_error($curl);
} else {
$infos2 = json_decode($infos2, true);
curl_close($curl);
return var_dump($infos2);
}
When I run my script, I get the error message:
array (size=2)
'errorCode' => string 'ANCHOR_TAG_PROCESSING_FAILURE' (length=29)
'message' => string 'An Error Occurred during anchor tag processing. Invalid document' (length=64)
However, when I use the Docusign Explorer API, everything works fine.
Here is the recovered JSON code :
{
"documents": [
{
"documentBase64": "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...",
"documentId": "1",
"fileExtension": "pdf",
"name": "Document"
}
],
"emailSubject": "Please sign this document set",
"recipients": {
"carbonCopies": [
{
"email": "[EMAIL_CC]",
"name": "CC",
"recipientId": "2",
"routingOrder": "2"
}
],
"signers": [
{
"email": "[EMAIL]",
"name": "Hey",
"recipientId": "1",
"recipientIdGuid": "1",
"routingOrder": "1",
"tabs": {
"signHereTabs": [
{
"anchorString": "« Lu et approuvé »",
"name": "« Lu et approuvé »",
"anchorUnits": "pixels",
"anchorXOffset": "20",
"anchorYOffset": "35"
}
]
}
}
]
},
"status": "sent"
}
I have the impression that the problem comes from the "base64" encoding of the file.
Do you have any idea how to solve my problem ?
Thank you in advance.
For your information, I finally found the solution to my problem!
I did this :
$file = base64_encode(file_get_contents("Chemin/document.pdf"));
instead of :
$file = base64_encode("document.pdf");
Thank you in advance.
I have created an array to convert into json file in php. But as per the requirement I need to assign an array to this array element. it's an array inside an array.
"data" => array( // data array
array(
"event_name" => "Purchase",
"event_time" => time(),
"event_id" => $order_id,
"user_data" => array(
"client_ip_address" => $ip,
"client_user_agent" => $browser,
"em" => $email,
"ph" => $phone,
"fbc" =>$fbp,
"fbp" =>$fbc,
"fn" => $fn,
"ct" => $ct,
"st" => $st,
"zp" => $zp,
"country" => $country,
"external_id" => $email
),
"contents" => $items,
// "id" => $item_ids,
// "quantity" => count($item_qty),
// // "delivery_category"=> "home_delivery",
// "order_id" => $order_id
// ),
"custom_data" => array(
"currency" => "GBP",
"value" => $order_total,
),
"action_source" => "website",
"event_source_url" => $fullURL,
),
)
);
But my $item array look like this when I echo
{
"id": 814,
"order_id": 36956,
"name": "Pearson BTEC Level 7 Certificate in Strategic Management and Leadership (RQF)",
"product_id": 19555,
"variation_id": 0,
"quantity": 2,
"tax_class": "",
"subtotal": "1158",
"subtotal_tax": "0",
"total": "1158",
"total_tax": "0",
"taxes": {
"total": [],
"subtotal": []
},
"meta_data": []
},
{
"id": 815,
"order_id": 36956,
"name": "Pearson BTEC Level 7 Diploma in Strategic Management and Leadership (RQF)",
"product_id": 19107,
"variation_id": 0,
"quantity": 1,
"tax_class": "",
"subtotal": "999",
"subtotal_tax": "0",
"total": "999",
"total_tax": "0",
"taxes": {
"total": [],
"subtotal": []
},
"meta_data": []
}
And when I assign this $items and converted to json then I can see only the ides of the array
"user_data": {
"client_ip_address": "2402:d000:a200:a4a8:f06d:40a:cf85:e26d",
"client_user_agent": "",
"em": "b99526fedef7fe1da29e27d6f09cb64efew536978778e6cde3d8277d71a04398d1a4",
"ph": "db80005a39b11372054b7708cac76gsaaww47af6ed3fe4b37b9a8b2be435e2fcff04a7",
"fbc": "",
"fbp": "",
"fn": "83cd072a16ddb3d793c2f5bcd7d0basdree5a04af680279cf6a26fb8dffe57ce3b51a",
"ct": "17a0730b80e55f4bee9569be3f7e6d0wqw500c5568ecb8d785759d7151ef40f5bbd",
"st": "e3b0c44298fc1c149afbf4c8996fb9sas2427ae41e4649b934ca495991b7852b855",
"zp": "ac7bb74de6884ffce919c15fef4193749sdsd4588026c643973946713ac46da540d",
"country": "c820736841e811c96d30b14eb998feb6bsddc2c9d0764b7731267438dc7d6bb5b59",
"external_id": "b99526fedef7fe1da29e27d6f09ssscb64536978778e6cde3d8277d71a04398d1a4"
},
"contents": [
{
"814": {},
"815": {}
}
],
result should be look like this in this way in "centents" element
"contents" : [{'id':'ABC123','quantity' :2,'item_price':5.99}, {'id':'XYZ789','quantity':2, 'item_price':9.99, 'delivery_category': 'in_store'}]
I think the problem is that your $items, is actually an array of "strings" (json)
try to do a json_decode() on those $items before adding it to the content.
anyway, when you ask a question try to remove all unnecessary stuff, and make an example with the minimum code you need help with, in this case it takes a lot of reading through stuff just to understand the issue.
I'm trying to validate the following json file but I can't find the way to access the "Address" child, how should I do it? Everything goes fine until it tries to access the "address" field.
Json:
{
"first_name": "Test",
"last_name": "Test",
"email": "test#gmail.com",
"mobile_phone": 123456789,
"address": {
"country": "Test",
"postal_code": "Test",
"city": "Test",
"street": "Test",
"number": "Test",
"floor": "Test",
"door": "Test"
},
"password": "Test",
"birth_date": "2005-12-30"
}
Code:
$data = $this->validator->validate($request, [
"first_name" => v::stringVal()->notEmpty(),
"last_name" => v::stringVal()->notEmpty(),
"email" => v::notEmpty()->email(),
"mobile_phone" => v::intVal()->notEmpty(),
"address" =>[
"country" => v::stringVal()->notEmpty(),
"postal_code" => v::stringVal()->notEmpty(),
"city" => v::stringVal()->notEmpty(),
"street" => v::stringVal()->notEmpty(),
"number" => v::stringVal()->notEmpty(),
"floor" => v::stringVal()->notEmpty(),
"door" => v::stringVal()->notEmpty(),
],
"password" => v::base64()->notEmpty(),
"birth_date" => v::date()->notEmpty()
]);
Looks like you are using Respect\Validation\Validator. We can make use of chained validation and the Key function to validate sub-arrays as shown in the docs.
$data = [
'parentKey' => [
'field1' => 'value1',
'field2' => 'value2'
'field3' => true,
]
];
Using the next combination of rules, we can validate child keys.
v::key(
'parentKey',
v::key('field1', v::stringType())
->key('field2', v::stringType())
->key('field3', v::boolType())
)
->assert($data); // You can also use check() or validate()
Applied to your data, the validation could look like this:
use Respect\Validation\Validator as v;
$json = json_decode('{
"first_name": "Test",
"last_name": "Test",
"email": "test#gmail.com",
"mobile_phone": 123456789,
"address": {
"country": "Test",
"postal_code": "Test",
"city": "Test",
"street": "Test",
"number": "Test",
"floor": "Test",
"door": "Test"
},
"password": "Test",
"birth_date": "2005-12-30"
}', true);
v::create()
->key('first_name', v::stringType()->length(1, 32))
->key('last_name', v::stringVal()->notEmpty())
//->..
->key('address',
v::key('country', v::stringType()->length(1, 32))
->key('postal_code', v::stringType()->length(1, 32))
->key('city', v::stringType()->length(1, 32))
//->..
)
->key('password', v::stringVal()->notEmpty())
->key('birth_date', v::stringVal()->notEmpty())
->assert($json); // You can also use check() or validate()
That is the way to access the child of the json:
$this->validator->validate($request, [
"first_name" => v::stringVal()->notEmpty(),
"last_name" => v::stringVal()->notEmpty(),
"email" => v::notEmpty()->email(),
"mobile_phone" => v::intVal()->notEmpty(),
"address" => v::notEmpty()
->key("country", v::stringVal()->notEmpty())->key("postal_code", v::stringVal())->key("city", v::stringVal()->notEmpty())->key("street", v::stringVal()->notEmpty())->key("number", v::stringVal())->key("floor", v::stringVal())->key("door", v::stringVal()),
"password" => v::base64()->notEmpty(),
"birth_date" => v::date('d/m/Y')->notEmpty()
]);
I must send a post request with the following json data structure using PHP and cURL:
{
"assistanceRequest":
{
"type": "TECHNICAL_DATA",
"deliveryMode": "NORMAL",
"creationDate": "2020-04-09T10:09:00+02:00",
"source": "ATD",
"language": "FR",
"country": "FR"
},
"customer":
{
"code": 123456,
"login": "client#company.com",
"companyName": "Workshop Harris",
"phoneNumber": "+44 123456789",
"email": "workshop#company.com"
},
}
However I don't understand how to create a similar request. I tried with the following code but I suppose it's not correct because I should group the data in two blocks:
$post = [
'type' => 'TECHNICAL_DATA',
'deliveryMode' => 'NORMAL',
'creationDate' => '2020-04-16T12:46:33+02:00',
'source' => 'ATD',
'language' => 'FR',
'country' => 'CH',
'code' => '123456',
'login' => 'FR1234561A',
'companyName' => 'Workshop Harris Love',
'phoneNumber' => '+390432561543',
'email' => 'client#client.com', ];
$post_encoded = json_encode($post);
$ch = curl_init('http://222.333.333.444/opafffws/public/api/req');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_encoded);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($post_encoded))
);
$response = curl_exec($ch);
echo "The response 1: <br>" . $response;
echo "<br>";
curl_close($ch);
Can help?
<?php
$data = [
'assistanceRequest' => [
'type' => 'TECHNICAL_DATA',
'deliveryMode' => 'NORMAL',
"creationDate" => "2020-04-09T10:09:00+02:00",
"source" => "ATD",
"language" => "FR",
"country" => "FR"
],
'customer' => [
"code" => 123456,
"login" => "client#company.com",
"companyName" => "Workshop Harris",
"phoneNumber" => "+44 123456789",
"email" => "workshop#company.com"
],
];
echo "<pre>"; print_r(json_encode($data));
This is an example for your structure. Tweak it as you need.
The output of the above code will be:
{
"assistanceRequest": {
"type": "TECHNICAL_DATA",
"deliveryMode": "NORMAL",
"creationDate": "2020-04-09T10:09:00+02:00",
"source": "ATD",
"language": "FR",
"country": "FR"
},
"customer": {
"code": 123456,
"login": "client#company.com",
"companyName": "Workshop Harris",
"phoneNumber": "+44 123456789",
"email": "workshop#company.com"
}
}