我有一个动态的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()时,我进入了重定向循环。
答案 0 :(得分:0)
为foreach()提供的参数无效 在\供应商\贝宝\ REST的API-SDK-PHP \ LIB \贝宝\ COMMON \ PayPalResourceModel.php 第45行
当然没有正确的错误信息。
错误已经在结帐表单的javascript部分中。小计价格不正确,最终在PayPals方面没有正确总结。