使用PayPal REST API的多个项目

时间:2015-05-20 12:22:12

标签: php json rest paypal

我有一个动态的order-form / shopping-cart,它通过ajax将Json发送到PHP,然后通过PayPal rest api进行处理。用户可以一次购买多个产品。

我基本上克隆了这个例子: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($ items);

的结果
<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"
    }
  }
}

不知道这里的问题是什么。当我转发实际的$ approvalUrl = $ payment-&gt; getApprovalLink()时,我进入了重定向循环。

1 个答案:

答案 0 :(得分:0)

  

为foreach()提供的参数无效   在\供应商\贝宝\ REST的API-SDK-PHP \ LIB \贝宝\ COMMON \ PayPalResourceModel.php   第45行

当然没有正确的错误信息。

错误已经在结帐表单的javascript部分中。小计价格不正确,最终在PayPals方面没有正确总结。