Resolves #206: /api/v5/loyalty/account/{id}/bonus/charge method support
This commit is contained in:
parent
3a3d00aeb8
commit
7b393e961b
39
src/Model/Request/Loyalty/LoyaltyBonusChargeRequest.php
Normal file
39
src/Model/Request/Loyalty/LoyaltyBonusChargeRequest.php
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PHP version 7.3
|
||||||
|
*
|
||||||
|
* @category LoyaltyBonusChargeRequest
|
||||||
|
* @package RetailCrm\Api\Model\Request\Loyalty
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace RetailCrm\Api\Model\Request\Loyalty;
|
||||||
|
|
||||||
|
use DateTime;
|
||||||
|
use RetailCrm\Api\Component\FormData\Mapping as Form;
|
||||||
|
use RetailCrm\Api\Interfaces\RequestInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class LoyaltyBonusChargeRequest
|
||||||
|
*
|
||||||
|
* @category LoyaltyBonusChargeRequest
|
||||||
|
* @package RetailCrm\Api\Model\Request\Loyalty
|
||||||
|
*/
|
||||||
|
class LoyaltyBonusChargeRequest implements RequestInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var float
|
||||||
|
*
|
||||||
|
* @Form\Type("float")
|
||||||
|
* @Form\SerializedName("amount")
|
||||||
|
*/
|
||||||
|
public $amount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*
|
||||||
|
* @Form\Type("string")
|
||||||
|
* @Form\SerializedName("comment")
|
||||||
|
*/
|
||||||
|
public $comment;
|
||||||
|
}
|
@ -16,6 +16,7 @@ use RetailCrm\Api\Model\Request\Loyalty\LoyaltiesRequest;
|
|||||||
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyAccountCreateRequest;
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyAccountCreateRequest;
|
||||||
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyAccountEditRequest;
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyAccountEditRequest;
|
||||||
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyAccountsRequest;
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyAccountsRequest;
|
||||||
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyBonusChargeRequest;
|
||||||
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyBonusCreditRequest;
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyBonusCreditRequest;
|
||||||
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyBonusOperationsRequest;
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyBonusOperationsRequest;
|
||||||
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyCalculateRequest;
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyCalculateRequest;
|
||||||
@ -30,6 +31,7 @@ use RetailCrm\Api\Model\Response\Loyalty\LoyaltyBonusCreditResponse;
|
|||||||
use RetailCrm\Api\Model\Response\Loyalty\LoyaltyBonusOperationsResponse;
|
use RetailCrm\Api\Model\Response\Loyalty\LoyaltyBonusOperationsResponse;
|
||||||
use RetailCrm\Api\Model\Response\Loyalty\LoyaltyCalculateResponse;
|
use RetailCrm\Api\Model\Response\Loyalty\LoyaltyCalculateResponse;
|
||||||
use RetailCrm\Api\Model\Response\Loyalty\LoyaltyResponse;
|
use RetailCrm\Api\Model\Response\Loyalty\LoyaltyResponse;
|
||||||
|
use RetailCrm\Api\Model\Response\SuccessResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Loyalty
|
* Class Loyalty
|
||||||
@ -163,6 +165,66 @@ class Loyalty extends AbstractApiResourceGroup
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Makes POST "/api/v5/loyalty/account/{id}/bonus/charge" request.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* ```php
|
||||||
|
* use RetailCrm\Api\Factory\SimpleClientFactory;
|
||||||
|
* use RetailCrm\Api\Interfaces\ApiExceptionInterface;
|
||||||
|
* use RetailCrm\Api\Model\Request\Loyalty\LoyaltyBonusChargeRequest;
|
||||||
|
*
|
||||||
|
* $client = SimpleClientFactory::createClient('https://test.retailcrm.pro', 'apiKey');
|
||||||
|
*
|
||||||
|
* $request = new LoyaltyBonusChargeRequest();
|
||||||
|
* $request->amount = 100;
|
||||||
|
* $request->comment = 'Payment for the goods.';
|
||||||
|
*
|
||||||
|
* try {
|
||||||
|
* $response = $client->loyalty->accountBonusCharge(159, $request);
|
||||||
|
* } catch (ApiExceptionInterface $exception) {
|
||||||
|
* echo sprintf(
|
||||||
|
* 'Error from RetailCRM API (status code: %d): %s',
|
||||||
|
* $exception->getStatusCode(),
|
||||||
|
* $exception->getMessage()
|
||||||
|
* );
|
||||||
|
*
|
||||||
|
* if (count($exception->getErrorResponse()->errors) > 0) {
|
||||||
|
* echo PHP_EOL . 'Errors: ' . implode(', ', $exception->getErrorResponse()->errors);
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* return;
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* echo 'Status: ' . var_export($response->success, true);
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* @param int $id
|
||||||
|
* @param \RetailCrm\Api\Model\Request\Loyalty\LoyaltyBonusChargeRequest $request
|
||||||
|
*
|
||||||
|
* @return \RetailCrm\Api\Model\Response\Loyalty\LoyaltyBonusCreditResponse
|
||||||
|
* @throws \RetailCrm\Api\Exception\Api\AccountDoesNotExistException
|
||||||
|
* @throws \RetailCrm\Api\Exception\Api\ApiErrorException
|
||||||
|
* @throws \RetailCrm\Api\Exception\Api\MissingCredentialsException
|
||||||
|
* @throws \RetailCrm\Api\Exception\Api\MissingParameterException
|
||||||
|
* @throws \RetailCrm\Api\Exception\Api\ValidationException
|
||||||
|
* @throws \RetailCrm\Api\Exception\Client\HandlerException
|
||||||
|
* @throws \RetailCrm\Api\Exception\Client\HttpClientException
|
||||||
|
* @throws \RetailCrm\Api\Interfaces\ApiExceptionInterface
|
||||||
|
* @throws \RetailCrm\Api\Interfaces\ClientExceptionInterface
|
||||||
|
*/
|
||||||
|
public function accountBonusCharge(int $id, LoyaltyBonusChargeRequest $request): SuccessResponse
|
||||||
|
{
|
||||||
|
/** @var LoyaltyBonusCreditResponse $response */
|
||||||
|
$response = $this->sendRequest(
|
||||||
|
RequestMethod::POST,
|
||||||
|
'loyalty/account/' . $id . '/bonus/charge',
|
||||||
|
$request,
|
||||||
|
SuccessResponse::class
|
||||||
|
);
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Makes POST "/api/v5/loyalty/account/{id}/bonus/credit" request.
|
* Makes POST "/api/v5/loyalty/account/{id}/bonus/credit" request.
|
||||||
*
|
*
|
||||||
|
@ -38,6 +38,7 @@ use RetailCrm\Api\Model\Request\Loyalty\LoyaltiesRequest;
|
|||||||
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyAccountCreateRequest;
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyAccountCreateRequest;
|
||||||
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyAccountEditRequest;
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyAccountEditRequest;
|
||||||
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyAccountsRequest;
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyAccountsRequest;
|
||||||
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyBonusChargeRequest;
|
||||||
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyBonusCreditRequest;
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyBonusCreditRequest;
|
||||||
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyBonusOperationsRequest;
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyBonusOperationsRequest;
|
||||||
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyCalculateRequest;
|
use RetailCrm\Api\Model\Request\Loyalty\LoyaltyCalculateRequest;
|
||||||
@ -121,6 +122,29 @@ EOF;
|
|||||||
self::assertModelEqualsToResponse($json, $response);
|
self::assertModelEqualsToResponse($json, $response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testAccountBonusCharge(): void
|
||||||
|
{
|
||||||
|
$json = <<<EOF
|
||||||
|
{
|
||||||
|
"success": true
|
||||||
|
}
|
||||||
|
EOF;
|
||||||
|
|
||||||
|
$request = new LoyaltyBonusChargeRequest();
|
||||||
|
$request->amount = 100;
|
||||||
|
$request->comment = 'Monthly membership bonuses.';
|
||||||
|
|
||||||
|
$mock = static::createApiMockBuilder('loyalty/account/159/bonus/charge');
|
||||||
|
$mock->matchMethod(RequestMethod::POST)
|
||||||
|
->reply(200)
|
||||||
|
->withBody($json);
|
||||||
|
|
||||||
|
$client = TestClientFactory::createClient($mock->getClient());
|
||||||
|
$response = $client->loyalty->accountBonusCharge(159, $request);
|
||||||
|
|
||||||
|
self::assertModelEqualsToResponse($json, $response);
|
||||||
|
}
|
||||||
|
|
||||||
public function testAccountBonusCredit(): void
|
public function testAccountBonusCredit(): void
|
||||||
{
|
{
|
||||||
$activationDate = new DateTime();
|
$activationDate = new DateTime();
|
||||||
|
Loading…
Reference in New Issue
Block a user