cuonghuynh/easypay2-laravel-5

v1.0.0 2016-07-03 17:44 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:04:13 UTC


README

Laravel

更新composer后,将PackageServiceProvider添加到config/app.php中的providers数组

CuongHuynh\EasyPay2\PackageServiceProvider::class,

你可以选择使用外观以缩短代码。将其添加到你的外观

'EasyPay2' => CuongHuynh\EasyPay2\Facades\EasyPay2Facade::class

发布配置文件。

php artisan vendor:publish

你将在config文件夹中有easypay2.php

用法

EasyPay流程

workshop image

设置

通过在config/easypay2.php中将它设置为true切换到sandbox模式

return [
    'sandbox_flag' => true,
    
    'sandbox' => [
        'endpoint' => 'https://test.wirecard.com.sg/easypay2/paymentpage.do?',
        'mid' => 'xxx',
        'security_key' => 'xxx',
        'security_seq' => 'xxx',
    ],

    'live' => [
        'endpoint' => 'url',
        'mid' => 'xxx',
        'security_key' => 'xxx',
        'security_seq' => 'xxx',
    ]
];
  • 端点:接收交易请求的URL。
  • mid:由WireCard生成的商户ID。
  • 安全密钥:安全参数。
  • 安全序列:用于生成散列字符串的订单,例如:amt,ref,cur,mid,transtype

进行交易

设置URL以接收支付状态并在客户付款后返回。

EasyPay2::set('statusurl', URL);
EasyPay2::set('returnurl', URL);

设置其他支付参数

  • 交易类型,使用包含类型的EPTransactionType类

     EasyPay2::set('transtype', EPTransactionType::SALE);
    
  • 跳过状态页面,这意味着EasyPay不会将状态返回给商户网站。不建议使用。

     EasyPay2::set('skipstatuspage', 'N');
    
  • 参考ID是交易中的唯一值。你可以使用本包中的辅助器来创建RefId。

     EasyPay2::set('ref', EPHelper::uniqueStringRandom());
    
  • 应付金额

     EasyPay2::set('amt', #.##);
    
  • 最后,调用方法以生成请求URL,并带有有效期的分钟数

     EasyPay2::makeTransaction(15);
     $requestUrl = EasyPay2::requestUrl();
    

发送交易

使用Laravel辅助器将客户重定向到支付页面

return redirect($requestUrl);

接收支付状态

此过程完全在后台进行,客户无法看到状态响应。客户付款后,EasyPay将向statusurl发送一个POST请求,并带有参数(见流程图)。

在你的控制器中,获取所有输入

public function postEasyPayStatusResponse(Request $request)
{
     $response = $request->all();
     
    //...
  • 检查响应中的TM_Signature值是否有效,公式是安全序列的散列字符串 + 状态 + 错误 + 安全密钥

例如,现在安全序列是amt,ref,cur,mid,transtype,所以完整的公式是

$mdHashed : hash512($amt, $ref, $cur, $mid, $transtype) . $status . $error . $security_key
$epSignature : get('TM_Signature')

实现,因为Easypay发出了新的请求,所以我们需要为EasyPay实例重新生成值。根据安全序列,你将设置实例所需的所有参数。在这种情况下

$status = $this->request->get('TM_Status');
$error = $this->request->get('TM_Error');
$security_key = EasyPay2::get('security_key');

EasyPay2::set('amt', $amtOfOldRefId);
EasyPay2::set('ref', $oldRefId);
EasyPay2::set('cur', $currencyOfOldRefId);
EasyPay2::set('transtype', $transtypeOfOldRefId);

$data = EasyPay2::getHashDataFromSecuritySeq() . $status . $error . $security_key;

$mdHashed = EPHelper::hashSha512($data);
$signature = $this->request->get('TM_Signature');

检查$mdHashed是否与$signature相同,请求有效,然后进行其他步骤。

发送确认响应

在状态响应中检查签名后,商户必须向EasyPay发送ACK以确认收到请求。

EasyPay2::set('ack', 'YES');
$requestUrl = EasyPay2::requestUrl();

如果未收到状态响应,请发送REVERSAL / VOID请求

内容更新中...

许可证

此Laravel 5的EasyPay2是开源软件,受MIT许可证许可。