cuonghuynh / easypay2-laravel-5
Easypay2网关
Requires
- php: >=5.4.0
- illuminate/support: 5.0.x|5.1.x|5.2.x
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流程
设置
通过在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许可证许可。