使用 Omnipay 将 PayPal REST API 集成到 Laravel - 需要 card 参数

Posted

技术标签:

【中文标题】使用 Omnipay 将 PayPal REST API 集成到 Laravel - 需要 card 参数【英文标题】:Integrating PayPal REST API into Laravel using Omnipay - The card parameter is required 【发布时间】:2015-03-06 10:58:03 【问题描述】:

我正在使用 L5 并希望将我的 PayPal 购买集成到该系统中。沙盒已经设置好了,我可以使用真正的 PayPal API 包完成所有付款,但是因为我想尝试使用 Omnipay 来完成,所以我有点挣扎:

当我执行这段代码时:

Route::get('test', function()

$gateway = Omnipay::create('PayPal_Rest');
$gateway->setClientId('my id');
$gateway->setSecret('my secret');
$gateway->setTestMode(true);

$params = array(
    'cancelUrl' => 'http://webshop.app',
    'returnUrl' => 'http://webshop.app/testresp',
    'name'  => 'Your Purchase',
    'description' => 'Your Description',
    'amount' => '15.99',
    'currency' => 'EUR'
);

Session::put('params', $params);
Session::save();

$resp = $gateway->purchase($params)->send();

if ($resp->isSuccessful()) 
    // payment was successful: update database
    print_r($resp);
 elseif ($resp->isRedirect()) 
    // redirect to offsite payment gateway
     $resp->redirect();
 else 
    // payment failed: display message to customer echo
     $resp->getMessage();

);

我明白了: InvalidRequestException in AbstractRequest.php line 122: The card parameter is required

似乎我必须使用客户的信用卡信息开始购买,我不想收集这些信息(因此首先使用 PayPal)。有什么方法可以在不使用信用卡的情况下使用该 API?

我不喜欢使用 Express API,因为我不想在我的代码中使用我的 PayPal 用户名和密码。有几个原因。

【问题讨论】:

【参考方案1】:

卡片数组字段是必需的。不需要输入信用卡号,但您需要提供一些信息。

来自官方文档:

即使是异地网关也使用 CreditCard 对象,因为您通常需要将客户帐单或运输详细信息传递给网关。

【讨论】:

【参考方案2】:

查看我的omnipay-paypal网关代码分支的以下分支:https://github.com/delatbabel/omnipay-paypal/tree/accept-paypal-payments

这包括允许您不通过信用卡并让 PayPal 进行付款处理的代码。

我已提交 PR,但尚未合并到主 omnipay-paypal 存储库。

【讨论】:

嗯,没有使用示例,在我看来,它只是分叉的 omnipay。它与原来的全能支付有何不同? 它已被合并到主分支中,因此请检查那里的用法和类文档块中的示例

以上是关于使用 Omnipay 将 PayPal REST API 集成到 Laravel - 需要 card 参数的主要内容,如果未能解决你的问题,请参考以下文章

使用 Omnipay 在 Paypal Express 中显示账单和运输信息

Paypal Rest API - 如何获取客户端 ID 和密码?

Omnipay:贝宝 REST API 集成

Omnipay:将钱从 PayPal 账户转移到 Stripe 账户

向 Omnipay Paypal Express 添加自定义变量

如何使用 PHP Omnipay 和 Paypal Express Checkout 验证付款?