2012-05-10 3 views
1

Я пытаюсь реализовать TrialPay/Offerwall/Dealspot в приложении Facebook. В их documentation они дают пример того, что JSON выглядит, что они посылают вам:TrialPay отправляет неправильный JSON по обратному вызову

{"order_id":9006316682257,"buyer":409697,"app":107032282669135,"receiver":409697, 
"amount":1,"time_placed":1322622026,"update_time":1322622027,"data":"", 
"items":[{"item_id":"0","title":"3 Fred Currency","description":"Make it rain!", 
"image_url":"http:\/\/external.ak.fbcdn.net\/safe_image.php?d=AQDldsPcWsejAJdC&url=http\u00253A\u00252F\u00252Fwww.etftrends.com\u00252Fwp-content\u00252Fuploads\u00252F2011\u00252F10\u00252Fcurrency-trading.jpg", 
"product_url":"","price":1,"data":"{\"modified\":{\"product\":\"URL_TO_APP_CURR_WEBPAGE\", 
\"product_title\":\"Fred Currency\",\"product_amount\":3,\"credits_amount\":1}}"}],"status":"placed"} 

Они говорят, что если вы json_decode его как массив, вы должны получить это:

Array (
    [order_id] => 9006316682257 
    [buyer] => 409697 
    [app] => 107032282669135 
    [receiver] => 409697 
    [amount] => 1 
    [time_placed] => 1322622026 
    [update_time] => 1322622027 
    [data] => 
    [items] => Array (
       [0] => Array (
         [item_id] => 0 
         [title] => 3 Fred Currency 
         [description] => Make it rain! 
         [image_url] => http://external.ak.fbcdn.net/safe_image.php?d=AQDldsPcWsejAJdC&url=http%3A%2F%2Fwww.etftrends.com%2Fwp-content%2Fuploads%2F2011%2F10%2Fcurrency-trading.jpg 
         [product_url] => 
         [price] => 1 
         [data] => {"modified":{"product":"URL_TO_APP_CURR_WEBPAGE","product_title":"Fred Currency","product_amount":3,"credits_amount":1}} 
        ) 
      ) 
    [status] => placed 
) 

Это не хотя, данные на самом деле выглядит следующим образом:

[data] => "{"modified":{"product":"URL_TO_APP_CURR_WEBPAGE","product_title":"Fred Currency","product_amount":3,"credits_amount":1}}" 

JSON, находясь внутри строки, заставляя его недействительным JSON. Есть ли простой способ удалить эти цитаты?

ответ

0

Разработчик на TrialPay здесь. У нас может быть опечатка на наших сайтах doc, и я отправлю заметку, чтобы проверить ее.

В то же время, я подтвердил, что фактический JSON, который Facebook передает на серверный обратный вызов при завершении заказа на основе предложения для валюты в приложении, должен быть действительным и правильно декодировать до желаемого результата выше.

Если у вас возникнут какие-либо проблемы, выходящие за рамки этой темы, не стесняйтесь пинговать меня напрямую.

Edit:

После копирования кода и проверки против JSONLint, я столкнулся с проблемой сразу же на месте, где вы упомянули. Однако после удаления неудачной строки до \"product_title\", я смог проверить правильность. Пример PHP фрагмент кода приведен ниже:

<?php 

$order_details = '{"order_id":9006316682257,"buyer":409697,"app":107032282669135,"receiver":409697,"amount":1,"time_placed":1322622026,"update_time":1322622027,"data":"","items":[{"item_id":"0","title":"3 Fred Currency","description":"Make it rain!","image_url":"http:\/\/external.ak.fbcdn.net\/safe_image.php?d=AQDldsPcWsejAJdC&url=http\u00253A\u00252F\u00252Fwww.etftrends.com\u00252Fwp-content\u00252Fuploads\u00252F2011\u00252F10\u00252Fcurrency-trading.jpg","product_url":"","price":1,"data":"{\"modified\":{\"product\":\"URL_TO_APP_CURR_WEBPAGE\",\"product_title\":\"Fred Currency\",\"product_amount\":3,\"credits_amount\":1}}"}],"status":"placed"}'; 
$order_details_decoded = json_decode($order_details, true); 
$order_details_decoded['items'][0]['data'] = json_decode($order_details_decoded['items'][0]['data'], true); 
print_r($order_details_decoded); 

Как я уже говорил раньше, если что-нибудь еще придумывает выходит за рамки этой темы, не стесняйтесь свистеть меня непосредственно.

+0

Спасибо, Роб, глядя на ответ, посланный мне FB по сравнению с вашим, похоже, что у меня есть дополнительные обратные косые черты, которых нет у вас. Есть ли у вас предпочтительный метод контакта, если я хочу отправить вам конкретный пример? – keybored

0

Пробовал ли вы json_decode($json_string, true);, который преобразует его в ассоциативный массив.

+0

json_decode не поможет, если JSON недействителен (и за сообщение op, это так) – Madbreaks

+0

Ошибка. Я подумал, что он просто пропускает флаг массива и получает объект, но ожидает массив. – Danny

2

Прежде всего, похоже, вам нужно закончить настройку вашего приложения на сайте Trialpay, следовательно, URL_TO_APP_CURR_WEBPAGE. Проблема здесь может заключаться в том, что вы не завершили настройку своего приложения в размере, необходимом для , произвести действительный JSON.

Если это не ответ, если вы по-прежнему получаете недействительный JSON (что я согласен, это неверно), я бы посоветовал обратиться к вашему представителю Trialpay. Они, как правило, довольно отзывчивы, и мы разыграли несколько проблем с их продуктом во время разработки нашей игры.

Удачи - напишите здесь, если/когда вы найдете дополнительную информацию.

Приветствия

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