【发布时间】:2015-08-01 16:36:36
【问题描述】:
我有一个动态订单表单/购物车,它通过 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->getApprovalLink() 时,我进入了重定向循环。
【问题讨论】:
-
您能否对 create() 方法返回的数据进行打印。我认为问题不在于输入,而在于您得到的响应。