2015-05-20 4 views
0

У меня есть динамическая форма заказа/корзина для покупок, которая отправляет Json через ajax на PHP, а затем она становится доступной через PayPal rest api. Пользователь может купить сразу несколько продуктов.Несколько элементов с API-интерфейсом PayPal REST

Я в основном клонировал этот пример: http://paypal.github.io/PayPal-PHP-SDK/sample/doc/payments/CreatePaymentUsingPayPal.html, и я получил его работу с жестко закодированными элементами/переменными.

Некоторые PHP:

$data = json_decode(file_get_contents('php://input'), true); 

$items = array(); 
$arr_length = count($data); 
for ($i=0;$i<$arr_length;$i++) { 
    $item[$i] = new Item(); 
    $item[$i]->setName($data[$i]['productName']) 
       ->setCurrency($data[$i]['currency']) 
       ->setQuantity($data[$i]['quantity']) 
       ->setPrice($data[$i]['price']) 
       ->setSku(uniqid()); 

    $items[] = $item[$i]; 
} 

$itemList = new ItemList(); 
$itemList->setItems($items); 

получает JSON передается так:

$.ajax({ 
      url: "process.php", 
      type: 'POST', 
      data: jsonData, 
      success: function(data){ 
       // location = data; 
       console.log(data); 
     }, 
     error:function(){ 
      $("#status").html('There is error while submit'); 
     } 
     }); 

Вот результат var_dump ($ единиц);

<br /> 
<b>Warning</b>: Invalid argument supplied for foreach() in <b>\vendor\paypal\rest-api-sdk-php\lib\PayPal\Common\PayPalResourceModel.php</b> on line <b>45</b><br /> 
array(3) { 
    [0]=> 
    object(PayPal\Api\Item)#8 (1) { 
    ["_propMap":"PayPal\Common\PayPalModel":private]=> 
    array(5) { 
     ["name"]=> 
     string(15) "Product1" 
     ["currency"]=> 
     string(3) "EUR" 
     ["quantity"]=> 
     int(1) 
     ["price"]=> 
     string(2) "99" 
     ["sku"]=> 
     string(13) "555c79be1c489" 
    } 
    } 
    [1]=> 
    object(PayPal\Api\Item)#9 (1) { 
    ["_propMap":"PayPal\Common\PayPalModel":private]=> 
    array(5) { 
     ["name"]=> 
     string(15) "Product2" 
     ["currency"]=> 
     string(3) "EUR" 
     ["quantity"]=> 
     string(2) "21" 
     ["price"]=> 
     string(4) "2079" 
     ["sku"]=> 
     string(13) "555c79be1c4b3" 
    } 
    } 
    [2]=> 
    object(PayPal\Api\Item)#10 (1) { 
    ["_propMap":"PayPal\Common\PayPalModel":private]=> 
    array(5) { 
     ["name"]=> 
     string(15) "Product3" 
     ["currency"]=> 
     string(3) "EUR" 
     ["quantity"]=> 
     int(1) 
     ["price"]=> 
     string(2) "99" 
     ["sku"]=> 
     string(13) "555c79be1c4d2" 
    } 
    } 
} 

Не знаю, в чем проблема. Когда я пересылаю фактическое $ утверждениеUrl = $ payment-> getApprovalLink(), я попадаю в цикл перенаправления.

+0

Можете ли вы сделать печать данных, возвращаемых методом create(). Я думаю, что проблема связана не с входом, а с ответом, который вы возвращаете. –

ответ

0

Недействительный аргумент для Еогеасп() в \ поставщика \ PayPal \ остальные-апи-СДК-PHP \ Lib \ PayPal \ Common \ PayPalResourceModel.php на линии 45

Wasnt правильно сообщение об ошибке, конечно.

Ошибка была уже в части javascript в форме оформления заказа. Цены субтотала были неверными и в итоге не подвели итоги на стороне PayPals.

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