Php PayPal API与Laravel-数据更新
我正在尝试用Php PayPal API与Laravel-数据更新,php,laravel,laravel-5,paypal,Php,Laravel,Laravel 5,Paypal,我正在尝试用laravel5.1实现PayPal支付的API。但是当我登录到PayPal(sandbox)时,它会使用我在帐户中使用的地址,并且它使用PayPal帐户中的名称,而不是我网站中的数据。那是我的问题 我想使用我的网站上的数据,因为如果我从我的网站上输入发货地址(例如)而不使用它,这是没有意义的。请参阅下面我的代码以供参考(或在下面评论我的一些细节) 我也复习了,但它似乎不能回答我的问题。另外,如果该国有一个省怎么办?我们如何才能补充这一点 更新1 添加了新的补丁()类 在中编辑代码,
laravel5.1
实现PayPal支付的API
。但是当我登录到PayPal(sandbox)
时,它会使用我在帐户中使用的地址,并且它使用PayPal帐户中的名称,而不是我网站中的数据。那是我的问题
我想使用我的网站上的数据,因为如果我从我的网站上输入发货地址(例如)而不使用它,这是没有意义的。请参阅下面我的代码以供参考(或在下面评论我的一些细节)
我也复习了,但它似乎不能回答我的问题。另外,如果该国有一个省怎么办?我们如何才能补充这一点
更新1
添加了新的补丁()
类
在中编辑代码,然后重试Catch
注意:accepted
答案还将收到赏金
加上up
使用教程更新2
对于PHP/Laravel(我目前使用的是v5.1),安装这个包
。选择
继续,直到看到选项,然后选择
登录到
点击。点击
选择你想要的国家。在帐户类型中选择个人(买方帐户)
添加电子邮件地址,避免使用-
。请改用。
输入您想要的贝宝余额
单击创建帐户
让它活起来?
我想你在找
对于已经拥有PayPal帐户且您在选择使用PayPal付款之前已提示输入配送地址的用户,您可以使用输入的地址,而不是用户在PayPal中存储的地址
而不是使用保存在他们帐户中的地址
付款人显示传入的地址,但无法对其进行编辑。如果地址无效,例如缺少国家/地区等必填字段,或者根本不包括地址,则不显示地址
编辑:尝试这样的方法来代替现有的方法。
$address = new ShippingAddress();
$address->setCity('Toronto');
$address->setState('ON');
$address->setCountryCode('CA');
$address->setLine1('123 Fake Street');
$address->setPostalCode('M1M1M1');
$payerInfo = new PayerInfo();
$payerInfo->setShippingAddress($address);
$payer = new Payer();
$payer->setPaymentMethod('paypal');
我没有和PayPal合作过很多,但是我从官方文档中获取了这个信息,所以我相信它会对你有用。有关可在签出页面中使用的可用变量列表,请参见
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<!-- Enable override of buyers's address stored with PayPal . -->
<input type="hidden" name="address_override" value="1">
<!-- Set variables that override the address stored with PayPal. -->
<input type="hidden" name="first_name" value="John">
<input type="hidden" name="last_name" value="Doe">
<input type="hidden" name="address1" value="345 Lark Ave">
<input type="hidden" name="city" value="Montreal">
<input type="hidden" name="state" value="QC">
<input type="hidden" name="zip" value="H1A4K2">
<input type="hidden" name="country" value="CA">
<input type="image" name="submit"
src="https://www.paypalobjects.com/en_US/i/btn/btn_buynow_LG.gif"
alt="PayPal - The safer, easier way to pay online">
</form>
这是可用的省代码列表。您可以使用这两个字母字符串作为“state”变量,就像您使用美国的state一样
省名|省代码
阿尔伯塔省|AB
不列颠哥伦比亚省卑诗省
马尼托巴省|MB
新不伦瑞克|NB
纽芬兰和拉布拉多|NL
西北地区|NT
新斯科舍省|NS
NUNAVT |NU
安大略省|ON
爱德华王子岛|PE
魁北克|QC
萨斯喀彻温省|SK
育空|YT
我希望这对您有所帮助。创建付款后,请尝试更新地址,如中所示
我也检查了这个链接,但它似乎不能回答我的问题。还有,如果这个国家有一个省呢?我们如何才能补充这一点
使用状态代码。我很久没有使用PayPal API了,但只要浏览一下文档,就会发现付款人信息
配送地址字段已被弃用(),并建议使用采购单元中的配送地址
根据文档,这应该通过setItemList()
函数()在CartBase
类中设置
编辑:
因此,对于您正在使用的软件包,您需要将PayPal\Api\ShippingAddress
对象添加到$item\u列表
变量中:
$shipping = new PayPal\Api\ShippingAddress();
$shipping->setLine1('123 1st St.')
->setCity('Some City')
->setState('CA')
->setPostalCode("95123")
->setCountryCode("US")
->setPhone("555-555-5555")
->setRecipientName("John Doe");
$item_list = new ItemList();
$item_list->setItems([$item1])
->setShippingAddress($shipping);
ItemList
class ref:这太好了。但你能举个例子吗?因为我编辑了表单
中的名称
属性。这是我使用的API:另外,如果这个国家有一个省怎么办?我们如何添加它呢?我刚刚尝试过,但在登录我的沙盒
帐户后仍然没有更新。请看这个屏幕截图:这不是你想要的吗,预填充的地址?这是我沙盒帐户中的地址,而不是我在网站上使用的地址。我希望它是我从我的网站输入的地址。输入类型必须是隐藏的
?我刚刚尝试过,但在登录我的沙盒
帐户后仍然没有更新。请看这个屏幕截图:这就是那些
出现在PayPal文档中的方式。它必须是隐藏的
,因此页面上没有实际的输入字段。type=“hidden”
用于发送静态$\u POST数据。您是否尝试过清除Cookie和缓存?你的应用程序可能正在加载旧Cookie。我将尝试此操作。但是这段代码呢。我还需要这个吗?看起来您可以在屏幕截图中使用HTML输入或PHP脚本。如果其中一个不适合你,你可以试试另一个。我不确定如果您同时使用这两种方法,哪种方法会占上风。使用ID更新您正在使用的支付对象是否有ID?当我尝试dd
使用getId()
方法时,它返回null。你知道为什么吗?你能发布你的完整代码吗?如果在$payment->create($this->\u api\u context)之后调用付款,则付款的ID不应为null代码>呼叫。你说得对。它现在不是空的。我应该把它放在$payment->create($this->\u api\u context)之后代码>。然而,我仍然面临同样的问题,我没有使用那个软件包。我唯一的包裹是usi
$address = new ShippingAddress();
$address->setCity('Montreal');
$address->setState('QC');
$address->setCountryCode('CA');
$address->setLine1('345 Lark Ave');
$address->setPostalCode('H1A4K2');
$payerInfo = new PayerInfo();
$payerInfo->setShippingAddress($address);
$paymentId = $createdPayment->getId();
$patch = new \PayPal\Api\Patch();
$patch->setOp('add')
->setPath('/transactions/0/item_list/shipping_address')
->setValue([
"recipient_name" => "Gruneberg, Anna",
"line1" => "52 N Main St",
"city" => "San Jose",
"state" => "CA",
"postal_code" => "95112",
"country_code" => "US"
]);
$patchRequest = new \PayPal\Api\PatchRequest();
$patchRequest->setPatches([$patch]);
$result = $createdPayment->update($patchRequest, $apiContext);
$shipping = new PayPal\Api\ShippingAddress();
$shipping->setLine1('123 1st St.')
->setCity('Some City')
->setState('CA')
->setPostalCode("95123")
->setCountryCode("US")
->setPhone("555-555-5555")
->setRecipientName("John Doe");
$item_list = new ItemList();
$item_list->setItems([$item1])
->setShippingAddress($shipping);