我正在使用此数据包:
https://github.com/barryvdh/laravel-omnipay
在我的控制器中,我添加了:
$params = [
'amount' => '10',
'issuer' => 22,
'description' => 'desc',
'returnUrl' => URL::action('PurchaseController@returnApi', [43]),
];
$response = Omnipay::purchase($params)->send();
if ($response->isSuccessful()) {
// payment was successful: update database
print_r($response);
} elseif ($response->isRedirect()) {
// redirect to offsite payment gateway
return $response->getRedirectResponse();
} else {
// payment failed: display message to customer
echo $response->getMessage();
}
这是我的omnipay.php conf文件:
<?php
return array(
/** The default gateway name */
'gateway' => 'PayPal_Express',
/** The default settings, applied to all gateways */
'defaults' => array(
'testMode' => true,
),
/** Gateway specific parameters */
'gateways' => array(
'PayPal_Express' => array(
'username' => '',
'landingPage' => array('billing', 'login'),
),
),
);
但是得到这个错误:
call_user_func_array()期望参数1是有效的回调, class'Onnipay \ Common \ GatewayFactory'没有方法 '购买'
任何人都可以帮我设置这个吗? 我在paypal上创建了应用程序,并提供了有关它的详细信息,但不知道如何使用此API进行设置...
答案 0 :(得分:1)
您可以使用
use Omnipay\Omnipay;
在控制器中,将其更改为
use Omnipay;
答案 1 :(得分:0)
我建议您从PayPal Express切换到PayPal REST。它更新,文档更好。
我查看了laravel-omnipay包,但我看不到它的用例。我只是直接编码到omnipay包。
我建议您为每个事务创建一个唯一的事务ID,并将其作为returnUrl和cancelUrl的URL的一部分提供,以便您可以在return和cancel处理程序中识别要处理的事务。
我认为你在laravel-omnipay包中的例子太字面了。你不需要或想要那些echo语句。您应该从purchase()获取响应,即使它是redirectResponse并对其执行getTransactionReference()检查,因为您稍后需要该事务引用,例如用于事务查找。您应该将它存储在您调用purchase()之前创建的事务记录中。