triverla/laravel-opay

用于Opay的Laravel包

v1.0.0 2023-07-26 22:55 UTC

This package is auto-updated.

Last update: 2024-09-27 01:26:03 UTC


README

这是一个Laravel包,可以无缝地将Opay支付API集成到任何新的或现有的Laravel应用中。

Opay文档链接

安装

需要PHP 7.2+或HHVM 3.3+以及Composer。

要获取Laravel Opay的最新版本,只需要求它

composer require triverla/laravel-opay

或者将以下行添加到你的composer.json文件的require块中。

"triverla/laravel-opay": "1.0.*"

然后你需要运行composer installcomposer update来下载它并更新自动加载器。

安装Laravel Opay后,你需要注册服务提供者。打开config/app.php并将以下内容添加到providers键中。

'providers' => [
    ...
    Triverla\LaravelOpay\OpayServiceProvider::class,
    ...
]

如果你使用的是Laravel >= 5.5,你可以跳过此步骤并直接进入配置部分。

  • Triverla\LaravelOpay\OpayServiceProvider::class

同时,也要注册Facade,如下所示

'aliases' => [
    ...
    'Opay' => Triverla\LaravelOPay\Facades\Opay::class,
    ...
]

配置

你可以使用以下命令发布配置文件

php artisan vendor:publish --provider="Triverla\LaravelOpay\OpayServiceProvider"

将一个包含一些合理默认值的配置文件opay.php放置在config目录中,如下所示

<?php

return [

     'base_url' => env('OPAY_BASE_URL', 'https://cashierapi.opayweb.com'),
     
     'secret_key' => env('OPAY_SECRET_KEY', ''),
    
     'public_key' => env('OPAY_PUBLIC_KEY', ''),
    
     'merchant_id' => env('OPAY_MERCHANT_ID', '')

];

使用方法

打开你的.env文件,并添加以下键。你可以在(https://merchant.opaycheckout.com/account-details)的API密钥和Webhook选项卡下获得它们

OPAY_BASE_URL=https://cashierapi.opayweb.com
OPAY_SECRET_KEY=XXXXXXXXXX
OPAY_PUBLIC_KEY=XXXXXXXXXX
OPAY_MERCHANT_ID=XXXXXXXXXX
  • 使用以下导入语句导入Opay Facades
  • 同时导入处理失败请求抛出的异常的FailedRequestException。此异常返回相应的Opay错误信息和代码
    ...
    
    use Triverla\LaravelOpay\Facades\Opay;
    use Triverla\LaravelOpay\Exceptions\FailedRequestException;
    
    ...

其他方法包括

    use Triverla\LaravelOpay\Facades\Opay;
    
    //Bank Endpoints
    $response = Opay::bank()->countries();
    $response = Opay::bank()->banks();
    
    //Wallet
     $response = Opay::wallet()->initiateTransaction(string $reference, string $userPhone, float $amount, string $userRequestIp, string $productName, string $productDesc, int $expiresAt = 30, string $currency = 'NGN');
     $response = Opay::wallet()->authorizeTransaction(string $reference, string $orderNo, string $userPhone, string $pin);
     $response = Opay::wallet()->sendOTP(string $reference, string $orderNo, string $payMethod);
     $response = Opay::wallet()->verifyOTP(string $reference, string $orderNo, string $payMethod, string $otp);
     $response = Opay::wallet()->closeTransaction(string $reference, string $orderNo);
     $response = Opay::wallet()->initializeRefund(string $reference, string $refundReference, float $refundAmount, string $orderNo, string $currency = 'NGN');
     $response = Opay::wallet()->verifyRefundStatus(string $reference, string $refundReference, float $refundAmount, string $refundOrderNo);
     
     //Account
     $response = Opay::account()->createUserAccount(string $phoneNumber, string $email, string $firstName, string $lastName, string $password, string $address, string $otp);
     $response = Opay::account()->sendOTP(string $phoneNumber);
     
     //Inquiry
     $response = Opay::inquiry()->balance();
     $response = Opay::inquiry()->validateOPayUser(string $phoneNumber);
     $response = Opay::inquiry()->validateOPayMerchant(string $email);
     $response = Opay::inquiry()->validateBankAccountNumber(string $bankCode, string $bankAccountNumber, string $countryCode = 'NG');
     
     //Transfer
      $response = Opay::transfer()->opayWallet(WalletTransferPayload $payload);
      $response = Opay::transfer()->queryWalletTransferStatus(string $reference, string $orderNo);
      $response = Opay::transfer()->opayWalletBatch(WalletTransferPayloadList $payloadList);
      $response = Opay::transfer()->bankAccount(BankTransferPayload $payload);
      $response = Opay::transfer()->queryBankTransferStatus(string $reference, string $orderNo);
      $response = Opay::transfer()->bankAccountBatch(BankTransferPayloadList $payloadList);
      
      //Transactions
      $response = Opay::transaction()->initializeCardTransaction(string $reference, float $amount, string $firstName, string $lastName, string $customerEmail, string $cardNumber,
                                              string $cardDateMonth, string $cardDateYear, string $cardCVC, string $return3dsUrl, string $bankAccountNumber,
                                              string $bankCode, string $reason, string $callbackUrl, string $expiresAt, string $billingZip = null, string $billingCity = null,
                                              string $billingAddress = null, string $billingState = null, string $billingCountry = null,
                                              string $currency = 'NGN', string $country = 'NG');
                                              
     $response = Opay::transaction()->initializeTokenTransaction(string $reference, float $amount, string $customerPhone, string $customerEmail, string $reason, string $callbackUrl, string $expiresAt, string $token,
                                               string $currency = 'NGN', string $country = 'NG');
    
    $response = Opay::transaction()->initializeBankAccountTransaction(string $reference, float $amount, string $customerPhone, string $return3dsUrl, string $bankAccountNumber,
                                                     string $bankCode, string $reason, string $bvn, string $dobDay, string $dobMonth, string $dobYear,
                                                     string $currency = 'NGN', string $country = 'NG');
                                                     
    $response = Opay::transaction()->checkTransactionStatus(string $reference, string $orderNo);
    $response = Opay::transaction()->transactionInputPIN(string $reference, string $orderNo, string $pin);
    $response = Opay::transaction()->transactionInputOTP(string $reference, string $orderNo, string $otp);
    $response = Opay::transaction()->transactionInputPhone(string $reference, string $orderNo, string $phone);
    $response = Opay::transaction()->transactionInputDob(string $reference, string $orderNo, string $dob);
    $response = Opay::transaction()->initiateBankTransferTransaction(string $reference, string $userPhone, float $amount, string $userRequestIp, string $productName, string $productDesc, int $expiresAt = 30, string $currency = 'NGN');
    $response = Opay::transaction()->getBankTransferTransactionStatus(string $reference, string $orderNo);
    $response = Opay::transaction()->initiateUSSDTransaction(string $reference, string $userPhone, float $amount, string $userRequestIp, string $productName, string $productDesc, int $expiresAt = 30, string $currency = 'NGN');
    $response = Opay::transaction()->getUSSDTransactionStatus(string $reference, string $orderNo);

    //Bills
    $response = Opay::bills()->bettingProviders();
    $response = Opay::bills()->validate(string $serviceType, string $provider, string $customerId);
    $response = Opay::bills()->bulkBills(BulkBillsListPayload $billsListPayload, string $callbackUrl, string $serviceType);
    $response = Opay::bills()->bulkStatus(BulkStatusRequest $bulkStatusRequest, string $serviceType);

测试

composer test

待办事项

  • Webhook事件

贡献

请随意fork此包,并通过向GitHub提交拉取请求来增强其功能。

错误和问题

如果你在此包中发现任何错误或问题,请在此处创建问题问题

安全性

如果你发现任何与安全相关的问题,请发送电子邮件至yusufbenaiah@gmail.com

如何感谢你?

为何不在GitHub仓库上点赞,并在Twitter或其他社交平台上分享此仓库的链接。

别忘了在Twitter上关注我

谢谢!Benaiah Yusuf

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件