I am trying to edit an open source PHP wrapper to export an XML.
Original:
$new_invoice = array(
array(
"Type"=>"ACCREC",
"Contact" => array(
"ContactID" => "[contact id]"
),
"Date" => "2010-04-08",
"DueDate" => "2010-04-30",
"Status" => "SUBMITTED",
"LineAmountTypes" => "Exclusive",
"LineItems"=> array(
"LineItem" => array(
array(
"Description" => "Just another test invoice",
"Quantity" => "2.0000",
"UnitAmount" => "250.00",
"AccountCode" => "200"
)
)
)
)
);
I've added another LineItem, so it become like this:
$new_invoice = array(
array(
"Type"=>"ACCREC",
"Contact" => array(
"ContactID" => "7937FF1D-B135-4BD0-A219-4B621EA3808C"
),
"Date" => "2010-04-08",
"DueDate" => "2010-04-30",
"Status" => "DRAFT",
"LineAmountTypes" => "Exclusive",
"LineItems"=> array(
"LineItem" => array(
array(
"Description" => "Just another test invoice",
"Quantity" => "2.0000",
"UnitAmount" => "250.00",
"AccountCode" => "200"
)
)
"LineItem" => array(
array(
"Description" => "Just another test invoice2",
"Quantity" => "2.0000",
"UnitAmount" => "250.00",
"AccountCode" => "200"
)
)
)
)
);
but I got an error that said "expecting a closing bracket )
It seems that all brackets are there so I am confused.
You've missed a comma after the first LineItem array.
Also, since your two arrays share the same key ("LineItem"), the second will overwrite the first, but that's unrelated to the syntax error.
Edit: To deal with that problem (here assuming that something like SimpleXML is in use):
"LineItems"=> array(
"LineItem" => array(
array(
"Description" => "Just another test invoice",
"Quantity" => "2.0000",
"UnitAmount" => "250.00",
"AccountCode" => "200"
),
array(
"Description" => "Just another test invoice2",
"Quantity" => "2.0000",
"UnitAmount" => "250.00",
"AccountCode" => "200"
)
)
)
You forgot a Comma... after the first line item...
your code should look like:
<?php
$new_invoice = array(
array(
"Type"=>"ACCREC",
"Contact" => array(
"ContactID" => "7937FF1D-B135-4BD0-A219-4B621EA3808C"
),
"Date" => "2010-04-08",
"DueDate" => "2010-04-30",
"Status" => "DRAFT",
"LineAmountTypes" => "Exclusive",
"LineItems"=> array(
"0" => array(
array(
"Description" => "Just another test invoice",
"Quantity" => "2.0000",
"UnitAmount" => "250.00",
"AccountCode" => "200"
)
),
"1" => array(
array(
"Description" => "Just another test invoice2",
"Quantity" => "2.0000",
"UnitAmount" => "250.00",
"AccountCode" => "200"
)
)
)
)
);
?>
Also your second line item is overriding the first one.
I will recommend a counter and be incrementing it after every lineitem is added...
It's the missing comma, but like others said, the second one overwrites the first. Try this instead:
$new_invoice = array(
array(
"Type"=>"ACCREC",
"Contact" => array(
"ContactID" => "7937FF1D-B135-4BD0-A219-4B621EA3808C"
),
"Date" => "2010-04-08",
"DueDate" => "2010-04-30",
"Status" => "DRAFT",
"LineAmountTypes" => "Exclusive",
"LineItems"=> array(
"LineItem" => array(
array(
"Description" => "Just another test invoice",
"Quantity" => "2.0000",
"UnitAmount" => "250.00",
"AccountCode" => "200"
),
array(
"Description" => "Just another test invoice2",
"Quantity" => "2.0000",
"UnitAmount" => "250.00",
"AccountCode" => "200"
)
)
)
)
);
print_r($new_invoice);
Only Comma (,) is missing in your array after first "lineitem"
Related
$productShopify = array(
"body_html" => $product->description[(int)$id_lang],
"created_at" => $date_now,
"handle" => $product->name[(int)$id_lang],
"id" => $product->id,
"images"=>array(array("src"=>$ProducDATA['image']),
// array("src"=>$imageShopify[0]),
array("src"=>$imageShopify[1])
),
"options" => array("name" => $group_name[0],array("name" => $group_name[1])),
"product_type" => $ProducDATA['Category_1'],
"published_at" => $date_now,
"published_scope" => "global",
"tags" => $Tag,
"template_suffix" => null,
"title" => $product->name[(int)$id_lang],
"variants" => array(
array(
"barcode" => $product->ean13,
"grams" => $product->weight,
"option1" => $attribute_name[0][1],
"price" => $product->price,
"sku" => $ProducDATA['manufacturer_reference'].'-1',
"title" => $product->name[(int)$id_lang],
// "id" => 808950810,
"product_id" => $product->id,
"inventory_quantity" => $product->id
),
array(
"barcode" => $product->ean13,
"grams" => $product->weight,
"option2" => $attribute_name[0][2],
"price" => $product->price,
"sku" => $ProducDATA['manufacturer_reference'].'-2',
"title" => $product->name[(int)$id_lang],
// "id" => 808950810,
"product_id" => $product->id,
"inventory_quantity" => $product->id
),
array(
"barcode" => $product->ean13,
"grams" => $product->weight,
"option1" => $attribute_name[1][1],
"price" => $product->price,
"sku" => $ProducDATA['manufacturer_reference'].'-3',
"title" => $product->name[(int)$id_lang],
// "id" => 808950810,
"product_id" => $product->id,
"inventory_quantity" => $product->id
),
array(
"barcode" => $product->ean13,
"grams" => $product->weight,
"option2" => $attribute_name[1][2],
"price" => $product->price,
"sku" => $ProducDATA['manufacturer_reference'].'-4',
"title" => $product->name[(int)$id_lang],
// "id" => 808950810,
"product_id" => $product->id,
"inventory_quantity" => $product->id
)
),
"vendor" => $ProducDATA['marque'],
);
I can not find the solution to send a product with several options on shopify, syntax error
I try everything but impossible to understand the principle if you have an idea
I can send the product on shopify with 1 option but not +
I can send the product on shopify with only 1 option but I do not start with Php be indulgent
Each of your 4 variants should have a value for both option1 and an option2. For example:
array(
"barcode" => $product->ean13,
"grams" => $product->weight,
"option1" => $attribute_name[0][1],
"option2" => $attribute_name[0][2],
"price" => $product->price,
"sku" => $ProducDATA['manufacturer_reference'].'-1',
"title" => $product->name[(int)$id_lang],
// "id" => 808950810,
"product_id" => $product->id,
"inventory_quantity" => $product->id
)
Also, you should check the response code and response body from the Shopify API. If your request fails, it will contain information that is useful in tracking down the error.
I am getting an error
I want to implement payment gateway but the error is much like :
Illegal string offset 'code'
Illegal string offset 'description'
'MercadoPagoException' with message 'transaction_amount attribute can't be null
This is my array
$preference_data = array(
"items" => array(
array(
"id" => "Code",
"title" => $rest['name'],
"currency_id" => "USD",
"picture_url" =>"https://www.mercadopago.com/org-img/MP3/home/logomp3.gif",
"description" => "Description",
"category_id" => "Category",
"quantity" => 1,
"unit_price" => intval($total_price)
)
),
"payer" => array(
"name" => "APRO".$a[0],
"surname" => $a[1],
"email" => "test_user_44825516#testuser.com",
"date_created" => "2014-07-28T09:50:37.521-04:00",
"phone" => array(
"area_code" => "11",
"number" => "4444-4444"
),
"identification" => array(
"type" => "DNI",
"number" => "12345678"
),
"address" => array(
"street_name" => "Street",
"street_number" => 123,
"zip_code" => "1430"
)
),
"back_urls" => array(
"success" => "http://localhost/duncan_fooddelivery/api/success.php",
"failure" => "http://www.failure.com",
"pending" => "http://www.pending.com"
),
"auto_return" => "approved",
"payment_methods" => array(
"excluded_payment_methods" => array(
array(
"id" => "amex",
)
),
"excluded_payment_types" => array(
array(
"id" => "ticket"
)
),
"installments" => 24,
"default_payment_method_id" => null,
"default_installments" => null,
),
"shipments" => array(
"receiver_address" => array(
"zip_code" => "1430",
"street_number"=> 123,
"street_name"=> "Street",
"floor"=> 4,
"apartment"=> "C"
)
),
"token" => array (
"card_id" => NULL,
"card_number_length" => 16,
"cardholder" => array (
"identification" => array (
"number" => "11111111",
"type" => "DNI",
),
"name" => "APROARPAN BAJPAI",
),
"creation_date" => NULL,
"due_date" => NULL,
"esc" => NULL,
"expiration_month" => 6,
"expiration_year" => 2022,
"first_six_digits" => "450995",
"id" => "ad56c2e6cb4a2b17c18e632139366a7e",
"last_four_digits" => "3704",
"last_modified_date" => NULL,
"luhn_validation" => "true",
"public_key" => "TEST-1a0ffe62-165f-4e7b-b501-df15741b6d87",
"security_code_length" => 3,
"status" => "active",
"trunc_card_number" => NULL,
"used_date" => NULL,
),
"transaction_amount" => 60,
"notification_url" => "https://www.your-site.com/ipn",
"external_reference" => "Reference_1234",
"expires" => false,
"expiration_date_from" => null,
"expiration_date_to" => null,
);
I am passing "transaction_amount" => 60, But still getting same error.
Please help me I am searching from 5 Hours.
Thanks.
I would like to push this:
"serialNumber" => $serial,
Inside product array of $postArray and
"note" => array(
"text" => $note
),
before reservationDate Inside $postArray.
$postArray = array(
"reservationDate" => $timeData,
"emailLanguageCode" => "it_it",
"shipToCode" => $_POST['ship'],
"customer" => array(
"firstName" => $_POST['firstName'],
"lastName" => $_POST['lastName'],
"emailId" => $_POST['emailId'],
"phoneNumber" => $_POST['phoneNumber'],
"address" => array(
"addressLine1" => $_POST['addressLine1'],
"city" => $_POST['city'],
"state" => $_POST['state'],
"country" => $_POST['country'],
"postalCode" => $_POST['postalCode']
)
),
"product" => array(
"productCode" => $_POST['productCode'],
"issueReported" => $_POST['issueReported']
)
);
And result that I would like:
$postArray = array(
"note" => array(
"text" => $note
),
"reservationDate" => $timeData,
"emailLanguageCode" => "it_it",
"shipToCode" => $_POST['ship'],
"customer" => array(
"firstName" => $_POST['firstName'],
"lastName" => $_POST['lastName'],
"emailId" => $_POST['emailId'],
"phoneNumber" => $_POST['phoneNumber'],
"address" => array(
"addressLine1" => $_POST['addressLine1'],
"city" => $_POST['city'],
"state" => $_POST['state'],
"country" => $_POST['country'],
"postalCode" => $_POST['postalCode']
)
),
"product" => array(
"serialNumber" => $serial,
"productCode" => $_POST['productCode'],
"issueReported" => $_POST['issueReported']
)
);
I tried this:
array_push($postArray["product"][],$numeroSerie);
Please help.
Just simply do this
$postArray['product']['serialNumber'] = $serial;
Make First Array that which array you want in product array after use array_merge
$postArray1 = array(
"note" => array(
"text" =>15
));
$postArray = array(
"reservationDate" =>1,
"emailLanguageCode" => 2,
"shipToCode" => 3,
"customer" => array(
"firstName" => 4,
"lastName" => 5,
"emailId" => 6,
"phoneNumber" => 7,
"address" => array(
"addressLine1" => 8,
"city" =>9,
"state" => 10,
"country" => 11,
"postalCode" => 12
)
),
"product" => array(
"productCode" => 13,
"issueReported" => 14
)
);
array_merge($postArray1,$postArray);
very simple, add this two line code :
// insert "serialNumber" into "product" array
$postArray['product']['serialNumber'] = $serial;
// insert "note" into begining array element
$postArray = array('note'=>array("text" => $note))+$postArray;
These two lines,
$postArray['product'] = $serial + $postArray['product'];
$postArray = $numeroSerie + $postArray ;
And that's it,
+ operator gives union of both array and offcourse will satisfy your requirement.
Give it a try, this will work.
You will Try this i think its working fine.
$data=array("note" => array("text" => $note));
$postArray= array_merge($data,$postArray);
$postArray["product"]=array_merge(array("serialNumber"=> $serial),$postArray["product"]);
I have a array I have to post (json). But the value accountNr should either be $val_nc_iban or should be NULL depending on a certain value outside this array. So how can I either echo $val_nc_iban (is a string) or NULL (not string) inside an array depending on the outside value?
$curl_post_data_nc = array(
"person" => array(
"title" => "$val_nc_persontitle",
"nationalNr" => NULL,
"firstName" => "$val_nc_personfirstname",
"lastName" => "$val_nc_personsurname",
"birthDate" => "$new_val_nc_persondob"
),
"company" => array(
"type" => "$val_nc_companytype",
"name" => "$val_nc_companyname",
"vat" => "$val_nc_companyvat",
"nace" => "$val_nc_companynace",
"website" => NULL
),
"contact" => array(
"email" => "$val_nc_personemail",
"mobile" => "$val_nc_personphone",
"telephone" => NULL
),
"contract" => array(
"referenceDate" => "$val_nc_refdate",
"startDate" => "$val_nc_startdate"
),
"payment" => array(
"paymentMethodEmail" => false,
"paymentMethodMail" => true,
"paymentInterval" => "$val_nc_paymentbilling",
"method" => "$val_nc_paymentmethod",
"accountNr" => $val_nc_result = ($val_nc_paymentmethod == 'TRANSFER') ? NULL : "$val_nc_iban"
),
"deliveryAddress" => array(
"building" => "HOUSE",
"street" => "$val_nc_personstreet",
"streetNr" => "$val_nc_personstreetnr",
"floor" => NULL,
"boxNr" => NULL,
"localityCode" => "$val_nc_personpostcode",
"localityName" => "$val_nc_personlocality"
),
"invoiceAddress" => array(
"sameAsDelivery" => false,
"building" => "HOUSE",
"street" => "$val_nc_billstreet",
"streetNr" => "$val_nc_billstreetnr",
"floor" => NULL,
"boxNr" => NULL,
"localityCode" => "$val_nc_billpostcode",
"localityName" => "$val_nc_billlocality"
),
"gasMeter" => array(
"ean" => "$val_nc_ean",
"nr" => NULL,
"type" => "gas",
"electric" => NULL,
"gas" => array(
"usage" => $val_nc_gasusage,
"formula" => "TTF103532"
)
),
Why do you put the variables in quotes? You can use their actual value in the array!
Example:
$curl_post_data_nc = array(
"person" => array(
"title" => $val_nc_persontitle,
"nationalNr" => NULL,
"firstName" => $val_nc_personfirstname,
"lastName" => $val_nc_personsurname,
"birthDate" => $new_val_nc_persondob
),
"company" => array(
"type" => $val_nc_companytype,
"name" => $val_nc_companyname,
"vat" => $val_nc_companyvat,
"nace" => $val_nc_companynace,
"website" => NULL
),
"contact" => array(
"email" => $val_nc_personemail,
"mobile" => $val_nc_personphone,
"telephone" => NULL
),
"contract" => array(
"referenceDate" => $val_nc_refdate,
"startDate" => $val_nc_startdate
),
"payment" => array(
"paymentMethodEmail" => false,
"paymentMethodMail" => true,
"paymentInterval" => $val_nc_paymentbilling,
"method" => $val_nc_paymentmethod,
"accountNr" => $val_nc_result = ($val_nc_paymentmethod == 'TRANSFER') ? NULL : $val_nc_iban
),
"deliveryAddress" => array(
"building" => "HOUSE",
"street" => $val_nc_personstreet,
"streetNr" => $val_nc_personstreetnr,
"floor" => NULL,
"boxNr" => NULL,
"localityCode" => $val_nc_personpostcode,
"localityName" => $val_nc_personlocality
),
"invoiceAddress" => array(
"sameAsDelivery" => false,
"building" => "HOUSE",
"street" => $val_nc_billstreet,
"streetNr" => $val_nc_billstreetnr,
"floor" => NULL,
"boxNr" => NULL,
"localityCode" => $val_nc_billpostcode,
"localityName" => $val_nc_billlocality
),
"gasMeter" => array(
"ean" => $val_nc_ean,
"nr" => NULL,
"type" => "gas",
"electric" => NULL,
"gas" => array(
"usage" => $val_nc_gasusage,
"formula" => "TTF103532"
)
),
I am using soap custom api for create and add product in cart. I have some custom options associated with the product.
I have to add a product in cart with custom options. I have tried it but it always gives me Error: Please specify the product required option(s).
I have implemented below mentioned two codes for this but both are not working.
$arrProducts = array(
array(
"product_id" => "26",
"qty" => 2,
"sku" => "CHEERCARDS-HAPPY BIRTHDAY-MEOW",
"quantity" => 2,
"bundle_option" => array(
"111" => "toemailid#test.com",
"112" => "fromemailid#test.com",
"110" => "QR Code",
"109" => "Simple message",
),
),
)
and
$arrProducts = array(
array(
"product_id" => "26",
"qty" => 1,
"sku" => "CHEERCARDS-HAPPY BIRTHDAY-MEOW",
"quantity" => 1,
'options' => array (
0 => array(
'key' => 111,
'value' => '1001'
),
1 => array(
'key' => 112,
'value' => '1001'
),
2 => array(
'key' => 110,
'value' => '1001'
),
3 => array(
'key' => 109,
'value' => '1001'
),
),
),
)
you don't need to to give product id and sku with quantity and qty. just try this code.
$arrProducts = array( array( "product_id" => "26", "qty" => 2, "bundle_option" => array( "111" => "toemailid#test.com", "112" => "fromemailid#test.com", "110" => "QR Code", "109" => "Simple message" ) ) );
This works for me. I hope it 'll work for you also.