2015-06-04 3 views
0

Вот немного PHP, который захватывает данные и создает мои данные JSON, но у меня возникают проблемы с выводом подтверждения покупки. Я думаю, из-за дефиса «-», поэтому хочу заменить его, прежде чем я снова вернусь к моему сценарию, чтобы вместо этого было check_purchase. Я думаю, что это моя проблема здесь, но она не работает и думает, что я делаю это неправильно.Использование PHP для замены кода кодирования JSON

Вы видите мою попытку в нижней части кода.

// Make curl request 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 4_3_2 like Mac OD X; en-us) AppleWebKit/535.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5"); 
    $url = 'http://marketplace.envato.com/api/edge/'.$envato_author_username.'/'.$envato_author_apikey.'/verify-purchase:'.$envato_purchase_code.'.json'; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $ch_data = curl_exec($ch); 
    curl_close($ch); 

    if (empty($ch_data)) { # no data returned - Timeout or similar 
     $result['code'] = 111; 
     $result['msg'] = 'FAILED to Activate License. Envato API request returned: ' . curl_error($ch) . " Please try again later."; 
    } 
    else { 
     $json_data = json_decode($ch_data, true); 
     $result['data'] = $json_data; 

     if (isset($json_data['verify-purchase']) && count($json_data['verify-purchase']) > 0) { 
      $license_type = $json_data['verify-purchase']['licence']; 
      $item_name = $json_data['verify-purchase']['item_name']; 
      $item_id = $json_data['verify-purchase']['item_id']; 
      $buyer = $json_data['verify-purchase']['buyer']; 
      $created_at = $json_data['verify-purchase']['created_at']; 
      if (strcasecmp($envato_username, $buyer) === 0) { 
       $result['code'] = 200; 
       $result['msg'] = "SUCCESS. " . $item_name . " License Activated. Purchase date: " . $created_at; 
      } 
      else { 
       $result['code'] = 122; 
       $result['msg'] = "FAILED to Activate License for " . $item_name . ". Envato states this purchase code is owned by another user."; 
      } 
     } else if ($json_data['error']) { 
      $result['code'] = 112; 
      $result['msg'] = 'FAILED to Activate License. Envato API request returned: ' . $json_data['error']; 
     } else { 
      $result['code'] = 121; 
      $result['msg'] = 'FAILED to Activate License. Envato states purchase code ' . $envato_purchase_code . ' is not valid.'; 
     } 
    } 
} 

$result['data'] = str_replace('verify-purchase','verify_purchase', $result['data']); 
echo json_encode($result); 
+0

James: принятие, голосование или ответ на ответы не являются обязательными для переполнения стека, но это, безусловно, приятно. Можете ли вы ответить на пользователя ниже, чей ответ пришел через пару часов после того, как вы отправили свой вопрос? – halfer

ответ

1

Я думаю, что это выглядит проще, чем то, что вы поставили.

$newArray = array(); 

$findKey = 'verify-purchase';//Find what is exist now 
$replaceKey = 'verify_purchase';//replace what you want 
foreach($arr[""data""] as $key => $value){ 
    if(isset($arr[""data""][$findKey])){ 
     $newArray[$replaceKey] = $value; 
    } 
} 

echo json_encode($newArray); 

Пожалуйста, замените выше коды к последнему две строки, которая выглядеть, как показано ниже:

$result['data'] = str_replace('verify-purchase','verify_purchase', $result['data']); 
echo json_encode($result); 

Позвольте мне знать, если это не достаточно по вашему запросу.

Смежные вопросы