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许可证。