zfhassaan / easypaisa
解锁EasyPaisa支付网关在Laravel 9和Laravel 10中的强大功能。无缝且安全地接受支付,助力您的业务在数字时代蓬勃发展。体验无障碍集成,为您的客户提供顺畅的结账体验。
v1.0.5
2023-05-31 09:29 UTC
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.7
README
免责声明
这是一个非官方的Easypaisa API支付网关。此仓库仅创建用于帮助开发者简化集成过程。
安装
该包提供两种使用方式。
- 直接结账
- 托管结账。
要使用直接结账(REST API),您可以调用已定义的函数sendRequest()
;要使用托管结账(重定向方法),您可以调用sendHostedRequest()
方法将用户重定向到easypaisa支付页面。
要安装EasyPaisa包,请按照以下步骤操作
通过Composer运行以下命令安装包
composer require zfhassaan/easypaisa
运行以下命令发布包配置文件
php artisan vendor:publish
使用所需配置值更新.env
文件
EASYPAISA_MODE=sandbox EASYPAISA_SANDBOX_URL= EASYPAISA_PRODUCTION_URL= EASYPAISA_TYPE=direct EASYPAISA_SANDBOX_USERNAME= EASYPAISA_SANDBOX_PASSWORD= EASYPAISA_SANDBOX_STOREID= EASYPAISA_PRODUCTION_USERNAME= EASYPAISA_PRODUCTION_PASSWORD= EASYPAISA_PRODUCTION_STOREID= EASYPAISA_PAYMENT_TYPE=MA EASYPAISA_SANDBOX_HASHKEY= EASYPAISA_PRODUCTION_HASHKEY= EASYPAISA_CALLBACK_URL= EASYPAISA_HOSTED_CHECKOUT=
用法
直接结账
要使用EasyPaisa支付网关执行直接结账,请使用以下代码
try { $easypaisa = new Easypaisa; $response = $easypaisa->sendRequest($request->all()); $responseCode = $response['responseCode']; $responseDesc = $response['responseDesc']; if ($responseCode != '0000') { return response()->json(['status' => false, 'message' => $responseDesc], Response::HTTP_NOT_ACCEPTABLE); } $result = [ 'status_code' => '00', 'status_msg' => $response['responseDesc'], 'transaction_id' => $response['transactionId'], 'code' => $response['responseCode'], 'message' => $response['responseDesc'], 'basket_id' => strip_tags($request['orderId']) ]; return response()->json($result); } catch (\Exception $e) { return response()->json(['status' => false, 'message' => 'Error Processing Your Request.'], 500); }
Easypaisa类的sendRequest()
方法处理支付请求。它以输入数组的形式接收请求数据,并从EasyPaisa支付网关返回响应。
包文件:Easypaisa.php
sendRequest()方法在Easypaisa包文件中定义。它通过将数据发送到EasyPaisa API处理支付请求。
$credentials = $this->getCredentials(); $data = [ 'orderId' => strip_tags($request['orderId']), 'storeId' => $this->getStoreId(), 'transactionAmount' => strip_tags($request['amount']), 'transactionType' => 'MA', 'mobileAccountNo' => strip_tags($request['mobileAccountNo']), 'emailAddress' => strip_tags($request['emailAddress']) ]; $response = Http::timeout(60)->withHeaders([ 'credentials' => $credentials, 'Content-Type' => 'application/json' ])->post($this->getApiUrl(), $data); $result = $response->json(); return $result;
getCredentials()方法根据配置设置检索凭据
托管结账
要使用EasyPaisa支付网关执行托管结账,请使用以下代码
$data['amount'] = strip_tags($request['amount']); //Last two digits will be considered as Decimal $data['orderRefNum'] = strip_tags($request['orderRefNum']); // You can customize it (only Max 20 Alpha-Numeric characters) $data['paymentMethod'] = 'InitialRequest'; $data['postBackURL'] = $this->getCallbackUrl(); $data['storeId'] = $this->getStoreId(); $data['timeStamp'] = $this->getTimestamp(); $hashk = $this->gethashRequest($data); $data['encryptedHashRequest'] = $hashk; $data['mobileAccountNo'] = ''; return $this->getCheckoutUrl($data);
gethashRequest()方法在加密后检索HashKey。getCheckoutUrl()方法检索将用户重定向到Easypaisa门户的结账URL。
Hosted.blade.php
<form action="" method="POST" target="_blank"> @csrf <input name="transactionAmount" value=""/> <input name="orderId" value="" hidden = "true"/> <input name="storeId" value="" hidden = "true"/> <input name="mobileAccountNo" value=""/> <input name="emailAddress" value=""/> <input name="postBackURL" value="" hidden = "true"/> <input type="submit" src=”checkout-button-with-logo.png border=”0” name= “pay”> </form>
控制器
public function index(Request $request) { $easypaisa = new Easypaisa(); $response = $easypaisa->sendHostedRequest($request->all()); return redirect()->away($response,302); }