pepco-api/php-rest-sdk

PHP 包,用于通过 RESTful API 将您的应用程序连接到帕萨尔格德互联网支付网关

0.4.0 2021-10-31 11:37 UTC

This package is auto-updated.

Last update: 2024-09-29 06:20:20 UTC


README

PHP 包,用于通过 RESTful API 将您的应用程序连接到帕萨尔格德互联网支付网关

安装

为了安装,使用 composer

$ composer require pepco-api/php-rest-sdk

用法

将用户重定向到支付网关

// Use pasargad package 
use Pasargad\Pasargad;
use Pasargad\Classes\PaymentItem;

// Always use try catch for handling errors
try {
    // Tip! Initialize this property in your payment service __constructor() method!
    $pasargad = new Pasargad(
      "YOUR_MERCHANT_CODE",
      "YOUR_TERMINAL_ID",
      "http://yoursite.com/redirect-url-here/",
      "certificate_file_location");
      //e.q: 
      // $pasargad = new Pasargad(123456,555555,"http://pep.co.ir/ipgtest","../cert/cert.xml");

    // Set Amount
    $pasargad->setAmount(100000); 

    // Set Invoice Number (it MUST BE UNIQUE) 
    $pasargad->setInvoiceNumber(4029);

    // set Invoice Date with below format (Y/m/d H:i:s)
    $pasargad->setInvoiceDate("2021/08/08 11:54:03");

    // Optional Parameters
    // ----------------------
    // User's Mobile and Email:
    $this->pasargad->setMobile("09121001234");
    $this->pasargad->setEmail("user@email.com");


    // IF YOU HAVE ACTIVATED "TAS-HIM" (تسهیم پرداخت), ADD SHABA AND PAYMENT SHARING PERCENTAGE/VALUE LIKE THIS:
    // شروع تسهیم ---------------------------------------------
    // فقط در صورتیکه قابلیت تسهیم شاپرکی را روی درگاه خود
    // فعال کرده‌اید از متد addPaymentType استفاده کنید.

    // تسهیم درصدی ۲۰ به ۸۰:
    $this->pasargad->addPaymentType("IR300570023980000000000000",PaymentItem::BY_PERCENTAGE, 20);
    $this->pasargad->addPaymentType("IR070570022080000000000001",PaymentItem::BY_PERCENTAGE, 80);

    // تسهیم مبلغی:
    $this->pasargad->addPaymentType("IR300570023980000000000000",PaymentItem::BY_VALUE, 20000);
    $this->pasargad->addPaymentType("IR070570022080000000000001",PaymentItem::BY_VALUE, 80000);
    // پایان تسهیم --------------------------------------------



    // get the Generated RedirectUrl from Pasargad API:
    $redirectUrl = $pasargad->redirect();
    var_dump($redirectUrl);
    // output example: https://pep.shaparak.ir/payment.aspx?n=bPo+Z8GLB4oh5W0KVNohihxCu1qBB3kziabGvO1xqg8Y=  

    // and redirect user to payment gateway:
    return header("Location: $redirectUrl");

    // ...or in Laravel/Symfony Controller (Controller extends Symfony\Component\HttpFoundation\Response):
    return  $this->redirect($redirectUrl);
} catch (\Exception $ex) {
      var_dump($ex->getMessage());
      die();
}

检查和验证交易

支付过程完成后,用户将被返回到您的 redirect_url。

支付网关将通过向您的 redirectURL 发送以下参数(作为 QueryString 参数)来回答支付结果

  • 发票号码(IN 字段)
  • 发票日期(ID 字段)
  • 交易参考ID(tref 字段)

将这些信息保存在适当的数据存储中,并通过向银行发送检查 API 请求来检查交易结果

// Set Transaction refrence id received in 
$pasargad->setTransactionReferenceId("636843820118990203"); 

// Set Unique Invoice Number that you want to check the result
$pasargad->setInvoiceNumber(4029);

// set Invoice Date of your Invoice
$pasargad->setInvoiceDate("2021/08/08 11:54:03");

// check Transaction result
var_dump($pasargad->checkTransaction());

成功的结果是 PHP 数组

$result = [
  "TraceNumber" => 908768
  "ReferenceNumber" => 141113323710
  "TransactionDate" => "2021/09/16 12:08:28"
  "Action" => "1003"
  "TransactionReferenceID" => "637673907761796375"
  "InvoiceNumber" => "40209"
  "InvoiceDate" => "2021/09/16 11:54:03"
  "MerchantCode" => 4532980
  "TerminalCode" => 1718577
  "Amount" => 15000.0
  "TrxHashedCardNumber" => "9EB09984BF3F0FDA07D6055997A32F363276D4BD029AE0C870E60DCFC37ED02C"
  "TrxMaskedCardNumber" => "5022-29**-****-0682"
  "IsSuccess" => true
  "Message" => "عمليات به اتمام رسيد"
]

如果您收到带有 IsSuccess 且值为 true 的结果,则一切正常!否则,您将收到一个异常。

现在,对于您的成功交易,您应该调用 verifyPayment() 方法来保留资金,银行将确保检查过程已正确完成

// Set Transaction refrence id received in 
$pasargad->setAmount(15000); 

// Set Unique Invoice Number that you want to check the result
$pasargad->setInvoiceNumber(4029);

// set Invoice Date of your Invoice
$pasargad->setInvoiceDate("2021/08/08 11:54:03");

// verify payment:
return $pasargad->verifyPayment();

...并且成功响应是一个数组

$result = [
  "MaskedCardNumber" => "5022-29**-****-0682"
  "HashedCardNumber" => "2DDB1E270C598677AE328AA37C2970E3075E1DB6665C5AAFD131C59F7FAD99F23680536B07C140D24AAD8355EA9725A5493AC48E0F48E39D50B54DB906958182"
  "ShaparakRefNumber" => "141113323710"
  "IsSuccess" => true
  "Message" => "عمليات با موفقيت انجام شد"
]

支付退款

如果您出于任何原因决定在订单后不久取消订单(最多 2 小时后),您可以将客户的支付退款到他的/她的银行卡。

为此,请使用 refundPayment() 方法

// Set Unique Invoice Number that you want to check the result
$pasargad->setInvoiceNumber(4029);

// set Invoice Date of your Invoice
$pasargad->setInvoiceDate("2021/08/08 11:54:03");

// check Transaction result
return $pasargad->refundPayment();

支持

请使用您的凭据登录到 支持面板

联系作者/维护者: Reza Seyf