mabdulmonem/laravel-paytabs

laravel 包,用于实现与 laravel 应用程序的 PayTabs 集成

安装: 5

依赖项: 0

建议者: 0

安全: 0

星星: 0

关注者: 0

分支: 0

开放问题: 0

类型:composer-package

dev-master 2023-06-20 10:23 UTC

This package is auto-updated.

Last update: 2024-09-13 23:21:39 UTC


README

Laravel PayTabs PT2

描述

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

本文件内容

  • 介绍
  • 要求
  • 安装
  • 配置
  • 用法

介绍

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

要求

本包不需要外部依赖。

安装

  • composer require mabdulmonem/laravel-paytabs

配置

  • composer dump-autoload

  • 前往 config/app.php 文件,在 providers 数组中添加

      Mabdulmonem\LaravelPayTabs\PaypageServiceProvider::class,
    
  • 创建包配置文件:(在 laravel <5.5 中必需)

      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 Mabdulmonem\LaravelPayTabs\Facades\paypage;
    
      $pay= paypage::sendPaymentCode('all')
             ->sendTransaction('sale')
              ->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','fawry']")
    
  • 如果您想传递令牌化选项,可以使用

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

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

      ->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')
              ->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 是您需要捕获的 Auth 交易的 tran_ref。

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

       $capture = Paypage::capture('tran_ref','order_id','amount','capture description'); 
       return $capture;
    
  • 取消(tran_ref 是您需要取消的 Auth 交易的 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- 实现接收通知的方法

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

  • 在创建支付页面时,将此路由作为 Callback 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 类。