pepco-api / php-rest-sdk
PHP 包,用于通过 RESTful API 将您的应用程序连接到帕萨尔格德互联网支付网关
README
PHP 包,用于通过 RESTful API 将您的应用程序连接到帕萨尔格德互联网支付网关
安装
为了安装,使用 composer
包
$ composer require pepco-api/php-rest-sdk
用法
- 要阅读 API 文档,请 点击此处!(下载完整支付网关文档)
- 将您的私钥保存到项目目录中的
.xml
文件中。
将用户重定向到支付网关
// 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