dizatech / rayanpay_ipg
针对Laravel的Rayanpay支付网关
v1.0.0
2023-04-20 07:50 UTC
Requires
- guzzlehttp/guzzle: ^7.0
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:
success或error - token:在请求成功的情况下,包含生成的令牌,可用于将客户重定向到支付页面
- message:当
status为error时包含错误信息
将客户重定向到支付页面
如果调用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:
success或error - 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状态表示交易成功并已结算。