-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #5 from tangoslee/feature/TEN-1162
Add draft SDK for v2
- Loading branch information
Showing
20 changed files
with
1,404 additions
and
113 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
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,185 @@ | ||
# TendoPay SDK for PHP | ||
|
||
## Requirements | ||
|
||
PHP 7.0 and later. | ||
|
||
## Installation | ||
|
||
### Using Composer | ||
|
||
You can install the sdk via [Composer](http://getcomposer.org/). Run the following command: | ||
|
||
```bash | ||
composer require tendopay/tendopay-sdk-php | ||
``` | ||
|
||
## Run SDK Tester | ||
|
||
- Run a sample server | ||
```bash | ||
php -s localhost:8000 -t vendor/tendopay/tendopay-sdk-php/samples | ||
``` | ||
|
||
- Open browser and goto | ||
```bash | ||
http://localhost:8000/ | ||
``` | ||
|
||
## Code Examples | ||
|
||
### Create TendoPayClient | ||
|
||
- Using .env | ||
> MERCHANT_ID,MERCHANT_SECRET for test can get them at [TendoPay Sandbox](https://sandbox.tendopay.ph) | ||
```bash | ||
## Merchant Credentials | ||
MERCHANT_ID= | ||
MERCHANT_SECRET= | ||
|
||
## Client Credentials | ||
CLIENT_ID= | ||
CLIENT_SECRET= | ||
|
||
## Enable Sandbox, it must be false in production | ||
TENDOPAY_SANDBOX_ENABLED=false | ||
|
||
## Redirect URI when the transaction succeed | ||
REDIRECT_URL=https://localhost:8000/purhase.php | ||
|
||
## Redirect URI when the transaction fails | ||
ERROR_REDIRECT_URL=https://localhost:8000/purchase.php | ||
``` | ||
|
||
```php | ||
use TendoPay\SDK\TendoPayClient; | ||
|
||
$client = new TendoPayClient(); | ||
``` | ||
|
||
- Using $config variable | ||
|
||
```php | ||
use TendoPay\SDK\TendoPayClient; | ||
|
||
$config = [ | ||
'MERCHANT_ID' => '', | ||
'MERCHANT_SECRET' => '', | ||
'CLIENT_ID' => '', | ||
'CLIENT_SECRET' => '', | ||
'REDIRECT_URL' => '', | ||
'ERROR_REDIRECT_URL' => '', | ||
'TENDOPAY_SANDBOX_ENABLED' => false, | ||
]; | ||
$client = new TendoPayClient($config); | ||
``` | ||
|
||
|
||
### Make Payment | ||
|
||
```php | ||
use TendoPay\SDK\Exception\TendoPayConnectionException; | ||
use TendoPay\SDK\Models\Payment; | ||
use TendoPay\SDK\TendoPayClient; | ||
|
||
### S:Merchant set proper values | ||
$merchant_order_id = $_POST['tp_merchant_order_id']; | ||
$request_order_amount = $_POST['tp_amount']; | ||
$request_order_title = $_POST['tp_description']; | ||
$_SESSION['merchant_order_id'] = $merchant_order_id; | ||
### E:Merchant set proper values | ||
|
||
$client = new TendoPayClient(); | ||
|
||
try { | ||
$payment = new Payment(); | ||
$payment->setMerchantOrderId($merchant_order_id) | ||
->setDescription($request_order_title) | ||
->setRequestAmount($request_order_amount); | ||
|
||
$client->setPayment($payment); | ||
|
||
$redirectURL = $client->getAuthorizeLink(); | ||
header('Location: '.$redirectURL); | ||
} catch (TendoPayConnectionException $e) { | ||
echo 'Connection Error:'.$e->getMessage(); | ||
} catch (Exception $e) { | ||
echo 'Runtime Error:'.$e->getMessage(); | ||
} | ||
``` | ||
|
||
### Callback (redirected page) | ||
|
||
```php | ||
use TendoPay\SDK\Exception\TendoPayConnectionException; | ||
use TendoPay\SDK\Models\VerifyTransactionRequest; | ||
use TendoPay\SDK\TendoPayClient; | ||
|
||
$client = new TendoPayClient(); | ||
|
||
try { | ||
if (TendoPayClient::isCallBackRequest($_REQUEST)) { | ||
$merchant_order_id = $_SESSION['merchant_order_id'] ?? null; | ||
$transaction = $client->verifyTransaction($merchant_order_id, new VerifyTransactionRequest($_REQUEST)); | ||
|
||
if (!$transaction->isVerified()) { | ||
throw new UnexpectedValueException('Invalid signature for the verification'); | ||
} | ||
|
||
// Save $transactionNumber here | ||
// Proceed merchant post order process | ||
} | ||
} catch (TendoPayConnectionException $e) { | ||
echo 'Connection Error:'.$e->getMessage(); | ||
} catch (Exception $e) { | ||
echo 'Runtime Error:'.$e->getMessage(); | ||
} | ||
``` | ||
|
||
### Cancel Payment | ||
|
||
```php | ||
use TendoPay\SDK\Exception\TendoPayConnectionException; | ||
use TendoPay\SDK\TendoPayClient; | ||
|
||
$client = new TendoPayClient(); | ||
|
||
try { | ||
$client->cancelPayment($transactionNumber); | ||
// merchant process here | ||
|
||
} catch (TendoPayConnectionException $e) { | ||
echo 'Connection Error:'.$e->getMessage(); | ||
} catch (Exception $e) { | ||
echo 'Runtime Error:'.$e->getMessage(); | ||
} | ||
``` | ||
|
||
|
||
### Show Transaction Detail | ||
|
||
```php | ||
use TendoPay\SDK\Exception\TendoPayConnectionException; | ||
use TendoPay\SDK\TendoPayClient; | ||
|
||
$client = new TendoPayClient(); | ||
|
||
try { | ||
|
||
$transaction = $client->getTransactionDetail($transactionNumber); | ||
|
||
// merchant process here | ||
// $transaction->getMerchantId(); | ||
// $transaction->getMerchantOrderId(); | ||
// $transaction->getAmount(); | ||
// $transaction->getTransactionNumber(); | ||
// $transaction->getCreatedAt(); | ||
// $transaction->getStatus(); | ||
|
||
} catch (TendoPayConnectionException $e) { | ||
echo 'Connection Error:'.$e->getMessage(); | ||
} catch (Exception $e) { | ||
echo 'Runtime Error:'.$e->getMessage(); | ||
} | ||
``` |
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,31 @@ | ||
# Upgrade Guide | ||
|
||
## # Upgrading to v2 from 0.8.x | ||
|
||
### Changes | ||
|
||
##### New Client ID/ Client Secret | ||
Merchant should create a new Client App(REST V2) in the Merchant Dashboard to use SDK 2.x | ||
Existing credentils is not compatible with SDK 2.x | ||
|
||
##### MERCHANT_ID/MERCHANT_SECRET | ||
MERCHANT_ID/MERCHANT_SECRET has been removed | ||
|
||
##### ERROR_REDIRECT_URL | ||
ERROR_REDIRECT_URL has been removed. | ||
All successful or unsuccessful response will be redirected to REDIRECT_URL | ||
|
||
##### Backend Notification | ||
When a merchant creates an app (REST V2), | ||
if 'NOTIFICATION_URL' is set, TendoPay notifies some changes of transactions to the notification callback URL. | ||
This callback is asynchronous back-end API request. | ||
'PAID', 'FAILED', 'CANCELLED' events of transactions are triggered. | ||
##### Change the namespace of TendoPayClient | ||
```php | ||
# TendoPayClient for v1 | ||
use TendoPay\SDK\TendoPayClient; | ||
|
||
# TendoPayClient for v2 | ||
use TendoPay\SDK\V2\TendoPayClient; | ||
```` |
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
Oops, something went wrong.