我刚从net-shell(https://github.com/net-shell/laravel-paypal)实现了Laravel的PayPal API,到目前为止一切正常,但是现在有一件事我不知道或者我不知道该怎么做:在我的门户网站,用户必须注册他们的地址。我想要的是这封电子邮件(用于在我的门户网站注册)用作送货地址,稍后也会在PayPal网站上显示(因此无论用户为PayPal输入了什么地址)。
有没有办法做到这一点?
我知道似乎有一个PayPal:ShippingAdress,我可以使用,但如果这是正确的,那我怎么能将它分配给付款?
修改:我现在尝试使用$transaction->setShippingAddress();
或$payer->setShippingAddress();
或$payment->setShippingAddress();
之类的许多变体,但没有任何效果,此方法永远找不到。现在在Paypal / Api / ShippingAddress中我找到了方法setDefaultAddress,所以我考虑创建这样一个对象并使用这样的方法:
$shippingAddress = [
"recipient_name" => "John Johnson",
"line1" => "Whatever street 2",
"line2" => "Another street 2",
"city" => "London",
"country_code" => "UK",
"postal_code" => "NR30 1LY",
"state" => "England",
"phone" => "3123123123"
];
$shippingAddr = PayPal::ShippingAddresss();
$shippingAddr->setDefaultAddress($shippingAddress);
使用此代码时不会出错,但也没有设置地址,我现在需要将此创建的shippingAddress对象分配给付款或交易,就像我使用详细信息,创建详细信息对象然后使用{{ 1}},但我找不到shippingAddress .....
EDIT2 : 通过项目列表获取提示,这是我创建和设置该列表的方式:
$amount->setDetails($details);
然后
$itemList = PayPal::itemList();
foreach ($items as $item)
$product = Product::where('id', '=', $item->product->id)->first();
$itemName = $product->name;
$itemPrice = $product->price;
$itemAmount = $item->amount;
$payPalItem = PayPal::item();
$payPalItem->setName($itemName)
->setDescription($itemName)
->setCurrency('EUR')
->setQuantity($itemAmount)
->setPrice($itemPrice);
$itemList->addItem($payPalItem);
}
答案 0 :(得分:1)
在与问题作者(@nameless - greetings!)进行聊天研究后,我们发现添加另一个送货地址的地方是itemList:
您收集订单中的商品
$itemList = PayPal::itemList();
foreach ($items as $item)
$product = Product::where('id', '=', $item->product->id)->first();
$itemName = $product->name;
$itemPrice = $product->price;
$itemAmount = $item->amount;
$payPalItem = PayPal::item();
$payPalItem->setName($itemName)
->setDescription($itemName)
->setCurrency('EUR')
->setQuantity($itemAmount)
->setPrice($itemPrice);
$itemList->addItem($payPalItem);
}
最后一步是将地址附加到$ itemList
$shippingAddress = [
"recipient_name" => "John Johnson",
"line1" => "Whatever street 2",
"line2" => "Another street 2",
"city" => "London",
"country_code" => "GB",
"postal_code" => "NR30 1LY",
"state" => "England",
"phone" => "3123123123"
];
$itemList->setShippingAddress($shippingAddres);
请注意,国家/地区属于ISO 3166-1,因此GB - 不是英国。如果输入错误的双字母代码 - 响应将返回400错误的代码。
答案 1 :(得分:-1)
在paypal中创建IPN以检查会话属性是否正确传递。如果用户使用不同的电子邮件,则交易无效。