epikoder/laravel-payment-gateway

可扩展的支付网关,用于管理您应用程序中的不同网关

v1.0.4 2021-05-16 02:27 UTC

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许可授权。