1. Go to this page and download the library: Download krzysztof-gzocha/payu library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
krzysztof-gzocha / payu example snippets
use Team3\PayU\Configuration\Configuration;
use Team3\PayU\Configuration\Credentials\TestCredentials;
$payuConfiguration = new Configuration(
new TestCredentials()
);
use Team3\PayU\Configuration\Configuration;
use Team3\PayU\Configuration\Credentials\Credentials;
$payuConfiguration = new Configuration(
new Credentials('<merchant pos id>', '<private key>')
);
use \Team3\PayU\Order\Model\Order;
use \Team3\PayU\Order\Model\Products\Product;
use \Team3\PayU\Order\Model\Money\Money;
$order = new Order();
$product = new Product();
$order
->setDescription('Example order')
->setCurrencyCode('EUR')
->setOrderId('123456');
$product
->setName('Some product')
->setQuantity(10)
->setUnitPrice(new Money(10));
$order->getProductCollection()->addProduct($product);
namespace Users\App;
use Team3\PayU\Annotation\PayU;
use Team3\PayU\Order\Model\Money\Money;
class UserOrder
{
/**
* @PayU(propertyName="general.orderId")
*/
public function getId()
{
return '123456';
}
/**
* @PayU(propertyName="general.description")
*/
private function getDescription()
{
return 'Example order';
}
/**
* @PayU(propertyName="general.currencyCode")
*/
private function getCurrencyCode()
{
return 'EUR';
}
/**
* @PayU(propertyName="productCollection")
*/
private function getProducts()
{
// Both array and \Traversable object can be returned
return [
new UserProduct(),
];
}
}
class UserProduct
{
/**
* @PayU(propertyName="product.name")
*/
private function getName()
{
return 'Some product';
}
/**
* @PayU(propertyName="product.quantity")
*/
private function getQuantity()
{
return 10;
}
/**
* @PayU(propertyName="product.unitPrice")
*/
private function getPrice()
{
// This method should return anything
// that implements \Team3\PayU\Order\Model\Money\MoneyInterface
return new Money(10);
}
}
use \Team3\PayU\Order\Transformer\UserOrder\UserOrderTransformerFactory;
$order = new Order(); // Order for library purposes
$userOrder = new UserOrder(); // Order from users application
$logger = new NullLogger(); // ONLY for example. Use real logger.
$transformerFactory = new UserOrderTransformerFactory();
$transformer = $transformerFactory->build($logger);
// Will transform UserOrder into Order
$transformer->transform($order, $userOrder);
// $order->getDescription() => 'Example order'
use \Team3\PayU\NullLogger;
use \Team3\PayU\Order\Autocomplete\OrderAutocompleteFactory;
$logger = new NullLogger(); // ONLY for example. Use real logger.
$autocompleteFactory = new OrderAutocompleteFactory();
$autocomplete = $autocompleteFactory->build($logger);
// Complete $order with parameters. Use $credentials
try {
$autocomplete->autocomplete($order, $credentials);
} catch (OrderAutocompleteException $exception) {
// Something went wrong.
}
// $order->getSignature() => '7f46165474d11ee5836777d85df2cdab';
use \Symfony\Component\Validator\ConstraintViolationListInterface;
use \Team3\PayU\Communication\Process\RequestProcessFactory;
use \Team3\PayU\Communication\Request\OrderCreateRequest;
use \Team3\PayU\Communication\Response\OrderCreateResponse;
use \Team3\PayU\NullLogger;
$logger = new NullLogger(); // ONLY for example. Use real logger.
$requestProcessFactory = new RequestProcessFactory();
$requestProcess = $requestProcessFactory->build($logger);
try {
/** @var OrderCreateResponse $orderCreateResponse **/
$orderCreateResponse = $requestProcess->process(
new OrderCreateRequest($order),
$configuration
);
} catch (InvalidRequestDataObjectException $exception) {
/**
* $order is invalid. Violations are stored in exception.
* @var ConstraintViolationListInterface $violations
*/
$violations = $exception->getViolations();
} catch (PayUException $exception) {
// something went wrong.
}
if ($orderCreateResponse->getRequestStatus()->isSuccess()) {
// Request was ok. You can redirect user to given url
$this->redirectTo(
$orderCreateResponse->getRedirectUri()
);
} else {
// Request was not ok.
// Pass this information to user however you want
}
// $requestProcess was created in exactly the same way.
use \Team3\PayU\Communication\Response\OrderRetrieveResponse;
$order->setPayUOrderId('<order id from payu>');
$requestProcess->shouldValidate(false); // We dont need to validate this time
try {
/** @var OrderRetrieveResponse $orderStatusResponse */
$orderStatusResponse = $requestProcess->process(
new OrderRetrieveRequest($order), // $order->getPayUOrderId() should not be null
$configuration
);
} catch (PayUException $exception) {
// Something went wrong..
}
// Order status:
// $status = $orderStatusResponse->getFirstOrder()->getStatus();
// Completed status:
// $status->isCompleted() -> true
use \Team3\PayU\Communication\Process\NotificationProcess\NotificationProcessFactory;
use \Team3\PayU\Communication\Notification\OrderNotification;
use \Team3\PayU\Communication\Process\NotificationProcess\NotificationProcessException;
$logger = new NullLogger(); // Only for example.
$notificationProcessFactory = new NotificationProcessFactory();
$notificationProcess = $notificationProcessFactory->build($logger);
// $notificationData is content of received notification
// $signatureHeader can be read from http header "OpenPayu-Signature"
// from received notification. It can be null.
try {
/** @var OrderNotification $orderNotification */
$orderNotification = $notificationProcess->process(
$configuration->getCredentials(),
$notificationData,
$signatureHeader
);
} catch (NotificationProcessException $exception) {
// Something was wrong with the process. Maybe signature was wrong?
} catch (PayUException $exception) {
// Something went really wrong..
}
// $orderNotification->getOrder()->getStatus->isCompleted() -> true
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.