#php
#php
Вопрос:
Вот весь мой код:
<?php
require_once 'lib/shopify.php';
//require_once 'csv.php';
function csvToJson($csv)
{
$rows = explode("n", trim($csv));
$csvarr = array_map(function($row)
{
$keys = array(
'var0',
'var1',
'var2',
'var3',
'var4',
'var5',
'var6',
'var7',
'var8',
'var9'
);
return array_combine($keys, str_getcsv($row));
}, $rows);
$json = json_encode($csvarr);
return $json;
}
$t = "bac2486aa2b31aa5aed1fdd62e77a4ae";
$sc = new ShopifyClient("mine-329.myshopify.com/", $t, API_KEY, SECRET);
$order = array();
if (!isset($t)) {
if (!isset($_GET['signature'])) {
$url = $sc->getAuthorizeUrl("read_orders");
header('Location: ' . $url);
}
if (isset($_GET['code'])) {
$accTok = $sc->getAccessToken($_GET['code']);
echo "token = " . $accTok;
exit;
$orders = $sc->call('GET', 'admin/orders.json', array(
'published_status' => 'published'
));
foreach ($orders as $order) {
echo $order['id'];
echo $order['email'];
}
}
}
if (isset($t)) {
$orders = $sc->call('GET', 'admin/orders.json', array(
'published_status' => 'published'
));
$myarray = array();
$list[] = array(
'Name',
'Email',
'Financial Status',
'Paid at',
'Fulfillment Status',
'Fulfilled at',
'Accepts Marketing',
'Currency',
'Subtotal',
'Shipping',
'Taxes',
'Total',
'Discount code',
'Discount Amount',
'Shipping Method',
'Created at',
'Lineitem quantity',
'Lineitem name',
'Lineitem price',
'Lineitem compare at price',
'Lineitem sku',
'Lineitem requires shipping',
'Lineitem taxable',
'Lineitem fulfillment status',
'Billing Name',
'Billing Street',
'Billing Address1',
'Billing Address2',
'Billing Company',
'Billing City',
'Billing Zip',
'Billing Province',
'Billing Country',
'Billing Phone',
'Shipping Name',
'Shipping Street',
'Shipping Address1',
'Shipping Address2',
'Shipping Company',
'Shipping City',
'Shipping Zip',
'Shipping Province',
'Shipping Country',
'Shipping Phone',
'Notes',
'Note Attributes',
'VAT',
'Cancelled at',
'Payment Method',
'Payment Reference',
'Refunded Amount',
'Vendor',
'Id',
'Tags'
);
$list = array_filter($list);
$empty_note_attribute = "";
if (empty($order['note_attributes'])) {
$empty_note_attribute = "";
} else {
$empty_note_attribute = $order['note_attributes'];
}
$empty_discount_codes = "";
if (empty($order['discount_codes'])) {
$empty_discount_codes = "";
} else {
$empty_discount_codes = $order['discount_codes'];
}
foreach ($orders as $order) {
$str = file_get_contents('slim-2.json'); //give the address of json file
$str = mb_convert_encoding($str, 'UTF-8');
$json_country = json_decode($str, true);
//Here is the problem you are passing `$str` but you should pass `$json_country`
if (is_array($json_country)) {
foreach ($json_country as $key => $value) {
if (array_search(trim($order['billing_address']['country']), $value)) // Added trim
{
$order['billing_address']['country'] = $value['alpha-2'];
}
if (isset($order['shipping_address']['country'])) {
if (array_search(trim($order['shipping_address']['country']), $value)) // Added trim
{
$order['shipping_address']['country'] = $value['alpha-2'];
}
}
}
}
$csv = file_get_contents('states.csv');
$csv = mb_convert_encoding($csv, 'UTF-8');
$json = csvToJson($csv);
$json_state = json_decode($json, true);
$bilProvin = trim($order['billing_address']['province']);
$shpProvin = '';
if (isset($order['shipping_address'])) {
$shpProvin = $order['shipping_address']['province'];
}
foreach ($json_state as $keys) {
if (array_search($bilProvin, $keys)) // Added trim
{
$order['billing_address']['province'] = substr($keys['var1'], 3);
}
if (isset($order['shipping_address'])) {
if (array_search($shpProvin, $keys)) {
$order['shipping_address']['province'] = substr($keys['var1'], 3);
}
}
}
$orders_lineitem = $order['line_items'];
$lineitemcount = 0;
foreach ($orders_lineitem as $lineitem) {
/*
Fulfillment Status
*/
$fulfill_status = "";
if (empty($order['fulfillment_status'])) {
$fulfill_status = "pending";
} else {
$fulfill_status = $order['fulfillment_status'];
}
/*
Lineitem Fulfillment Status
*/
$fulfillment_status = '';
if (empty($order['fulfillments'][0]['created_at'])) {
$fulfillment_status = "pending";
} else {
$fulfillment_status = $order['line_items'][0]['fulfillment_status'];
}
$variants = "";
$variants = $sc->call('GET', "admin/variants/" . $lineitem['variant_id'] . ".json", array(
'published_status' => 'published'
));
$requires_shipping = "false";
if ($lineitem['requires_shipping']) {
$requires_shipping = "true";
}
$lineitem_taxable = "false";
if ($lineitem['taxable']) {
$lineitem_taxable = "true";
}
//** Accepts Marketting **
$accepts_marketting = "no";
if ($order['buyer_accepts_marketing']) {
$accepts_marketting = "yes";
}
$shipping = '';
if (count($order['shipping_lines']) > 0) {
$shipping = $order['shipping_lines'][0]['price'];
}
/*
Fulfilled at
*/
$created_at = '';
if (count($order['fulfillments']) > 0) {
$created_at = $order['fulfillments'][0]['created_at'];
}
/*
total tax
*/
$total_tax = '';
if (count($order['line_items'][0]['tax_lines']) > 0) {
$total_tax = $order['line_items'][0]['tax_lines'][0]['price'];
}
/*
Payment reference
*/
$payment = '';
if ($order['checkout_id']) {
$payment = sprintf('c%s.1', $order['checkout_id']);
}
/*
Refunded Amount
*/
$refund_price = '';
if (count($order['refunds']) > 0) {
foreach ($order['refunds'] as $refund) {
if (count($refund['transactions']) > 0) {
$refund_price = $refund['transactions'][0]['receipt']['paid_amount'];
}
}
}
if ('pending' == $fulfill_status || 'partial' == $fulfill_status) {
$created_at = '';
}
if ($lineitemcount == 0) {
array_push($list, array(
$order['name'],
$order['email'],
$order['financial_status'],
(($order['financial_status'] != 'partially_refunded') amp;amp; ($order['financial_status'] != 'refunded') amp;amp; ($order['financial_status'] != 'authorized') ? $order['created_at'] : null),
$fulfill_status,
$created_at,
$accepts_marketting,
$order['currency'],
$order['subtotal_price'],
(($shipping > 0) ? $shipping : 0),
$order['total_tax'],
$order['total_price'],
$empty_discount_codes,
$order['total_discounts'],
(($shipping > 0) ? $order['shipping_lines'][0]['code'] : null),
$order['created_at'],
$lineitem['quantity'],
$lineitem['name'],
$lineitem['price'],
$variants['compare_at_price'],
$lineitem['sku'],
$requires_shipping,
$lineitem_taxable,
$fulfillment_status,
$order['billing_address']['name'],
$order['billing_address']['address1'],
$order['billing_address']['address1'],
$order['billing_address']['address2'],
$order['billing_address']['company'],
$order['billing_address']['city'],
$order['billing_address']['zip'],
$order['billing_address']['province'],
$order['billing_address']['country'],
$order['billing_address']['phone'],
(($shipping > 0) ? $order['shipping_address']['name'] : null),
(($shipping > 0) ? $order['shipping_address']['address1'] : null),
(($shipping > 0) ? $order['shipping_address']['address1'] : null),
(($shipping > 0) ? $order['shipping_address']['address2'] : null),
(($shipping > 0) ? $order['shipping_address']['company'] : null),
(($shipping > 0) ? $order['shipping_address']['city'] : null),
(($shipping > 0) ? $order['shipping_address']['zip'] : null),
(($shipping > 0) ? $order['shipping_address']['province'] : null),
(($shipping > 0) ? $order['shipping_address']['country'] : null),
(($shipping > 0) ? $order['shipping_address']['phone'] : null),
$order['note'],
$empty_note_attribute,
$total_tax,
$order['cancelled_at'],
$order['payment_details']['credit_card_company'],
$payment,
(($refund_price > 0) ? $refund_price : 0),
$lineitem['vendor'],
$order['id'],
$order['tags']
));
} else {
array_push($list, array(
$order['name'],
$order['email'],
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
$empty_discount_codes,
'',
'',
$order['created_at'],
$lineitem['quantity'],
$lineitem['name'],
$lineitem['price'],
$variants['compare_at_price'],
$lineitem['sku'],
$requires_shipping,
$lineitem_taxable,
$fulfillment_status,
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
'',
$lineitem['vendor'],
'',
$order['tags']
));
}
$lineitemcount ;
}
}
$order = $_GET;
$list[] = array_to_csv_download($myarray, // this array is going to be the second row
"numbers.csv");
$list = array_filter($list);
array_to_csv_download($list);
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
header("Pragma: no-cache");
header("Expires: 0");
}
function array_to_csv_download($list)
{
$output = fopen("php://output", "w");
foreach ($list as $row) {
fputcsv($output, $row);
//print_r($row); die;
}
fclose($output);
}
?>
Я создал одно приложение, используя приведенный выше код, который используется для загрузки деталей в виде CSV-файла из интернет-магазина.
Теперь все детали понятны. в чем моя проблема, в приведенном выше коде значение where is $order['billing_address']['province']
отображается неправильно.
Причина в том, что я хочу добавить некоторое условие в свой приведенный выше код. Если $order['billing_address']['province']
значение ‘KY’, оно показывает пустое поле.Но я проверил
$province = '';
if($order['billing_address']['province']! = 'KY') {
$province = $order['billing_address']['province'];
}
в приведенном выше коде foreach ($json_state as $keys)
отобразится ошибка синтаксического анализа.
Я не знаю, как добавить код в мой приведенный выше код. Я новичок в php.Может ли кто-нибудь мне помочь?
Спасибо!!!
Комментарии:
1.
$list[] = array(
создает 2D-массив, вызовarray_filter
которого не приведет вас далеко. Я думаю, вы имели в виду$list = array()
, нет?
Ответ №1:
неправильно:
if($order['billing_address']['province']! = 'KY') {
правильно:
if($order['billing_address']['province'] != 'KY') {