2016-04-25 2 views
0

Я включил Wepay payment gateway. Но перед проблемой стоит json object to wepay. Он всегда показывает неправильный формат json. Посмотрите на приведенный ниже код.Как передать объект json с использованием PHP в Wepay API

$forca_a = array(
    'debit_opt_in'=>true 
); 
$forca = json_encode($forca_a,JSON_FORCE_OBJECT); 
$wepay_create_array = array(
    'name' =>"xxxx", 
    'description' => "xxxxxxxxx xxxx", 
    'callback_uri' => "xxxxxxx", 
    'country' => "CA", 
    'currencies' => array('CAD'), 
    'country_options' => $forca, 
    'rbits'=> array(
       array(
        'receive_time'=>strtotime("now"), 
        'type' =>'website_uri', 
        'source' => 'partner_database', 
        'properties'=> array('uri'=>xxxxx) 
       ) 
      ) 
); 

Если я не буду передавать country_options, его, кажется, работает, но если я прохожу этот параметр, он всегда дает мне ошибку говорит «Неверный формат JSON».

Я отправил электронное письмо в справочный центр Wepay. Мне сказали, что вы передаете строку "country_options":"{"debit_opt_in":true}" <--- this is a string Вместо "country_options":{"debit_opt_in":true} <--- this is a JSON object. Поэтому я смущен. Я не знаю, как передать объект JSON. Существует только путь и составляет json_encode($object).

ответ

0

эй использовать ниже код, чтобы получить надлежащий JSon

<?php 
$forca_a = array(
        'debit_opt_in'=>true 
      ); 
    // $forca = json_encode($forca_a); 
    $wepay_create_array = array(
        'name' =>"xxxx", 
        'description' => "xxxxxxxxx xxxx", 
        'callback_uri' => "xxxxxxx", 
        'country' => "CA", 
        'currencies' => array('CAD'), 
        'country_options' => $forca_a, 
        'rbits'=> array(
           array(
            'receive_time'=>strtotime("now"), 
            'type' =>'website_uri', 
            'source' => 'partner_database', 
            'properties'=> array('uri'=>'xxxxx') 
           ) 
          ) 
       ); 


print_r(json_encode($wepay_create_array)); 
        ?> 

этот код даст следующий вывод JSon

{ 
     "name": "xxxx", 
     "description": "xxxxxxxxx xxxx", 
     "callback_uri": "xxxxxxx", 
     "country": "CA", 
     "currencies": ["CAD"], 
     "country_options": { 
      "debit_opt_in": true 
     }, 
     "rbits": [{ 
      "receive_time": 1461561030, 
      "type": "website_uri", 
      "source": "partner_database", 
      "properties": { 
       "uri": "xxxxx" 
      } 
     }] 
    } 
+0

https://www.wepay.com/developer/reference/account#create. Посмотрите эту ссылку. Мне просто нужно передать «country_options» в json-объект, а не весь массив. –

+0

можете ли вы рассказать мне формат json, который вы хотите? –

+0

На самом деле он исправлен. посмотрите мой комментарий выше ответа. –

0

У вас нет необходимости делать:

$forca = json_encode($forca_a,JSON_FORCE_OBJECT); 

, прежде чем поставить это $ wepay_create_array. Перед отправкой запроса, я думаю, вы делаете , и да, после этого у вас будет «строка» для ключа country_options.

+0

https://www.wepay.com/developer/reference/account#create. Посмотрите эту ссылку. Мне просто нужно передать «country_options» в json-объект, а не весь массив. –

+0

Посмотрите разницу между jsonObject и jsonArray в этом ответе: http://stackoverflow.com/a/16145788/5686207 Вам просто не нужно json_encode ($ forca), прежде чем передать его в основной массив запросов. –

+0

Спасибо, но я просто передал массив и, похоже, работает. Странный! В приведенном выше коде я просто удалил json_encode и передал массив country_options, и он работает для меня. Может быть что-то закодировано в библиотеках. Кстати, спасибо за ценные усилия. –

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