2015-09-16 3 views
-4

Я работаю над настройкой функции платного членства на нашем сайте wordpress.
В целях оплаты мы пытаемся использовать процессор платежей греческого языка и его соответствующие API-интерфейсы с использованием PHP. В какой-то момент я был успешным, но я застрял в определенном месте.
. Одна из функций API, которая предлагается, состоит в том, чтобы извлекать конкретные детали заказов, используя в качестве ссылки orderId. Моя проблема - обработка возвращаемого вывода.
Запрос будет вызываться при помощи:Поиск индекса переменной в массиве, декодированном json

GET /api/transactions/?ordercode=175936509216

И возвращение образец будет в формате RAW:

HTTP/1.1 200 OK 
Connection: Keep-Alive 
Content-Length: 1285 
Expires: -1 
Date: Wed, 16 Sep 2015 11:07:31 GMT 
Content-Type: application/json; charset=utf-8 
Server: Microsoft-IIS/7.5 
Cache-Control: no-cache 
Pragma: no-cache 

{ "ErrorCode" : 0, 
    "ErrorText" : null, 
    "TimeStamp" : "2015-09-16T14:07:31.4361544+03:00", 
    "Transactions" : [ { "Amount" : 20.0, 
     "ChannelId" : "d84f93ff-8ad0-4d97-a7a3-f187dd667553", 
     "ClearanceDate" : "2015-09-10T01:10:50.71", 
     "Commission" : 0.71999999999999997, 
     "CreatedBy" : null, 
     "CreditCard" : { "CardHolderName" : "Some name", 
      "CardType" : { "CardTypeId" : 0, 
       "Name" : "VISA" 
       }, 
      "CountryCode" : "US", 
      "IssuingBank" : "Demo Bank", 
      "Number" : "411111XXXXXX1111", 
      "Token" : "B6D3CC438671F16B211D83BBC077FEBD843CBC28" 
      }, 
     "CurrentInstallment" : 0, 
     "CustomerTrns" : null, 
     "Fee" : 0.0, 
     "InsDate" : "2015-09-09T16:15:09.42", 
     "IsManualRefund" : false, 
     "MerchantId" : "faae4194-7bf3-4b5c-9fc9-ec584397308c", 
     "MerchantTrns" : null, 
     "Order" : { "ChannelId" : "95d02b56-bace-4608-ad1b-c1a8da705e52", 
      "OrderCode" : 491831172603, 
      "RequestLang" : "en-US", 
      "ResellerId" : null, 
      "ResellerSourceCode" : null, 
      "SourceCode" : "Default", 
      "Tags" : [ ] 
      }, 
     "ParentId" : null, 
     "Payment" : { "ChannelId" : "d84f93ff-8ad0-4d97-a7a3-f187dd667553", 
      "Email" : "[email protected]", 
      "FullName" : "Some names", 
      "Installments" : 0, 
      "Phone" : "6969696969", 
      "RecurringSupport" : false 
      }, 
     "ResellerId" : null, 
     "ResellerSourceCode" : null, 
     "SourceCode" : "Default", 
     "StatusId" : "F", 
     "TargetPersonId" : null, 
     "TotalInstallments" : 0, 
     "TransactionId" : "9b7af26e-bba7-4830-8d81-36dfd2bc3f3c", 
     "TransactionType" : { "Name" : "ChargeCard", 
      "TransactionTypeId" : 5 
      } 
     } ] 
} 

Wich с помощью функции JSON декодирования преобразуется в массив и с помощью функции var_dumb мы получите следующий результат:

array(4) { 
    ["Transactions"]=> 
    array(1) { 
    [0]=> 
    array(24) { 
     ["Fee"]=> 
     float(0) 
     ["ParentId"]=> 
     NULL 
     ["Amount"]=> 
     float(20) 
     ["StatusId"]=> 
     string(1) "F" 
     ["ChannelId"]=> 
     string(36) "d84f93ff-8ad0-4d97-a7a3-f187dd667553" 
     ["MerchantId"]=> 
     string(36) "faae4194-7bf3-4b5c-9fc9-ec584397308c" 
     ["ResellerId"]=> 
     NULL 
     ["InsDate"]=> 
     string(22) "2015-09-09T16:15:09.42" 
     ["CreatedBy"]=> 
     NULL 
     ["SourceCode"]=> 
     string(7) "Default" 
     ["TransactionId"]=> 
     string(36) "9b7af26e-bba7-4830-8d81-36dfd2bc3f3c" 
     ["Commission"]=> 
     float(0.72) 
     ["MerchantTrns"]=> 
     NULL 
     ["CustomerTrns"]=> 
     NULL 
     ["IsManualRefund"]=> 
     bool(false) 
     ["TargetPersonId"]=> 
     NULL 
     ["TotalInstallments"]=> 
     int(0) 
     ["CurrentInstallment"]=> 
     int(0) 
     ["ClearanceDate"]=> 
     string(22) "2015-09-10T01:10:50.71" 
     ["ResellerSourceCode"]=> 
     NULL 
     ["Order"]=> 
     array(7) { 
     ["OrderCode"]=> 
     int(491831172603) 
     ["ChannelId"]=> 
     string(36) "95d02b56-bace-4608-ad1b-c1a8da705e52" 
     ["ResellerId"]=> 
     NULL 
     ["SourceCode"]=> 
     string(7) "Default" 
     ["Tags"]=> 
     array(0) { 
     } 
     ["RequestLang"]=> 
     string(5) "en-US" 
     ["ResellerSourceCode"]=> 
     NULL 
     } 
     ["Payment"]=> 
     array(6) { 
     ["Email"]=> 
     string(30) "[email protected]" 
     ["Phone"]=> 
     string(10) "6969696969" 
     ["ChannelId"]=> 
     string(36) "d84f93ff-8ad0-4d97-a7a3-f187dd667553" 
     ["FullName"]=> 
     string(17) "Some Name" 
     ["Installments"]=> 
     int(0) 
     ["RecurringSupport"]=> 
     bool(false) 
     } 
     ["TransactionType"]=> 
     array(2) { 
     ["Name"]=> 
     string(10) "ChargeCard" 
     ["TransactionTypeId"]=> 
     int(5) 
     } 
     ["CreditCard"]=> 
     array(6) { 
     ["Token"]=> 
     string(40) "B6D3CC438671F16B211D83BBC077FEBD843CBC28" 
     ["Number"]=> 
     string(16) "411111XXXXXX1111" 
     ["CountryCode"]=> 
     string(2) "US" 
     ["IssuingBank"]=> 
     string(9) "Demo Bank" 
     ["CardHolderName"]=> 
     string(17) "Some Name" 
     ["CardType"]=> 
     array(2) { 
      ["Name"]=> 
      string(4) "VISA" 
      ["CardTypeId"]=> 
      int(0) 
     } 
     } 
    } 
    } 
    ["ErrorCode"]=> 
    int(0) 
    ["ErrorText"]=> 
    NULL 
    ["TimeStamp"]=> 
    string(33) "2015-09-16T14:07:31.4361544+03:00" 
} 

Вопрос в том, как я могу найти то, что специфицировано c этого массива для конкретной переменной, чтобы можно было назначить другую новую переменную для дальнейшей обработки. Например, если бы я хотел, чтобы содержимое переменной электронной почты в массиве платежей, как бы я его набрал?
На данный момент API, что я рабочий находится на демо - разработчиков части, так что данные, приведенные здесь, являются только фиктивные данные дополнение к запрашиваемому комментарий с помощью print_r функции

Array 
    (
    [Transactions] => Array 
    (
     [0] => Array 
      (
       [Fee] => 0 
       [ParentId] => 
       [Amount] => 20 
       [StatusId] => F 
       [ChannelId] => d84f93ff-8ad0-4d97-a7a3-f187dd667553 
       [MerchantId] => faae4194-7bf3-4b5c-9fc9-ec584397308c 
       [ResellerId] => 
       [InsDate] => 2015-09-09T16:15:09.42 
       [CreatedBy] => 
       [SourceCode] => Default 
       [TransactionId] => 9b7af26e-bba7-4830-8d81-36dfd2bc3f3c 
       [Commission] => 0.72 
       [MerchantTrns] => 
       [CustomerTrns] => 
       [IsManualRefund] => 
       [TargetPersonId] => 
       [TotalInstallments] => 0 
       [CurrentInstallment] => 0 
       [ClearanceDate] => 2015-09-10T01:10:50.71 
       [ResellerSourceCode] => 
       [Order] => Array 
        (
         [OrderCode] => 491831172603 
         [ChannelId] => 95d02b56-bace-4608-ad1b-c1a8da705e52 
         [ResellerId] => 
         [SourceCode] => Default 
         [Tags] => Array 
          (
          ) 

         [RequestLang] => en-US 
         [ResellerSourceCode] => 
        ) 

       [Payment] => Array 
        (
         [Email] => [email protected] 
         [Phone] => 6969696969 
         [ChannelId] => d84f93ff-8ad0-4d97-a7a3-f187dd667553 
         [FullName] => Some Name 
         [Installments] => 0 
         [RecurringSupport] => 
        ) 

       [TransactionType] => Array 
        (
         [Name] => ChargeCard 
         [TransactionTypeId] => 5 
        ) 

       [CreditCard] => Array 
        (
         [Token] => B6D3CC438671F16B211D83BBC077FEBD843CBC28 
         [Number] => 411111XXXXXX1111 
         [CountryCode] => US 
         [IssuingBank] => Demo Bank 
         [CardHolderName] => Leonidas leonidas 
         [CardType] => Array 
          (
           [Name] => VISA 
           [CardTypeId] => 0 
          ) 

        ) 

      ) 

    ) 

    [ErrorCode] => 0 
    [ErrorText] => 
    [TimeStamp] => 2015-09-16T16:15:59.9665031+03:00 
) 
+0

Вы можете попробовать эхо "

"; print_r($YourArray); echo "
"; и pur выход здесь? – CntkCtn

+0

Оригинальный вопрос был изменен, а выход включен –

ответ

0

Проверить это один из. Прежде всего, декодируйте ваш json в массив с использованием второго параметра как истинного в функции json_decode.

Затем перейдите к нему с помощью foreach и проверьте, являются ли транзакции массивом, если он затем перебирает транзакции как транзакцию один за другим и получает доступ к полям по имени.

$myArray = json_decode('{"Transactions":[{"Fee":0.00,"ParentId":null,"Amount":20.00,"StatusId":"F","ChannelId":"d84f93ff-8ad0-4d97-a7a3-f187dd667553","MerchantId":"faae4194-7bf3-4b5c-9fc9-ec584397308c","ResellerId":null,"InsDate":"2015-09-09T16:15:09.42","CreatedBy":null,"SourceCode":"Default","TransactionId":"9b7af26e-bba7-4830-8d81-36dfd2bc3f3c","Commission":0.72,"MerchantTrns":null,"CustomerTrns":null,"IsManualRefund":false,"TargetPersonId":null,"TotalInstallments":0,"CurrentInstallment":0,"ClearanceDate":"2015-09-10T01:10:50.71","ResellerSourceCode":null,"Order":{"OrderCode":491831172603,"ChannelId":"95d02b56-bace-4608-ad1b-c1a8da705e52","ResellerId":null,"SourceCode":"Default","Tags":[],"RequestLang":"en-US","ResellerSourceCode":null},"Payment":{"Email":"[email protected]","Phone":"6969696969","ChannelId":"d84f93ff-8ad0-4d97-a7a3-f187dd667553","FullName":"Some names","Installments":0,"RecurringSupport":false},"TransactionType":{"Name":"ChargeCard","TransactionTypeId":5},"CreditCard":{"Token":"B6D3CC438671F16B211D83BBC077FEBD843CBC28","Number":"411111XXXXXX1111","CountryCode":"US","IssuingBank":"Demo Bank","CardHolderName":"Some name","CardType":{"Name":"VISA","CardTypeId":0}}}],"ErrorCode":0,"ErrorText":null,"TimeStamp":"2015-09-16T14:07:31.4361544+03:00"}',true); 
    foreach($myArray as $transactions){ 
     if(is_array($transactions)) 
      foreach($transactions as $transaction){ 
      echo "<pre>"; 
       print_r($transaction); 
      echo "</pre>"; 
      echo "<br>"; 
      if($transaction['Payment']){ 
       echo $transaction['Payment']['Email']; 
      } 
     } 
    } 

из положить является [email protected] Приветствия

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