azima/laravel_paytabs

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

安装: 259

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 2

开放问题: 1

类型:composer-package

dev-main 2023-04-30 06:27 UTC

This package is auto-updated.

Last update: 2024-09-30 01:52:21 UTC


README

Laravel PayTabs PT2

描述

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

本文件内容

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

简介

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

要求

本包不依赖外部库。

安装

  • composer require azima/laravel_paytabs

配置

  • composer dump-autoload

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

      azima\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 azima\Laravel_paytabs\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')
    
  • 如果您想通过令牌获取支付响应,可以使用

      ->sendTransaction('transaction_type','recurring')
      ->sendToken('token returned from the first payment page')
      ->create_payment_response()
    
  • 如果您想使用用户定义的方式进行支付,可以使用

      ->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".
      }
    

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