如何在Laravel中添加纯PHP库?
作者:互联网
我正在使用2checkout API将付款集成到我的应用程序中.我正在跟踪他们的API Tutorial.我对他们的方法进行了一些修改.以下是本教程未修改的前端代码.
<form id="myCCForm" action="payment.php" method="post">
<input id="token" name="token" type="hidden" value="">
<div>
<label>
<span>Card Number</span>
</label>
<input id="ccNo" type="text" size="20" value="" autocomplete="off" required />
</div>
<div>
<label>
<span>Expiration Date (MM/YYYY)</span>
</label>
<input type="text" size="2" id="expMonth" required />
<span> / </span>
<input type="text" size="2" id="expYear" required />
</div>
<div>
<label>
<span>CVC</span>
</label>
<input id="cvv" size="4" type="text" value="" autocomplete="off" required />
</div>
<input type="submit" value="Submit Payment">
我将< form id =“ myCCForm” action =“ payment.php” method =“ post”>行更改为< form id =“ myCCForm” action =“ {{route('postPayment)}}”“ method = “帖子”>并在上述表单中添加了CSRF令牌字段.
这东西工作正常.
第二部分是我要在Laravel应用程序中处理的服务器端脚本.在教程中,这是写在payment.php中的.该脚本在payment.php中工作正常,但我尝试按如下所示在控制器中编写该脚本:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\TwoCheckout;
class PaymentsController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$twoCheckOut = TwoCheckout::find(1);
return view('payment')->with('twoCheckOut',$twoCheckOut);
}
public function process()
{
require_once("2checkout-php/lib/Twocheckout.php");
Twocheckout::privateKey('6CC34113-3588-4B09-8ECB-958C0B3299F3');
Twocheckout::sellerId('901303383');
Twocheckout::sandbox(true);
try {
$charge = Twocheckout_Charge::auth(array(
"sellerId" => "901303383",
"merchantOrderId" => "123",
"token" => 'Y2U2OTdlZjMtOGQzMi00MDdkLWJjNGQtMGJhN2IyOTdlN2Ni',
"currency" => 'USD',
"total" => '10.00',
"billingAddr" => array(
"name" => 'Testing Tester',
"addrLine1" => '123 Test St',
"city" => 'Columbus',
"state" => 'OH',
"zipCode" => '43123',
"country" => 'USA',
"email" => 'testingtester@2co.com',
"phoneNumber" => '555-555-5555'
),
"shippingAddr" => array(
"name" => 'Testing Tester',
"addrLine1" => '123 Test St',
"city" => 'Columbus',
"state" => 'OH',
"zipCode" => '43123',
"country" => 'USA',
"email" => 'testingtester@2co.com',
"phoneNumber" => '555-555-5555'
)
), 'array');
if ($charge['response']['responseCode'] == 'APPROVED') {
echo "Thanks for your Order!";
}
} catch (Twocheckout_Error $e) {
$e->getMessage();
}
}
}
问题出现在以下几行中.
require_once("2checkout-php/lib/Twocheckout.php");
Twocheckout::privateKey('6CC34113-3588-4B09-8ECB-958C0B3299F3');
Twocheckout::sellerId('901303383');
Twocheckout::sandbox(true);
错误
BadMethodCallException in Builder.php line 2099:
Call to undefined method Illuminate\Database\Query\Builder::privateKey()
我在这里做错了什么?
解决方法:
问题在于您要导入的文件名为Twocheckout的模型位于文件的顶部,并具有以下内容:
use App\TwoCheckout;
这意味着该控制器文件中对Twocheckout的所有使用都将引用Eloquent模型,这又意味着您不能使用名称与2checkout library相同的类来访问.要解决的问题是,您可以对模型类使用别名像这样的名字:
use App\TwoCheckout as TwoCheckoutModel;
在需要模型类的地方,只需使用:
public function index()
{
$twoCheckOut = TwoCheckoutModel::find(1);
return view('payment')->with('twoCheckOut', $twoCheckOut);
}
这样,类名称Twocheckout将引用正确的库类.
标签:laravel,laravel-5,laravel-5-1,2checkout,php 来源: https://codeday.me/bug/20191027/1944761.html