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.
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.
m trying to extract data from json in mysql:
my sample mysql query is :
I already tried using below code , but its returning null vales , But i have value in database .
In the below code column_name1 and er_trading_sales is column name and table_name is the name of the table
SELECT column_name1 as column_name1,
substring(
er_trading_sales,
locate('"C2":{"type":"label","value":"":{"m":"label","k":"(a) to registered dealers","v":"}","C3": { "type":"textbox","value":"',er_trading_sales,locate('"Trading_B_I"',er_trading_s ales))+70,
(locate('"},"C4',er_trading_sales,locate('"C2":{"type":"label","value":"":{"m":"label","k":"(a) to registered dealers","v":"}","C3":{"type":"textbox","value":"',er_trading_sales,locate('"Trading_B_I"',er_trading_sales))) - (locate('"C2":{"type":"label","value":"":{"m":"label","k":"(a) to registered dealers","v":"}","C3": {"type":"textbox","value":"',er_trading_sales,locate('"Trading_B_I"',er_trading_ sales))+70))
) as TradingAmount
from table_name
//sample json
"R10" => array(
"col_data" => array(
"CR1" => array(
"C1" => array(
"type" => "label",
"value" => "8.",
),
"C2" => array(
"type" => "complex",
"value" => array(
"m" => "label",
"k" => "Turnover of sale of goods taxable # ^d^%",
"v" => "4.5"
),
),
"C3" => array(
"type" => "textbox",
"value" => "",
"validation" => "decimal",
),
"C4" => array(
"type" => "textbox",
"value" => "",
"validation" => "decimal",
'htmlOptions' => array('readonly' => 'readonly'),
),
"C5" => array(
"type" => "",
"value" => "",
),
),
),
),
i want "value" of "C3" => array(
"type" => "textbox",
"value" => "",
"validation" => "decimal",
)
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 would like to make a request with two $ group.
Here you can see the structure of my data :
{
"_id" : ObjectId("573495af4e998fec800041a7"),
"uniqid" : "not573495aeda725",
"status" : "waiting,
"date" : ISODate("2016-05-12T14:39:42.000+0000"),
"id_transaction" : null,
"hash_file" : null,
"user" : "Michel",
"desc" : "undefined",
"pharmacy" : "p56cdc980ba57f"
},
{
"_id" : ObjectId("573495af4e998fec800041a7"),
"uniqid" : "not573495aeda725",
"status" : "waiting,
"date" : ISODate("2016-05-12T14:39:42.000+0000"),
"id_transaction" : null,
"hash_file" : null,
"user" : "Julien",
"desc" : "undefined",
"pharmacy" : "p72gdf210xs68t"
}
Here is where i am in my aggregate from now :
$pipeline = array(
array(
'$project' => array(
'year' => array('$year' => array('$add' => array('$date',$offset))),
'month' => array('$month' => array('$add' => array('$date',$offset))),
'day' => array('$dayOfMonth' => array('$add' => array('$date',$offset))),
'hour' => array('$hour' => array('$add' => array('$date',$offset))),
"uniqid" => 1,
"status" => 1,
"date" => 1,
"pharmacy" => 1
)
),
array(
'$match' => array(
'$and' => array(
array(
"status" => array('$ne' => null)
),
array(
"status" => array('$ne' => "error")
),
array(
"date" => array('$lte' => new MongoDate(time()))
),
array(
"date" => array('$gt' => new MongoDate(strtotime($sixMonthAgo->format('Y-m-d'))))
)
)
)
),
array(
'$group' => array(
'_id' => array(
"month" => array('$month' => '$date'),
"year" => array('$year' => '$date'),
),
'count' => array('$sum' => 1)
)
),
array(
'$group' => array(
'_id' => array(
),
'count' => array('$sum' => 1)
)
)
);
I would like to have the number on lines where status = "waiting" grouping my request by "year/month" and by "pharmacy".
Thank you so much !
array(
'$group' => array(
'_id' => array(
"month" => array('$month' => '$date'),
"year" => array('$year' => '$date'),
"status"
),
'count' => array('$sum' => 1)
)
),
then instead of grouping - use match for _id.status ="waiting"
You do not need any $project ... Mongo Query should be -
[
{
"$match": {
"status": "waiting",
"date": {
"$gt": {
"$date": "DATE_SIX_MONTH_AGO"
},
"$lt": {
"$date": "CURRENT_DATE"
}
}
}
},
{
"$group": {
"_id": {
"month": {
"$month": "$date"
},
"year": {
"$year": "$date"
},
"pharmacy": "$pharmacy"
},
"count": {
"$sum": 1
}
}
}
]
In PHP it should be -
$pipeline = array(
array(
'$match' => array(
"status" => "waiting",
"date" => array(
'$lte' => new MongoDate(time()),
'$gt' => new MongoDate(strtotime($sixMonthAgo->format('Y-m-d')))
)
)
),
array(
'$group' => array(
'_id' => array(
"month" => array('$month' => '$date'),
"year" => array('$year' => '$date'),
"pharmacy" => '$pharmacy'
),
'count' => array('$sum' => 1)
)
)
);
I did not test in PHP, check and correct the syntax errors if any.
I have an array of data that I want to send to a SOAP client.
It all works, but one piece of data isn't transmitted, as revealed by __getLastRequest().
Here's my code
<?php
$test_array = array(
"request" => array(
"dateTime" => "2011-12-05T11:37:06.0000000+00:00",
"brandId" => 2,
"extSysId" => 11,
"extSysPassword" => "xxxxx",
"customer" => array(
"title" => "Mr",
"firstName" => "Dec",
"lastName" => "Test-Two",
"address" => array(
"type" => "Residential",
"pafValidated" => TRUE,
"houseNumber" => "xx",
"houseName" => "",
"line1" => "xx xx",
"line2" => "",
"line3" => "xx",
"line4" => "",
"line5" => "",
"postcode" => "xxx xxx"
),
"phones" => array(
0 => array(
"type" => "Home",
"_" => "xxx xxxxxx"
),
1 => array(
"type" => "Work",
"preferred" => TRUE,
"_" => ""
),
2 => array(
"type" => "Mobile",
"preferred" => TRUE,
"_" => ""
)
),
"email" => "xxxx.xxxx#gmail.com"
),
"nextPurchase" => array(
"date" => "2014-05-01"
),
"dataProtection" => array(
"group" => FALSE,
"thirdParty" => FALSE
),
"futureContactChannels" => array(
0 => array(
"type" => "Whitemail",
"option" => FALSE
),
1 => array(
"type" => "Email",
"option" => FALSE
),
2 => array(
"type" => "Phone",
"option" => FALSE
),
3 => array(
"type" => "SMS",
"option" => FALSE
)
),
"vehicleRequests" => array(
0 => array(
"derivativeCode" => "xxxxx",
"type" => "T"
)
),
"Retailer" => array(
0 => array (
"dealerCode" => "00082"
)
),
"company" => array(
"companyName" => "",
"jobTitle" => ""
),
"campaign" => array(
"code" => "xxxxxxxxx",
"source" => 69
),
"notes" => "blah balh: ."
)
);
$client = new SoapClient("/xxx/xxxx/xxxxxx/xxxxx.wsdl", array(
"login" => "xxx",
"password" => "xxx",
"location" => "http://xxx.xxx.xxx.xxx/xxxxxx/Some.asmx",
"uri" => "urn:xmethods-delayed-quotes",
'trace' => 1,
'exceptions' => 1,
'soap_version' => 'SOAP_1_1',
'encoding' => 'UTF-8',
'features' => 'SOAP_USE_XSI_ARRAY_TYPE'
));
$client->CallComeFunction($test_array);
echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
echo "*************************************************\n";
echo "Response:\n" . $client->__getLastResponse() . "\n";
The Retailed[0]['dealerCode'] is the only piece of info that is omitted from the sent XML.
Any ideas?
Many thanks.
As mac says, formatting the code would be nice, but one thing I notice is the 'Retailer' field is the only one that's capitalized. Not sure if the WSDL has any influence on what is sent by the client but it might.
Double check the WSDL and see if the field should be 'retailer' instead. Any chance you can share the WSDL, btw?
EDIT
After reviewing the WSDL, 'retailer' is the way to go:
<s:element minOccurs="0" maxOccurs="1" name="retailer" type="tns:Retailer"/>
The payload should be formatted differently as well, it should be
"retailer" => array(
"dealerCode" => "00082"
)
per the WSDL
<s:complexType name="Retailer">
<s:attribute name="dealerCode" type="s:string"/>
</s:complexType>