dizatech/rayanpay_ipg

针对Laravel的Rayanpay支付网关

v1.0.0 2023-04-20 07:50 UTC

This package is auto-updated.

Last update: 2024-09-20 10:49:36 UTC


README

在进行支付交易时,我们必须通过Web服务请求支付。如果我们的请求成功,IPG将返回一个令牌,我们在将客户重定向到支付页面时应使用此令牌。客户将通过带有可能用于检查和验证客户交易的Web服务的数据的GET请求从支付页面重定向回我们期望的URL(回调URL)。

请求支付

对于支付交易,我们应该向IPG发送支付请求并获取一个令牌。这可以通过调用getToken方法实现。

实例化IPG对象

要实例化IPG对象,我们应该调用Dizatech\RayanpayIpg\RayanpayIpg构造函数,传入一个包含所需参数的数组,其中包含:

  • merchantId:您的支付网关商户ID

代码示例

$args = [
    'merchantId'    => '4e1598fc-09b8-29e6-2edc-bf5494616b4d'
]; //Replace arguments with your gateway actual values
$ipg = new RayanpayIpg($args);

getToken方法

参数

  • amount:以里亚尔为单位的金额
  • redirect_address:客户支付后可能被重定向到的URL

返回

一个具有以下属性的对象

  • status:successerror
  • token:在请求成功的情况下,包含生成的令牌,可用于将客户重定向到支付页面
  • message:当statuserror时包含错误信息

将客户重定向到支付页面

如果调用getToken的结果的status属性为success,我们可以将客户重定向到当前的支付页面URL(https://pms.rayanpay.com/pg/startpay/)。我们必须通过GET请求将用户重定向到支付页面。

有必要保存获取的令牌以供后续使用

代码示例

$args = [
    'merchantId'    => '4e1598fc-09b8-29e6-2edc-bf5494616b4d'
]; //Replace arguments with your gateway actual values
$ipg = new RayanpayIpg($args);
$amount = 1000; //Replace with actual order amount in Rials
$redirect_address = 'http://my.com/verify'; //Replace with your desired callback page URL
$result = $ipg->getToken($amount, $redirect_address);
if( $result->status == 'success' ){
    header('Location: https://pms.rayanpay.com/pg/startpay/' . $result->token);
    die();
}
else{
    echo "Error: {$result->message}";
}

支付验证和结算

支付后,客户将通过GET请求从支付请求阶段提供的回调URL重定向回,带有所有必要的数据,包括:

  • Authority:支付令牌,用户通过该令牌被重定向到支付页面
  • Status:支付状态,对于成功的支付应该是OK

如果Status等于OK,我们可以调用verifyRequest方法来验证支付。

verifyRequest方法

参数

  • amount:支付请求中使用的原始订单金额
  • token:IPG返回的Authority参数

返回

一个具有以下属性的对象

  • status:successerror
  • message:描述状态的消息
  • ref_id:成功交易的情况下的引用ID

代码示例

$args = [
    'merchantId'    => '4e1598fc-09b8-29e6-2edc-bf5494616b4d'
]; //Replace arguments with your gateway actual values
$ipg = new RayanpayIpg($args);
$amount = 1000; //Replace with actual order amount in Rials
$result = $ipg->verifyRequest($amount, $_GET['Authority']);

在响应中获得success状态表示交易成功并已结算。