202ecommerce/younitedpay-sdk

2.1 2023-09-19 18:35 UTC

README

Coding Standart Unit test

此包是Younited Pay PHP SDK。它允许您管理您的商店与Younited Pay之间的交换。

此包是Younited Credit PrestaShop或Magento插件的依赖项。

版本范围

此包与PHP 5.6+兼容。

如何安装?

待办:Composer via packagist

要在开发环境中使用此包以及php 5.6或生产模式,请使用以下命令安装此依赖项:

composer update --ignore-platform-reqs --no-dev

in a eveloppement environment

composer update

如何尝试此SDK?

获取Younited Pay合格的产品,按到期日

最佳价格文档

您可以通过创建一个请求轻松获取产品列表

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Request\BestPriceRequest;
use YounitedPaySDK\Model\BestPrice;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$body = (new BestPrice())
    ->setBorrowedAmount(149.0);

$request = (new BestPriceRequest())
    ->setModel($body)
    ->enableSandbox();

$client = new Client();
try {
    $response = $client->setCredential($clientId, $clientSecret)
        ->sendRequest($request);
    echo '<pre>';
    echo 'Status Code:<br />';
    var_dump($response->getStatusCode());
    echo '<br />Reason phrase (for statut code or error):<br />';
    var_dump($response->getReasonPhrase());
    echo 'Response:<br />';
    var_dump($response->getModel());
    echo '</pre>';
} catch (Exception $e) {
    echo ($e->getMessage() . $e->getFile() . ':' . $e->getLine(). $e->getTraceAsString());
}

您还可以使用客户端API服务获取产品列表

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Service\ClientApiService;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$borrowedAmount = 149.0;
    
$client = (new Client())
    ->setCredential($clientId, $clientSecret);
    
$response = (new ClientApiService($client))
    ->enableTest()
    ->getBestPrice($borrowedAmount);

获取可用到期日

获取可用到期日文档

您可以通过创建一个请求轻松获取可用到期日

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Request\AvailableMaturitiesRequest;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$request = (new AvailableMaturitiesRequest())
    ->enableSandbox()

$client = new Client();
try {
    $response = $client->setCredential($clientId, $clientSecret)
        ->sendRequest($request);
    echo '<pre>';
    echo 'Status Code:<br />';
    var_dump($response->getStatusCode());
    echo '<br />Reason phrase (for statut code or error):<br />';
    var_dump($response->getReasonPhrase());
    echo 'Response:<br />';
    var_dump($response->getModel());
    echo '</pre>';
} catch (Exception $e) {
    echo ($e->getMessage() . $e->getFile() . ':' . $e->getLine(). $e->getTraceAsString());
}

您还可以使用客户端API服务获取可用到期日

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Service\ClientApiService;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$contractReference = 'contract-reference';
    
$client = (new Client())
    ->setCredential($clientId, $clientSecret);
    
$response = (new ClientApiService($client))
    ->enableTest()
    ->getAvailableMaturities();

加载合同

加载合同文档

您可以通过创建一个请求轻松加载合同

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Request\LoadContractRequest;
use YounitedPaySDK\Model\LoadContract;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$body = (new LoadContract())
    ->setContractReference('contract-ref');

$request = (new LoadContractRequest())
    ->setModel($body)
    ->enableSandbox();

$client = new Client();
try {
    $response = $client->setCredential($clientId, $clientSecret)
        ->sendRequest($request);
    echo '<pre>';
    echo 'Status Code:<br />';
    var_dump($response->getStatusCode());
    echo '<br />Reason phrase (for statut code or error):<br />';
    var_dump($response->getReasonPhrase());
    echo 'Response:<br />';
    var_dump($response->getModel());
    echo '</pre>';
} catch (Exception $e) {
    echo ($e->getMessage() . $e->getFile() . ':' . $e->getLine(). $e->getTraceAsString());
}

您还可以使用客户端API服务加载合同

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Service\ClientApiService;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$contractReference = 'contract-reference';
    
$client = (new Client())
    ->setCredential($clientId, $clientSecret);
    
$response = (new ClientApiService($client))
    ->enableTest()
    ->loadContract($contractReference);

初始化合同

初始化合同文档

您可以通过创建一个请求轻松初始化合同

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Request\InitializeContractRequest;
use YounitedPaySDK\Model\Address;
use YounitedPaySDK\Model\PersonalInformation;
use YounitedPaySDK\Model\BasketItem;
use YounitedPaySDK\Model\Basket;
use YounitedPaySDK\Model\MerchantUrls;
use YounitedPaySDK\Model\MerchantOrderContext;
use YounitedPaySDK\Model\InitializeContract;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$datetime = new \DateTime('1970-01-01T00:00:00');

$address = (new Address())
    ->setStreetNumber('123')
    ->setStreetName('StreetName')
    ->setAdditionalAddress('')
    ->setCity('Country')
    ->setPostalCode('12345')
    ->setCountryCode('FR');

$personalInformation = (new PersonalInformation())
    ->setFirstName('FirstName')
    ->setLastName('LastName')
    ->setGenderCode('MALE')
    ->setEmailAddress('firstname.lastname@mail.com')
    ->setCellPhoneNumber('33611223344')
    ->setBirthDate($datetime)
    ->setAddress($address);
     
$basketItem1 = (new BasketItem())
    ->setItemName('Item basket 1')
    ->setQuantity(2)
    ->setUnitPrice(45.0);

$basketItem2 = (new BasketItem())
    ->setItemName('Item basket 2')
    ->setQuantity(1)
    ->setUnitPrice(33.0);

$basket = (new Basket())
    ->setBasketAmount(123.0)
    ->setItems([$basketItem1, $basketItem2]);
    
$merchantUrls = (new MerchantUrls())
    ->setOnApplicationFailedRedirectUrl('on-application-failed-redirect-url.com')
    ->setOnApplicationSucceededRedirectUrl('on-application-succeeded-redirect-url.com')
    ->setOnCanceledWebhookUrl('on-canceled-webhook-url.com')
    ->setOnWithdrawnWebhookUrl('on-withdrawn-webhook-url.com');
    
$merchantOrderContext = (new MerchantOrderContext())
    ->setChannel('test')
    ->setShopCode('TEST')
    ->setMerchantReference('MerchantReference')
    ->setAgentEmailAddress('merchant@mail.com');
    
$body = (new InitializeContract())
    ->setRequestedMaturity(10)
    ->setPersonalInformation($personalInformation)
    ->setBasket($basket)
    ->setMerchantUrls($merchantUrls)
    ->setMerchantOrderContext($merchantOrderContext);

$request = (new InitializeContractRequest())
    ->setModel($body)
    ->enableSandbox();

$client = new Client();
try {
    $response = $client->setCredential($clientId, $clientSecret)
        ->sendRequest($request);
    echo '<pre>';
    echo 'Status Code:<br />';
    var_dump($response->getStatusCode());
    echo '<br />Reason phrase (for statut code or error):<br />';
    var_dump($response->getReasonPhrase());
    echo 'Response:<br />';
    var_dump($response->getModel());
    echo '</pre>';
} catch (Exception $e) {
    echo ($e->getMessage() . $e->getFile() . ':' . $e->getLine(). $e->getTraceAsString());
}

您还可以使用客户端API服务初始化合同

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Model\Address;
use YounitedPaySDK\Model\PersonalInformation;
use YounitedPaySDK\Model\BasketItem;
use YounitedPaySDK\Model\Basket;
use YounitedPaySDK\Model\MerchantUrls;
use YounitedPaySDK\Model\MerchantOrderContext;
use YounitedPaySDK\Service\ClientApiService;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$requestedMaturity = 10;

$datetime = new \DateTime('1970-01-01T00:00:00');

$address = (new Address())
    ->setStreetNumber('123')
    ->setStreetName('StreetName')
    ->setAdditionalAddress('')
    ->setCity('Country')
    ->setPostalCode('12345')
    ->setCountryCode('FR');

$personalInformation = (new PersonalInformation())
    ->setFirstName('FirstName')
    ->setLastName('LastName')
    ->setGenderCode('MALE')
    ->setEmailAddress('firstname.lastname@mail.com')
    ->setCellPhoneNumber('33611223344')
    ->setBirthDate($datetime)
    ->setAddress($address);
     
$basketItem1 = (new BasketItem())
    ->setItemName('Item basket 1')
    ->setQuantity(2)
    ->setUnitPrice(45.0);

$basketItem2 = (new BasketItem())
    ->setItemName('Item basket 2')
    ->setQuantity(1)
    ->setUnitPrice(33.0);

$basket = (new Basket())
    ->setBasketAmount(123.0)
    ->setItems([$basketItem1, $basketItem2]);
    
$merchantUrls = (new MerchantUrls())
    ->setOnApplicationFailedRedirectUrl('on-application-failed-redirect-url.com')
    ->setOnApplicationSucceededRedirectUrl('on-application-succeeded-redirect-url.com')
    ->setOnCanceledWebhookUrl('on-canceled-webhook-url.com')
    ->setOnWithdrawnWebhookUrl('on-withdrawn-webhook-url.com');
    
$merchantOrderContext = (new MerchantOrderContext())
    ->setChannel('test')
    ->setShopCode('TEST')
    ->setMerchantReference('MerchantReference')
    ->setAgentEmailAddress('merchant@mail.com');
    
$client = (new Client())
    ->setCredential($clientId, $clientSecret);
    
$response = (new ClientApiService($client))
    ->enableTest()
    ->initializeContract($requestMaturity, $personalInformation, $basket, $merchantUrls, $merchantOrderContext);

确认合同

确认合同文档

您可以通过创建一个请求轻松确认合同

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Request\ConfirmContractRequest;
use YounitedPaySDK\Model\ConfirmContract;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$body = (new ConfirmContract())
    ->setContractReference('contract-ref')
    ->setMerchantOrderId('order-id');

$request = (new ConfirmContractRequest())
    ->setModel($body)
    ->enableSandbox();

$client = new Client();
try {
    $response = $client->setCredential($clientId, $clientSecret)
        ->sendRequest($request);
    echo '<pre>';
    echo 'Status Code:<br />';
    var_dump($response->getStatusCode());
    echo '<br />Reason phrase (for statut code or error):<br />';
    var_dump($response->getReasonPhrase());
    echo 'Response:<br />';
    var_dump($response->getModel());
    echo '</pre>';
} catch (Exception $e) {
    echo ($e->getMessage() . $e->getFile() . ':' . $e->getLine(). $e->getTraceAsString());
}

您还可以使用客户端API服务确认合同

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Service\ClientApiService;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$contractReference = 'contract-reference';
$merchantOrderId = 'merchant-order_id';
    
$client = (new Client())
    ->setCredential($clientId, $clientSecret);
    
$response = (new ClientApiService($client))
    ->enableTest()
    ->confirmContract($contractReference, $merchantOrderId = null);

激活合同

激活合同文档

您可以通过创建一个请求轻松激活合同

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Request\ActivateContractRequest;
use YounitedPaySDK\Model\ActivateContract;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$body = (new ActivateContract())
    ->setContractReference('contract-ref');

$request = (new ActivateContractRequest())
    ->setModel($body)
    ->enableSandbox();

$client = new Client();
try {
    $response = $client->setCredential($clientId, $clientSecret)
        ->sendRequest($request);
    echo '<pre>';
    echo 'Status Code:<br />';
    var_dump($response->getStatusCode());
    echo '<br />Reason phrase (for statut code or error):<br />';
    var_dump($response->getReasonPhrase());
    echo 'Response:<br />';
    var_dump($response->getModel());
    echo '</pre>';
} catch (Exception $e) {
    echo ($e->getMessage() . $e->getFile() . ':' . $e->getLine(). $e->getTraceAsString());
}

您还可以使用客户端API服务激活合同

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Service\ClientApiService;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$contractReference = 'contract-reference';
    
$client = (new Client())
    ->setCredential($clientId, $clientSecret);
    
$response = (new ClientApiService($client))
    ->enableTest()
    ->activateContract($contractReference);

撤回合同

撤回合同文档

您可以通过创建一个请求轻松撤回合同

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Request\WithdrawContractRequest;
use YounitedPaySDK\Model\WithdrawContract;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$body = (new WithdrawContract())
    ->setContractReference('contract-ref')
    ->setAmount(149.0);

$request = (new WithdrawContractRequest())
    ->setModel($body)
    ->enableSandbox();

$client = new Client();
try {
    $response = $client->setCredential($clientId, $clientSecret)
        ->sendRequest($request);
    echo '<pre>';
    echo 'Status Code:<br />';
    var_dump($response->getStatusCode());
    echo '<br />Reason phrase (for statut code or error):<br />';
    var_dump($response->getReasonPhrase());
    echo 'Response:<br />';
    var_dump($response->getModel());
    echo '</pre>';
} catch (Exception $e) {
    echo ($e->getMessage() . $e->getFile() . ':' . $e->getLine(). $e->getTraceAsString());
}

您还可以使用客户端API服务撤回合同

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Service\ClientApiService;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$contractReference = 'contract-reference';
$amount = '149.0';
    
$client = (new Client())
    ->setCredential($clientId, $clientSecret);
    
$response = (new ClientApiService($client))
    ->enableTest()
    ->withdrawContract($contractReference, $amount);

取消合同

取消合同文档

您可以通过创建一个请求轻松取消合同

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Request\CancelContractRequest;
use YounitedPaySDK\Model\CancelContract;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$body = (new CancelContract())
    ->setContractReference('contract-ref');

$request = (new CancelContractRequest())
    ->setModel($body)
    ->enableSandbox();

$client = new Client();
try {
    $response = $client->setCredential($clientId, $clientSecret)
        ->sendRequest($request);
    echo '<pre>';
    echo 'Status Code:<br />';
    var_dump($response->getStatusCode());
    echo '<br />Reason phrase (for statut code or error):<br />';
    var_dump($response->getReasonPhrase());
    echo 'Response:<br />';
    var_dump($response->getModel());
    echo '</pre>';
} catch (Exception $e) {
    echo ($e->getMessage() . $e->getFile() . ':' . $e->getLine(). $e->getTraceAsString());
}

您还可以使用客户端API服务取消合同

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Service\ClientApiService;

$clientId = 'your-client-id';
$clientSecret = 'your-secret-idtoken';

$contractReference = 'contract-reference';
    
$client = (new Client())
    ->setCredential($clientId, $clientSecret);
    
$response = (new ClientApiService($client))
    ->enableTest()
    ->cancelContract($contractReference);

获取回调响应以配置Webhook

获取回调响应文档

您可以通过创建一个请求轻松获取可用到期日

require 'vendor/autoload.php';

use YounitedPaySDK\Client;
use YounitedPaySDK\Service\ClientApiService;
    
$response = (new Client())->retrieveCallbackResponse();

// Do webhook process