moneywave API 서비스를 사용하기 위한 PHP 라이브러리입니다.
사용 가능한 모든 내용을 보려면 설명서를 확인하세요: https://moneywave-doc.herokuapp.com/
시작하려면 composer
통해 설치하기만 하면 됩니다.
$ composer require emmanix2002/ moneywave
그러면 composer.json
에 추가되고 프로젝트 종속성으로 설치됩니다.
moneywave 서비스에서 사용할 수 있는 모든 기능 과 리소스는 서비스 로 노출됩니다. 따라서 서비스를 사용하려면 먼저 서비스를 생성해야 합니다.
moneywave API의 모든 기능과 리소스는 이 라이브러리의 서비스로 공개됩니다.
이 라이브러리의 진입점은 moneywave
클래스입니다.
$ moneywave = new moneywave ();
이에 대해서는 나중에 더 자세히 논의하겠습니다.
도서관을 이용하려면 moneywave 계정에서 자격 증명을 받아야 합니다. 두 가지 키를 제공합니다.
귀하의 계정은 Test
또는 Production
두 가지 상태 중 하나일 수 있습니다. 각 상태 에 대해 서로 다른 키를 사용하게 됩니다.
이러한 키는 moneywave
클래스에 필요합니다(그리고 보호되어야 합니다. 판매자 계정을 인증하는 데 사용됩니다). 이 라이브러리와 함께 사용하려면 두 가지 가능한 방법 중 하나를 사용할 수 있습니다.
이 방법을 사용하면 서버의 특정 파일에 키가 저장됩니다. 즉, 값이 코드에 하드코딩 되지 않습니다. 라이브러리는 작성기 vendor
디렉터리와 동일한 수준에서 .env
라는 파일을 찾을 것으로 예상합니다.
.env
vendor/
composer.json
composer.lock
위에서 볼 수 있듯이 설정 파일은 설명된 수준에 있어야 합니다. 파일의 내용은 다음과 같이 .env.example
에서 찾을 수 있는 것과 동일해야 합니다.
# your account moneywave API key
moneywave _API_KEY="your API key goes here"
# your account moneywave Secret key
moneywave _SECRET_KEY="your secret key goes here"
# the environment - staging | production
moneywave _ENV="staging"
라이브러리를 사용하려면 해당 값을 설정해야 합니다. 이 작업이 완료되면 간단히 다음을 호출할 수 있습니다.
$ moneywave = new moneywave ();
moneywave 클라이언트를 구성하는 두 번째 방법은 모든 설정을 생성자에 전달하는 것입니다.
방법 1 과 달리 키를 어딘가에 저장하고 인스턴스화할 때 클라이언트에 제공해야 합니다.
$ moneywave = new moneywave (null, $apiKey, $secretKey); # this defaults to the STAGING environment
$ moneywave = new moneywave (null, $apiKey, $secretKey, Environment::STAGING);
클라이언트가 인스턴스화되면(구성 참조 ) 자동으로 VerifyMerchant
서비스를 시작합니다. 이 서비스는 API에 대한 다른 모든 요청을 승인하는 데 사용되는 moneywave 서비스로부터 access token
가져옵니다.
모든 access token
의 수명은 2 hours
입니다. 신청서에는 다음 두 가지 옵션 중 하나가 있습니다.
Session
에 저장하세요. 첫 번째 옵션의 경우 examples
디렉터리의 샘플 파일을 살펴보세요. 다음과 같은 내용이 표시됩니다.
use Emmanix2002 moneywave ExceptionValidationException;
use Emmanix2002 moneywave moneywave ;
require(dirname(__DIR__).'/vendor/autoload.php');
session_start();
try {
$accessToken = !empty($_SESSION['accessToken']) ? $_SESSION['accessToken'] : null;
$mw = new moneywave ($accessToken);
$_SESSION['accessToken'] = $mw->getAccessToken();
$query = $mw->createWalletBalanceService();
$response = $query->send();
var_dump($response->getData());
var_dump($response->getMessage());
} catch (ValidationException $e) {
var_dump($e->getMessage());
}
이를 통해 동일한 시스템의 다른 요청에 동일한 access token
사용할 수 있습니다.
moneywave
개체를 인스턴스화한 후 다음 단계에 따라 서비스를 사용합니다.
create*Service()
메소드 중 하나를 호출하여 필요한 서비스의 인스턴스를 생성합니다.send()
메서드를 호출합니다. 각 기능과 리소스는 서비스에 매핑됩니다. 매핑은 클래스 이름 에서 쉽게 추론할 수 있습니다.
아래 표에는 모든 서비스가 설명되어 있습니다.
클래스 이름 | 서비스콜 |
---|---|
계정번호 확인 | createAccountNumberValidationService |
계정에서계정으로 | createAccountToAccountService |
AccountToWallet | createAccountToWalletService |
계좌이체 | createAccountTransferService |
은행 | createBanksService |
카드를은행계좌로 | createCardToBankAccountService |
카드토큰화 | createCardTokenizationService |
카드투월렛 | createCardToWalletService |
카드이체 | createCardTransferService |
지불 | createDisburseService |
대량 지불 | createDisburseBulkService |
인터넷뱅킹지갑으로 | createInternetBankingToWalletService |
QueryCardToAccountTransfer | createQueryCardToAccountTransfer |
지급조회 | createQuery지불 서비스 |
재시도실패전송 | createRetryFailedTransferService |
TotalChargeToCard | createTotalChargeToCardService |
카드이체 확인 | createValidateCardTransferService |
전송 유효성 검사 | createValidateTransferService |
판매자 확인 | createVerifyMerchantService |
지갑 잔액 | createWalletBalanceService |
각 서비스에는 API로 전송되기 전에 설정해야 하는 속성 목록이 있습니다. 이러한 속성 중 하나 이상이 설정되지 않은 경우 send()
호출하면 ValidationException
이 발생합니다.
Account Number validation API
리소스를 예로 들어 보겠습니다.
설명서에 따르면 다음 속성이 필요합니다.
필드 이름 | 설명 |
---|---|
계좌_번호 | 보내는 사람의 계좌번호 |
은행 코드 | 해결하려는 계좌의 은행 코드 |
라이브러리를 사용하기 위해 다음과 같은 작업을 수행합니다.
$ moneywave = new moneywave ();
$accountValidation = $ moneywave ->createAccountNumberValidationService();
$accountValidation->account_number = '0690000004';
$accountValidation->bank_code = Banks::ACCESS_BANK;
$response = $accountValidation->send();
해당 필드 중 하나가 서비스 객체 에 설정되지 않은 경우 ValidationException
예외가 발생합니다.
(서비스에 대한) moneywave 문서 내에 정의된 모든 필드는 생성된 서비스 객체의 속성으로 설정될 수 있습니다.
특별하고 사용자가 설정할 필요가 없는 특정 필드가 있습니다(선택하여 설정할 수 있음). 라이브러리에서 필요한 값을 자동으로 제공합니다. 아래 목록에서 찾아보세요:
필드 | 설명 |
---|---|
API키 | 이는 moneywave 개체를 인스턴스화하는 데 사용되는 API 키로 설정됩니다. |
비밀 | 이는 moneywave 개체에 사용되는 비밀 키로 설정됩니다. |
요금 | 기본적 으로 0 으로 설정 |
받는 사람 | createCardToWalletService 의 경우 기본적으로 wallet 으로 설정됩니다. |
통화 | 자동으로 Naira Currency::NAIRA 로 설정됩니다. |
특수 필드가 있는 것처럼 일반적인 send()
메소드보다 더 많은 것을 제공하는 특수 서비스 객체도 있습니다.
createCardToBankAccountService()
, createCardToWalletService()
)이러한 이동 서비스는 대부분 2족 보행 이기 때문에 특별합니다. 여기에는 다음 단계가 포함됩니다.
1 전송 구간 2 검증 구간
이 단계는 차례로 작동합니다. 전송을 완료 하려면 두 단계를 모두 완료해야 합니다.
validation
구간을 관리하는 두 가지 서비스가 있습니다. 그들은:
createValidateCardTransferService()
: Verve 직불 카드를 사용하여 카드에서 지갑으로 또는 카드에서 계좌로 이체하는 것을 확인할 수 있습니다.createValidateTransferService()
: 카드에서 지갑으로 또는 계정에서 이루어진 카드에서 계좌로의 이체를 검증할 수 있습니다. 즉, Charge_with 필드가 ChargeMethod::ACCOUNT
로 설정되었습니다.따라서 첫 번째 구간 이후 API로부터 성공 응답을 받으면 ; 검증 다리를 시작합니다.
참고 : Mastercard 및 Visa 카드 전송의 경우 성공적인 API 응답에서 authurl
키를 받게 됩니다. 지불인이 이체를 검증할 수 있도록 이 URL로 리디렉션 해야 합니다. 성공 또는 실패 후 지불인은 전송 요청의 redirecturl
URL 필드에 설정된 URL로 다시 리디렉션됩니다.
이 서비스는 귀하의 moneywave
지갑에서 여러 은행 계좌로 현금을 지급하는 서비스입니다. 개별 beneficiary
계좌를 추가하는 특별한 방법이 있습니다.
addRecipient(string $bankCode, string $accountNumber, float $amount, string $reference = null);
이 방법을 사용하면 각 수혜자 계좌를 차례로 추가할 수 있습니다.
$bulkDisbursement = $ moneywave ->createDisburseBulkService();
$bulkDisbursement->lock = 'wallet password';
$bulkDisbursement->ref = 'unique reference'; # suggestion: you could use a UUID; check out ramsey/uuid package
$bulkDisbursement->senderName = ' moneywave SDK';
$bulkDisbursement->addRecipient(Banks::ACCESS_BANK, '0690000004', 1)
->addRecipient(Banks::ACCESS_BANK, '0690000005', 2);
전체 예제를 보려면 examples/disburse_bulk.php
파일을 살펴보세요.
서비스 개체 (서비스 참조)의 모든 필수 필드가 설정된 경우 send()
호출은 moneywave Response
클래스의 인스턴스인 응답 개체를 반환합니다.
위의 계정 확인 예시를 계속 진행하세요.
$response = $accountValidation->send();
성공적인 응답 JSON
다음과 같은 형식입니다.
{
status: "success",
data: {
name: "MICHAEL JACKSON"
}
}
실패 응답 JSON
의 형식은 다음과 같습니다.
{
status: "error",
message: "error message description",
code: "error code string; e.g. INVALID_ID",
data: "data string -- this is absent most of the time"
}
$response
변수는 이 데이터 작업에 사용할 수 있는 몇 가지 기능을 제공합니다.
# was a request successful?
if ($response->isSuccessful()) {
# do something with the returned data
$name = $response->getData()['name'];
} else {
# this was a failure
$message = $response->getMessage();
$code = $response->getCode();
$data = $response->getData();
}
참고 : 응답 JSON
내의 모든 키는 응답 개체 에서 속성으로 액세스할 수도 있습니다.
if ($response->isSuccessful()) {
$name = $response->getData()['name'];
} else {
$message = $response->message;
$code = $response->code;
}
또 다른 예로, VerifyMerchant
서비스의 응답은 다음과 같습니다.
{
status: "success",
token: "" // a valid merchant token
}
응답을 사용하여 다음을 수행해야 합니다.
$response = $verifyService->send();
if ($response->isSuccessful()) {
$token = $response->token;
} else {
# process the error response as you normally would
}
아래 표에서는 moneywave Response
개체에 정의된 메서드를 설명합니다.
방법 | 반환 유형 | 설명 |
---|---|---|
getRawResponse() | 끈 | API의 JSON 응답 |
성공() | 부울 | status 키 === "success" 인지 확인합니다. |
getCode() | 끈 | code 키를 반환합니다 |
getMessage() | 끈 | message 속성을 반환합니다. |
데이터 가져오기() | 정렬 | data 키를 반환합니다 |
참고 : data
문자열인 응답의 경우; 이 배열 [data: string]
을 반환합니다.