epikoder / laravel-payment-gateway
可扩展的支付网关,用于管理您应用程序中的不同网关
v1.0.4
2021-05-16 02:27 UTC
Requires
- yabacon/paystack-php: ^2.2
This package is auto-updated.
Last update: 2024-09-18 02:26:51 UTC
README
可扩展的支付网关,用于管理您应用程序中的不同网关。
此包允许您轻松管理应用程序中的不同支付服务提供商,并提供在运行时添加任何支付服务提供商的基础。
默认要实现的提供者
Stripe
Paypal
Paystack
入门指南
composer require epikoder/laravel-payment-gateway
要添加支付服务提供商,扩展PaymentProvider类
Epikoder\LaravelPaymentGateway\Abstract\PaymentProvider
订单 | 包模型
实现接口 Epikoder\LaravelPaymentGateway\Contracts\OrderInterface
class Order extends Model implements \Epikoder\LaravelPaymentGateway\Contracts\OrderInterface
{
// implements the required methods
}
配置
添加提供者
"providers" => [
'paystack' => \Epikoder\LaravelPaymentGateway\Gateways\Paystack::class,
],
要添加或使用您自己的自定义提供者,请参阅配置
添加提供者设置
"settings" => [
"paystack" => [
'sk_key' => 'sk_test_6f220edf6029757d56079cb33b047a15da7b3bfd',
'pk_key' => 'pk_test_e8d8ffad357f6e7958b799ef96fb97965b13b959',
'currency' => Currencies::US_DOLLAR,
'channels' => [
'card', 'bank'
],
'image' => 'https://tukuz.com/wp-content/uploads/2020/10/paystack-logo-vector.png',
]
],
禁用提供者对客户访问
'disabled' => ['stripe',],
实时和测试模式
使用实时和测试模式功能
"settings" => [
"paystack" => [
"mode" => "test",
'live' => [
'sk_key' => 'sk_test_6f220edf6029757d56079cb33b047a15da7b3bfd',
'pk_key' => 'pk_test_e8d8ffad357f6e7958b799ef96fb97965b13b959',
'currency' => Currencies::US_DOLLAR,
],
'test' => [
'sk_key' => 'sk_test_6f220edf6029757d56079cb33b047a15da7b3bfd',
'pk_key' => 'pk_test_e8d8ffad357f6e7958b799ef96fb97965b13b959',
'currency' => Currencies::NAIRA,
],
'channels' => [
'card', 'bank'
],
'image' => 'https://tukuz.com/wp-content/uploads/2020/10/paystack-logo-vector.png',
]
],
URLs和路由
URL的值应该是到您控制器的有效路由,请参阅完成订单
"returnUrl" => 'checkout/success', // offsite return url
"responseUrl" => "checkout/response",
用法
处理订单
...
use Epikoder\LaravelPaymentGateway\PaymentService;
...
{
public function pay(PaymentService $paymentService)
{
/** @var \Illuminate\Http\Response */
$res = $paymentService->init('provider', request()->user()->toArray)
->process(Order); // Order must implement order interface
return $res; // $res is either a redirect or provider response
}
}
完成订单
简单方法
class PayController extends \Epikoder\LaravelPaymentGateway\PaymentGatewayController {
public function response() // Handles normal response
{
$content = $this->responseData;
if (!$content) {
// No data
}
return \Illuminate\Http\Response($content);
}
public function callbackResponse() // Handles off-site-response
{
$result = $this->paymentService->complete($this->provider);
if ($this->provider->identifier() == 'paystack) {
log_paystack_transactions($result);
}
if (!$result->successful) {
return view('payment.error');
}
return view('payment.success');
}
}
自定义方法
{
public function response() // Handles normal response
{
$content = session()->pull(config("gateway.responseUrl"));
return \Illuminate\Http\Response($content);
}
public function callbackResponse() // Handles off-site-response
{
$result = $this->paymentService->complete($this->paymentService->callbackProvider());
if ($result->provider->identifier() == 'paystack) {
log_paystack_transactions($result);
}
if (!$result->successful) {
return view('payment.error');
}
return view('payment.success');
}
}
交易验证由PaymentProvider类处理。
贡献
感谢您考虑为这个包做出贡献。 :)
许可
Laravel框架是开源软件,根据MIT许可授权。