-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
example to creating token and some code cleanup
- Loading branch information
Showing
2 changed files
with
205 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,205 @@ | ||
<?php | ||
/** | ||
* Include composer class autoloader | ||
*/ | ||
require_once dirname(__FILE__) . '/../vendor/autoload.php'; | ||
|
||
use PayU\Alu\Billing; | ||
use PayU\Alu\Card; | ||
use PayU\Alu\Client; | ||
use PayU\Alu\Delivery; | ||
use PayU\Alu\MerchantConfig; | ||
use PayU\Alu\Order; | ||
use PayU\Alu\Product; | ||
use PayU\Alu\Request; | ||
use PayU\Alu\User; | ||
use PayU\Alu\Exceptions\ConnectionException; | ||
use PayU\Alu\Exceptions\ClientException; | ||
|
||
|
||
/** | ||
* Create configuration with params: | ||
* | ||
* Merchant Code - Your PayU Merchant Code | ||
* Secret Key - Your PayU Secret Key | ||
* Platform - RO | RU | UA | TR | HU | ||
*/ | ||
$cfg = new MerchantConfig('MERCHANT_CODE', 'SECRET_KEY', 'RO'); | ||
|
||
/** | ||
* Create user with params: | ||
* | ||
* User IP - User's IP address | ||
* Card Number Input Time - Time it took the user to enter credit card number in seconds | ||
* User Time - Time of user computer - optional | ||
* | ||
*/ | ||
$user = new User('127.0.0.1'); | ||
|
||
/** | ||
* Create new order | ||
*/ | ||
$order = new Order(); | ||
|
||
/** | ||
* Setup the order params | ||
* | ||
* Full params available in the documentation | ||
*/ | ||
$order->withBackRef('http://path/to/your/returnUrlScript') | ||
->withOrderRef('MerchantOrderRef') | ||
->withCurrency('RON') | ||
->withOrderDate(gmdate('Y-m-d H:i:s')) | ||
->withOrderTimeout(1000) | ||
->withPayMethod('CCVISAMC'); | ||
|
||
/** | ||
* Create new product | ||
*/ | ||
$product = new Product(); | ||
|
||
/** | ||
* Setup the product params | ||
* | ||
* Full params available in the documentation | ||
*/ | ||
$product->withCode('PCODE01') | ||
->withName('PNAME01') | ||
->withPrice(100.0) | ||
->withVAT(24.0) | ||
->withQuantity(1); | ||
|
||
/** | ||
* Add the product to the order | ||
*/ | ||
$order->addProduct($product); | ||
|
||
/** | ||
* Create another product | ||
*/ | ||
$product = new Product(); | ||
|
||
/** | ||
* Setup the product params | ||
* | ||
* Full params available in the documentation | ||
*/ | ||
$product->withCode('PCODE02') | ||
->withName('PNAME02') | ||
->withPrice(200.0) | ||
->withVAT(24.0) | ||
->withQuantity(1); | ||
|
||
/** | ||
* Add the second product to the same order | ||
*/ | ||
$order->addProduct($product); | ||
|
||
/** | ||
* Create new billing address | ||
*/ | ||
$billing = new Billing(); | ||
|
||
/** | ||
* Setup the billing address params | ||
* | ||
* Full params available in the documentation | ||
*/ | ||
$billing->withAddressLine1('Address1') | ||
->withAddressLine2('Address2') | ||
->withCity('City') | ||
->withCountryCode('RO') | ||
->withEmail('[email protected]') | ||
->withFirstName('FirstName') | ||
->withLastName('LastName') | ||
->withPhoneNumber('40123456789') | ||
->withIdentityCardNumber('111222'); | ||
|
||
/** | ||
* Create new delivery address | ||
* | ||
* If you want to have the same delivery as billing, skip these two steps | ||
* and pass the Billing $billing object to the request twice | ||
*/ | ||
$delivery = new Delivery(); | ||
|
||
/** | ||
* Setup the delivery address params | ||
* | ||
* Full params available in the documentation | ||
*/ | ||
$delivery->withAddressLine1('Address1') | ||
->withAddressLine2('Address2') | ||
->withCity('City') | ||
->withCountryCode('RO') | ||
->withEmail('[email protected]') | ||
->withFirstName('FirstName') | ||
->withLastName('LastName') | ||
->withPhoneNumber('40123456789'); | ||
|
||
/** | ||
* Create new Card with params: | ||
* | ||
* Credit Card Number | ||
* Credit Card Expiration Month | ||
* Credit Card Expiration Year | ||
* Credit Card CVV (Security Code) | ||
* Credit Card Owner | ||
*/ | ||
$card = new Card('4111111111111111', '12', 2016, 123, 'Card Owner Name'); | ||
|
||
/** | ||
* tokenize card for further token payments | ||
*/ | ||
$card->enableTokenCreation(); | ||
|
||
/** | ||
* Create new Request with params: | ||
* | ||
* Config object | ||
* Order object | ||
* Billing object | ||
* Delivery (or Billing object again, if you want to have the delivery address the same as the billing address) | ||
* User object | ||
*/ | ||
$request = new Request($cfg, $order, $billing, $delivery, $user); | ||
|
||
/** | ||
* Add the Credit Card to the Request | ||
*/ | ||
$request->setCard($card); | ||
|
||
/** | ||
* Create new API Client, passing the Config object as parameter | ||
*/ | ||
$client = new Client($cfg); | ||
|
||
/** | ||
* Will throw different Exceptions on errors | ||
*/ | ||
try { | ||
/** | ||
* Sends the Request to ALU and returns a Response | ||
* | ||
* See documentation for Response params | ||
*/ | ||
$response = $client->pay($request); | ||
|
||
/** | ||
* In case of 3DS enrolled cards, PayU will return the URL_3DS that contains a unique url for each | ||
* transaction. The merchant must redirect the browser to this url to allow user to authenticate. | ||
* After the authentication process ends the user will be redirected to BACK_REF url | ||
* with payment result in a HTTP POST request | ||
*/ | ||
if ($response->isThreeDs()) { | ||
header("Location:" . $response->getThreeDsUrl()); | ||
die(); | ||
} | ||
|
||
echo $response->getStatus(). ' ' . $response->getReturnCode() . ' ' . $response->getReturnMessage(); | ||
|
||
} catch (ConnectionException $exception) { | ||
echo $exception->getMessage(); | ||
} catch (ClientException $exception) { | ||
echo $exception->getErrorMessage(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
f17d54f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great, You did a backwards-incompatible change 👎
I recommend reading and using http://semver.org/ or at least mark unused methods as
@deprecated
and remove them only in next major version ... not in minorsIf You put Your project into packagist at least follow what is written here:
https://getcomposer.org/doc/articles/versions.md#versions
f17d54f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @prgTW,
Indeed, it was a mistake. Thank you for pointing it out. I fixed it in version 1.1.1, re-adding the methods
We will keep it in the next planned release 1.2.0.
If you look closely the values
luEnabledToken
andluTokenType
could only be set and was never used in the creation the the request. They are related to a functionality that was only started and wasn't finished but was by mistake included in the 1.0.0 release.Considering this we though it would be wise to clean it up.
But methods being in the public API, it will be used so better clear them up.
For now, we will keep the wrong/dummy implementation as it is and think about releasing a fixed implementation. However we need to consider not breaking merchant integrations that might rely on nothing happening when using the methods.
In order to use the token creation functionality, please see
Card::enableTokenCreation()
method.Thanks again and sorry for delay. As it was my commit, I think my colleagues didn't received any email notifications.