paytabscom/laravel_paytabs

官方laravel包,用于在laravel应用程序中实现PayTabs集成

安装: 66 137

依赖关系: 6

建议者: 0

安全性: 0

星标: 21

关注者: 4

分支: 13

开放问题: 2

类型:composer-package

1.8.0 2024-09-24 17:55 UTC

README

Laravel PayTabs PT2

描述

此包提供了与PayTabs支付网关的集成。

本文件内容

  • 简介
  • 新增功能
  • 要求
  • 安装
  • 配置
  • 使用方法

简介

此包从5.8 - 10.x版本开始,将PayTabs在线支付集成到Laravel框架中。

要求

此包不需要外部依赖。

安装

  • composer require paytabscom/laravel_paytabs

配置

  • composer dump-autoload

  • 对于Laravel 11,前往 bootstrap/providers.php 并添加

      Paytabscom\Laravel_paytabs\PaypageServiceProvider::class,
    
  • 对于Laravel 10及以下版本,前往 config/app.php 并在providers数组中添加

      Paytabscom\Laravel_paytabs\PaypageServiceProvider::class,
    
  • 创建包配置文件

      php artisan vendor:publish --tag=paytabs
    
  • 前往 config/logging.php 并在channels数组中添加

    'PayTabs' => [
    'driver' => 'single',
    'path' => storage_path('logs/paytabs.log'),
    'level' => 'info',
    ],
    
  • config/paytabs.php 中添加您的商户信息。

重要提示:您可以在环境文件中使用与 config/paytabs.php 文件中相同的键名传递您的商户信息。如果不存在该键名的环境变量,将返回此值。

使用方法

  • 创建支付页面

      use Paytabscom\Laravel_paytabs\Facades\paypage;
    
      $pay= paypage::sendPaymentCode('all')
             ->sendTransaction('sale','ecom')
              ->sendCart(10,1000,'test')
             ->sendCustomerDetails('Walaa Elsaeed', 'w.elsaeed@paytabs.com', '0101111111', 'test', 'Nasr City', 'Cairo', 'EG', '1234','100.279.20.10')
             ->sendShippingDetails('Walaa Elsaeed', 'w.elsaeed@paytabs.com', '0101111111', 'test', 'Nasr City', 'Cairo', 'EG', '1234','100.279.20.10')
             ->sendURLs('return_url', 'callback_url')
             ->sendLanguage('en')
             ->create_pay_page();
      return $pay;
    
  • 如果您想将送货地址与账单地址相同,可以使用

      >shipping_same_billing()
      and make sure to remove calling 
      ->sendShippingDetails.
    
  • 如果您想隐藏送货地址,可以使用

      ->sendHideShipping(true);
    
  • 如果您想使用iframe选项而不是跳转,可以使用

      ->sendFramed(true);
    
  • 如果您想传递支付方式,可以使用

      ::sendPaymentCode("creditcard, valu, forsa")
      - separate by space between payment methods.
    
  • 如果您想传递令牌化选项,可以使用

      ->sendTokinse(true)
    
  • 如果您想通过令牌进行支付,可以使用

      ->sendTransaction('transaction_type','recurring')
      ->sendToken('transRef returned to you in the same first payment page','token returned from the first payment page created with Tokenization option')
    
  • 如果您想使用用户定义的支付,可以使用

      ->sendUserDefined(["udf1"=>"UDF1 Test", "udf2"=>"UDF2 Test", "udf3"=>"UDF3 Test"])
    
  • 退款(您可以使用此函数进行全额退款或部分退款)

      $refund = Paypage::refund('tran_ref','order_id','amount','refund_reason');
      return $refund;
    
  • 认证

      pay= Paypage::sendPaymentCode('all')
             ->sendTransaction('Auth','ecom')
              ->sendCart(10,1000,'test')
             ->sendCustomerDetails('Walaa Elsaeed', 'w.elsaeed@paytabs.com', '0101111111', 'test', 'Nasr City', 'Cairo', 'EG', '1234','100.279.20.10')
             ->sendShippingDetails('Walaa Elsaeed', 'w.elsaeed@paytabs.com', '0101111111', 'test', 'Nasr City', 'Cairo', 'EG', '1234','100.279.20.10')
             ->sendURLs('return_url', 'callback_url')
             ->sendLanguage('en')
             ->create_pay_page();
      return $pay;
    
  • 捕获(tran_ref是您需要捕获的认证交易的tran_ref。

    您可以使用此函数进行全额捕获或部分捕获。)

       $capture = Paypage::capture('tran_ref','order_id','amount','capture description'); 
       return $capture;
    
  • 取消(tran_ref是您需要取消的认证交易的tran_ref。

    您可以使用此函数进行全额取消或部分取消。)

      $void = Paypage::void('tran_ref','order_id','amount','void description');
      return $void
    
  • 交易详情

      $transaction = Paypage::queryTransaction('tran_ref');
      return $transaction;
    
  • 如果您遇到任何错误,您将可以在 storage/logs/paytabs.log 中找到它。

支付结果通知

PayTabs支付网关提供了一种在交易处理完成后通知您的系统支付结果的方法,以便您的系统可以更新相应的购物车。

要使用此功能,请执行以下操作

1- 定义路由(可选)

Laravel PayTabs PT2包自带一个用于接收IPN请求的默认路由。路由URI为 /paymentIPN ,如果您不喜欢这个URI,请忽略它并定义自己的。查看 routes/routes.php 获取提示。

2- 实现接收通知的方式

要接收通知,请执行以下操作之一

  • 在创建支付页面时,将此路由作为回调URL传递给 sendURLs 方法,该URL将接收带有支付结果的HTTP Post请求。有关回调的更多信息,请参阅:商户仪表板 > 开发者 > 交易API

  • 第二种方式是从商户仪表板配置IPN通知。有关如何配置IPN请求及其不同格式的详细信息,请参阅:商户仪表板 > 开发者 > 服务类型

3- 配置回调方法

现在,您需要使用类和方法配置插件,以获取支付详情并执行您的自定义逻辑(更新数据库中的购物车、通知客户等)。

  • 在您的网站 config/paytabs.php 文件中,添加以下内容

      'callback' => env('paytabs_ipn_callback', new namespace\your_class() ),
    
  • 在您的类中添加一个新方法,其名称必须为:updateCartByIPN

      updateCartByIPN( $requestData){
          $cartId= $requestData->getCartId();
          $status= $requestData->getStatus();
          //your logic .. updating cart in DB, notifying the customer ...etc
    
          //Hold On Reject support
          // if $status = "H" this is mean the transaction is hold on reject.
          // you can't make capture for it from your system.
          // you must make the capture from paytabs dashboard side.
          // make sure to add your ipn value to paytabs dashboard from here:
           "{paytabs portal}/merchant/developers/ipnconfig".
      }
    

您还可以获取交易参考编号。要查看可用的属性列表,请检查:Paytabscom\Laravel__paytabs\IpnRequest 类。