2016-04-25 8 views
0

Ich habe die Wepay payment gateway integriert. Aber ich habe ein Problem, um json object to wepay zu bestehen. Es zeigt immer ein falsches JSON-Format an. Bitte sehen Sie sich den folgenden Code an.Wie JSON-Objekt mit PHP in Wepay API übergeben

$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) 
       ) 
      ) 
); 

Wenn ich nicht die country_options passiere, sein scheint funktioniert, aber wenn ich diese Parameter übergeben, es mir immer einen Fehler, sagt: „Falsches JSON-Format“.

Ich habe eine E-Mail an die wepay-Hilfe geschickt. Sie haben mir gesagt, dass Sie die Zeichenfolge "country_options":"{"debit_opt_in":true}" <--- this is a string statt "country_options":{"debit_opt_in":true} <--- this is a JSON object übergeben. Also bin ich verwirrt. Ich habe keine Ahnung, wie ich das JSON-Objekt weitergeben kann. Es gibt nur einen Weg und ist json_encode($object).

Antwort

0

hey Code unten verwenden, um die richtige 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)); 
        ?> 

dieser Code folgende json Ausgabe geben zu bekommen

{ 
     "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. Bitte schauen Sie auf diesen Link. Ich muss nur 'country_options' in json-Objekt übergeben, nicht das ganze Array. –

+0

können Sie mir sagen, Json-Format, das Sie wollen –

+0

Eigentlich repariert es jetzt. schau auf meinen Kommentar zu obiger Antwort. –

0

Sie haben keine Notwendigkeit zu machen:

$forca = json_encode($forca_a,JSON_FORCE_OBJECT); 

, bevor Sie setzen es zu $ ​​wepay_create_array. Vor dem Senden der Anfrage, ich denke, Sie machen , und ja, danach haben Sie 'Zeichenfolge' für country_options Schlüssel.

+0

https://www.weplay.com/developer/reference/account#create. Bitte schauen Sie auf diesen Link. Ich muss nur 'country_options' in json-Objekt übergeben, nicht das ganze Array. –

+0

Sehen Sie den Unterschied zwischen jsonObject und jsonArray in dieser Antwort: http://stackoverflow.com/a/16145788/5686207 Sie brauchen nur json_encode ($ forca), bevor Sie es an die Hauptanforderung Array übergeben. –

+0

Danke trotzdem, aber ich habe gerade das Array übergeben und es scheint zu funktionieren. Seltsam! In dem obigen Code habe ich einfach den json_encode entfernt und das Array der country_options übergeben und es funktioniert für mich. Kann etwas in den Bibliotheken codiert sein. Übrigens danke für wertvolle Mühe. –