waad / zaincash
ZainCash支付网关集成包API Laravel
v11.0.0
2024-04-04 21:53 UTC
Requires
- php: ^8.2
- laravel/framework: ^11.0
This package is auto-updated.
Last update: 2024-09-04 22:53:12 UTC
README
这是一个用于集成ZainCash支付网关API的Laravel包。用于伊拉克第纳尔在伊拉克的本地金融交易。此包基于官方ZainCash API文档。您可以在(https://docs.zaincash.iq)找到官方文档。
🎀 要求
📌 安装
composer require waad/zaincash
将配置文件发布到 config/zaincash.php
php artisan vendor:publish --tag="zaincash"
在 config/zaincash.php 中更新zaincash配置或从 .env 文件
配置到 .env 文件
ZAINCASH_MSISDN=9647835077893 # Test Credentials ZAINCASH_MERCHANT_ID=5ffacf6612b5777c6d44266f # Test Credentials ZAINCASH_SECRET=$2y$10$h................ # Test Credentials ZAINCASH_TEST=true # default true ZAINCASH_PREFIX_ORDER_ID=wa3d_ # default wa3d_ ZAINCASH_LANGUAGE=ar # optional default ar ZAINCASH_IS_REDIRECT=false # optional default false ZAINCASH_MIN_AMOUNT=1000 # optional default 1000 ZAINCASH_TEST_URL=https://test.zaincash.iq/ # optional ZAINCASH_LIVE_URL=https://api.zaincash.iq/ # optional ZAINCASH_TIMEOUT=10 # optional ZAINCASH_VERIFY_SSL=true # optional
php artisan optimize
🍔 使用
使用 ZainCash 面板或类示例
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Requests\Payment \InitialPaymentRequest; use Illuminate\Support\Str; use Waad\ZainCash\Facades\ZainCash; class PaymentController extends Controller { /** * Create Request Transaction * * @param InitialPaymentRequest $request * @return \Illuminate\Http\JsonResponse */ public function initialTransaction (InitialPaymentRequest $request) { $zainCashPayment = ZainCash::setAmount($request->amount) ->setServiceType('Book') ->setOrderId(Str::random(36)) ->setIsTest(true) ->setIsReturnArray(true); return response()->json( $zainCashPayment->createTransaction() ); } }类
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Requests\Payment \InitialPaymentRequest; use Illuminate\Support\Str; use Waad\ZainCash\ZainCash; class PaymentController extends Controller { /** * Create Request Transaction * * @param InitialPaymentRequest $request * @return \Illuminate\Http\JsonResponse */ public function initialTransaction (InitialPaymentRequest $request) { $zainCashPayment = ZainCash::make() ->setAmount($request->amount) ->setServiceType('Book') ->setOrderId(Str::random(36)) ->setIsTest(true) ->setIsReturnArray(true); return response()->json( $zainCashPayment->createTransaction() ); } }
- 获取器 和 设置器 属性表
⚠️ 重要 列表示该属性经常使用且没有默认值。相反,我们可以更改它,但它将采用来自 config/zaincash.php 的默认值。
- 从创建交易到完成支付步骤
步骤 1 - 创建交易
$zainCashPayment = ZainCash::make() ->setAmount($request->amount) ->setServiceType('Book') ->setOrderId(Str::random(36)) ->setIsTest(true);
setAmount($amount): 设置交易的金额(伊拉克第纳尔)。金额必须大于或等于配置文件中指定的最小金额。setServiceType($serviceType): 设置交易的服务类型。服务类型必须是以下之一:Book、Food、Grocery、Pharmacy、Transportation、Other。setOrderId($orderId): 设置交易的订单ID。订单ID对于每笔交易必须是唯一的。setIsTest($isTest): 设置使用ZainCash API的环境。测试环境设置为true,生产环境设置为false。setIsReturnArray(bool): 设置交易的返回类型。设置为true以返回 数组,设置为false以返回 object stdClass。默认值为false。createTransaction(): 创建交易并返回交易详情(《数组》或《object stdClass》)。
$transaction = $zainCashPayment->createTransaction();
响应示例
{
"source": "web",
"type": "MERCHANT_PAYMENT",
"amount": "1000",
"to": "5ffacf6612b5777c6d44266f",
"serviceType": "Book",
"lang": "ar",
"orderId": "wa3d_Q9IpdkNw7EVypwLRuE2PDDoVLA4FPhAjhlyO",
"currencyConversion": {},
"referenceNumber": "RGUR9Q",
"credit": false,
"status": "pending",
"reversed": false,
"createdAt": "2023-11-18T08:24:32.467Z",
"updatedAt": "2023-11-18T08:24:32.467Z",
"id": "655874c00227c4d2ec58f710"
}
// if return array use ->setIsReturnArray(true); $transactionId = $transaction['id']; // if return object use ->setIsReturnArray(false); -- default $transactionId = $transaction->id;
步骤 2 - 检查交易
$zainCashPayment = ZainCash::make() ->setTransactionID($transactionID) ->setIsReturnArray(true);
setTransactionID($transactionID): 设置交易的交易ID。setIsReturnArray(bool): 设置交易的返回类型。设置为true以返回 数组,设置为false以返回 object stdClass。默认值为false。checkTransaction(): 检查交易并返回交易详情(《数组》或《object stdClass》)。
$transactionDetails = $zainCashPayment->checkTransaction();
根据状态响应示例
{
"to": {
"name": "Karrar",
"msisdn": "9647835077893",
"currency": "IQD",
"deleted": false,
"pay_by_reference": "1",
"createdAt": "2021-01-10T09:56:54.180Z",
"updatedAt": "2021-12-22T13:01:02.531Z",
"id": "5ffacf6612b5777c6d44266f"
},
"source": "web",
"type": "MERCHANT_PAYMENT",
"amount": "1000",
"serviceType": "Book",
"lang": "ar",
"orderId": "wa3d_2eTDlz8umPE3DwtocL5O8Xpe10yLH4pepci2",
"currencyConversion": [],
"referenceNumber": "MDJN1I",
"credit": false,
"status": "pending", // pending, pending_otp, completed, failed, cancel
"reversed": false,
"createdAt": "2023-11-18T11:37:16.574Z",
"updatedAt": "2023-11-18T11:37:16.574Z",
"id": "6558a1ec0227c4d2ec58f717"
}
*****************************************
{
"to": {
....
},
...
"status": "pending_otp", // <--- status pending_otp after processing
"sofOwnerId": 18482,
"traveldiscount": "10000",
"from": "9647802999569",
"onCustomerFees": "50000000",
"onMerchantFees": "0",
"totalFees": 500,
...
}
*****************************************
{
"to": {
...
},
...
"status": "completed", // <--- status completed after complete (Payment)
"sofOwnerId": 18482,
"traveldiscount": "1000",
"from": "9647802999569",
"onCustomerFees": "50000000",
"onMerchantFees": "0",
"totalFees": 500,
"operationDate": "2023-11-22T18:23:52.270Z",
"operationId": "1173300",
...
}
*****************************************
{
"to": {
...
},
...
"status": "failed", // <--- status failed that mean there is (expiration or a wrong)
"sofOwnerId": 18482,
"traveldiscount": "9900",
"from": "9647802999569",
"onCustomerFees": "50000000",
"onMerchantFees": "0",
"totalFees": 500,
"due": "Not enough credit on balance",
...
}
*****************************************
{
"to": {
...
},
...
"status": "cancel", // <--- status cancel it mean the user cancel the transaction
"sofOwnerId": 18482,
"traveldiscount": "10000",
"from": "9647802999569",
"onCustomerFees": "50000000",
"onMerchantFees": "0",
"totalFees": 500,
"due": "transaction_already_submitted",
...
}
// if return array use ->setIsReturnArray(true); $status = $transactionDetails['status']; $name = $transactionDetails['to']['name']; // if return object use ->setIsReturnArray(false); -- default $status = $transactionDetails->status; $name = $transactionDetails->to->name;
步骤 3 - 处理交易
$zainCashPayment = ZainCash::make() ->setTransactionID($transactionID) ->setIsReturnArray(true);
setTransactionID($transactionID): 设置交易的交易ID。setIsReturnArray(bool): 设置交易的返回类型。设置为true以返回 数组,设置为false以返回 object stdClass。默认值为false。processingTransaction($phonenumber, $pin): 处理交易并返回交易详情(《数组》或《object stdClass》)。
$processingDetails = $zainCashPayment->processingTransaction("9647802999569", '1234');
根据成功响应示例
{
"success": 1,
"transactionid": "655883cd0227c4d2ec58f712",
"initialAmount": "1000",
"totalFees": 500,
"discount": "1000",
"total": 1500,
"onCustomerFees": "50000000",
"onMerchantFees": "0"
}
********************************************
{
"success": 0,
"error": "العملية قد قدمت من قبل"
}
********************************************
{
"success": 0,
"error": "رقم المحفظة-الهاتف أو الرمز السري غير صحيح"
}
// if return array use ->setIsReturnArray(true); $success = $processingDetails['success']; // if return object use ->setIsReturnArray(false); -- default $success = $processingDetails->success;
步骤 4 - 完成交易
$zainCashPayment = ZainCash::make() ->setTransactionID($transactionID) ->setIsReturnArray(true);
setTransactionID($transactionID): 设置交易的交易ID。setIsReturnArray(bool): 设置交易的返回类型。设置为true以返回 数组,设置为false以返回 object stdClass。默认值为false。payTransaction($phonenumber, $pin, $otp): 完成支付交易并返回交易详情(《数组》或《object stdClass》)。
$payDetails = $zainCashPayment->payTransaction("9647802999569", '1234', '1111');
根据成功响应示例
{
"success": 1,
"msg": "succesful_transaction"
}
********************************************
{
"success": 0,
"msg": "You have entered an incorrect OTP. In the next try, please enter the correct PIN delivered to your mobile by SMS "
}
********************************************
{
"success": 0,
"msg": "Not enough credit on balance"
}
// if return array use ->setIsReturnArray(true); $success = $payDetails['success']; // if return object use ->setIsReturnArray(false); -- default $success = $payDetails->success;
步骤 5 - 取消交易
$zainCashPayment = ZainCash::make() ->setTransactionID($transactionID) ->setIsReturnArray(true);
setTransactionID($transactionID): 设置交易的交易ID。setIsReturnArray(bool): 设置交易的返回类型。设置为true以返回 数组,设置为false以返回 object stdClass。默认值为false。cancelTransaction(): 取消交易并返回交易详情(《数组》或《object stdClass》)。
$cancelDetails = $zainCashPayment->cancelTransaction();
根据成功响应示例
{
"success":0,
"msg":"لقد قمت بالغاء العملية"
}
************************************
{
"success":0,
"msg":"العملية قد قدمت من قبل"
}
// if return array use ->setIsReturnArray(true); $success = $cancelDetails['success']; // if return object use ->setIsReturnArray(false); -- default $success = $cancelDetails->success;
🧔 作者
作者: Waad Mawlood
Email: waad_mawlood@outlook.com
⚖️ 许可证
MIT许可证(MIT)。有关更多信息,请参阅MIT许可证。
