Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PayPal API与Laravel-数据更新_Php_Laravel_Laravel 5_Paypal - Fatal编程技术网

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);