PHP code example of dotlines-io / ghoori-subscription

1. Go to this page and download the library: Download dotlines-io/ghoori-subscription 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/ */

    

dotlines-io / ghoori-subscription example snippets


/**
 * ******************************************************
 * ******************* Token Fetching *******************
 * *********** Contact Ghoori For Credentials ***********
 * ******************************************************
 */
$tokenUrl = 'https://<SERVER_URL>/oauth/token';
$username = '';
$password = '';
$clientID = '';
$clientSecret = '';

$accessTokenRequest = \Dotlines\Ghoori\AccessTokenRequest::getInstance($tokenUrl, $username, $password, $clientID, $clientSecret);
$tokenResponse = $accessTokenRequest->send();
echo json_encode($tokenResponse) . '<br/>';

/**
 * Access Token Request Response looks like below:
 * {
 *  "token_type": "Bearer",
 *  "expires_in": 3600,
 *  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdW.....",
 *  "refresh_token": "def50200284b2371cad76b4d2a4e24746c44fd6a322....."
 * }
 */

/**
 * Access Token can be cached and reused for 1 hour
 * Before the end of accessToken lifetime every hour
 * you can use the refresh token to fetch new accessToken & refreshToken
 */
$accessToken = $tokenResponse['access_token'];
$refreshToken = $tokenResponse['refresh_token'];

/**
 * ******************************************************
 * ******************* Charge Request *******************
 * ******************************************************
 */
$subscriptionUrl = 'https://<SERVER_URL>/api/v1.0/subscribe';
$requestID = ''; //must be unique for each request
$package = ''; //must be pre-registered with Ghoori
$cycle = ''; //possible values: DAILY, WEEKLY, FIFTEEN_DAYS, MONTHLY, THIRTY_DAYS, NINETY_DAYS, ONE_EIGHTY_DAYS
$start = ''; //Format: 2020-04-15
$end = ''; //Format: 2020-04-15
$userReturnUrl = ''; //after payment, user will be redirected back to this URL
$mobile = ''; //optional
$email = ''; //optional
$reference = ''; //optional
$subscriptionRequest = \Dotlines\GhooriSubscription\Request::getInstance($subscriptionUrl, $accessToken, $clientID, $requestID, $package, $cycle, $start, $end, $userReturnUrl, $mobile, $email, $reference);
echo json_encode($subscriptionRequest->send()) . '<br/>';

/**
 * Subscription Request Response looks like below.
 * You must redirect the user to the "url" for payment.
 * {
 *  "url": "https://gateway.sbsubscription.pay.bka.sh/gateway/web/intent/R2G2TXVM",
 *  "invoiceID": "QT5899212E8380",
 *  "errorCode": "00",
 *  "errorMessage": "Operation Success"
 * }
 * Fail response only contains errorCode & errorMessage
 */

/**
 * ******************************************************
 * ******** Subscription Request Status Request *********
 * ******************************************************
 */
$requestStatusRequestUrl = 'https://<SERVER_URL>/api/v1.0/subscribe/<invoiceID>/status'; //replace SERVER_URL & invoiceID with value
$requestStatusRequest = \Dotlines\GhooriSubscription\RequestStatusRequest::getInstance($requestStatusRequestUrl, $accessToken);
echo json_encode($requestStatusRequest->send()) . '<br/>';

/**
 * Subscription Request Status Request Response looks like below:
 * {
 *  "invoiceID": "QT5899212E8380",
 *  "status": "SUCCEEDED",
 *  "subscriptionID": "414",
 *  "createdAt": "15-05-2021 04:10:21 PM",
 *  "errorCode": "00",
 *  "errorMessage": "Operation Successful"
 * }
 * Fail response only contains errorCode & errorMessage
 */
 
/**
 * ******************************************************
 * ************ Subscription Details Request ************
 * ******************************************************
 */
$detailsRequestUrl = 'https://<SERVER_URL>/api/v1.0/subscription/<subscriptionID>'; //replace SERVER_URL & subscriptionID with value
$detailsRequest = \Dotlines\GhooriSubscription\DetailsRequest::getInstance($detailsRequestUrl, $accessToken);
echo json_encode($detailsRequest->send()) . '<br/>';

/**
 * Subscription Details Request Response looks like below:
 * {
 *  "id": 414,
 *  "invoiceID": "QT5899212E8380",
 *  "amount": "25.00",
 *  "cycle": "WEEKLY",
 *  "enabled": "true",
 *  "createdDate": "2021-05-15",
 *  "startDate": "2021-06-22",
 *  "endDate": "2022-06-29",
 *  "requestID": "1272",
 *  "errorCode": "00",
 *  "errorMessage": "Operation Successful",
 * }
 * Fail response only contains errorCode & errorMessage
 */
 
/**
 * ******************************************************
 * ************ Subscription Cancel Request ************
 * ******************************************************
 */
$cancelRequestUrl = 'https://<SERVER_URL>/api/v1.0/subscription/<subscriptionID>/cancel'; //replace SERVER_URL & subscriptionID with value
$cancelRequest = \Dotlines\GhooriSubscription\CancelRequest::getInstance($cancelRequestUrl, $accessToken);
echo json_encode($cancelRequest->send()) . '<br/>';

/**
 * Subscription Details Cancel Response looks like below:
 * {
 *  "id": 11,
 *  "subscriptionID": 19,
 *  "requestID": 11,
 *  "status": "PROCESSING",
 *  "errorCode": "00",
 *  "errorMessage": "Operation Successful"
 * }
 * Fail response only contains errorCode & errorMessage
 */
 
/**
 * ******************************************************
 * ******** Subscription Cancel Details Request *********
 * ******************************************************
 */
$cancelDetailsRequestUrl = 'https://<SERVER_URL>/api/v1.0/subscription/cancel/<id>'; //replace SERVER_URL & id (cancel request id) with value
$cancelDetailsRequest = \Dotlines\GhooriSubscription\CancelDetailsRequest::getInstance($cancelDetailsRequestUrl, $accessToken);
echo json_encode($cancelDetailsRequest->send()) . '<br/>';

/**
 * Subscription Cancel Details Request Response looks like below:
 * {
 *  "id": 11,
 *  "subscriptionID": 19,
 *  "requestID": 11,
 *  "status": "PROCESSING",
 *  "errorCode": "00",
 *  "errorMessage": "Operation Successful"
 * }
 * Fail response only contains errorCode & errorMessage
 */
 
/**
 * ******************************************************
 * ********* Subscription Payment List Request **********
 * ******************************************************
 */
$paymentListRequestUrl = 'https://<SERVER_URL>/api/v1.0/subscription/<subscriptionID>/payments'; //replace SERVER_URL & id (cancel request id) with value
$paymentListRequest = \Dotlines\GhooriSubscription\PaymentListRequest::getInstance($paymentListRequestUrl, $accessToken);
echo json_encode($paymentListRequest->send()) . '<br/>';

/**
 * Subscription Payment List Request Response looks like below:
 * {
 *  "subscriptionPayments": [
 *      {
 *          "paymentId": 17,
 *          "cycle": "DAILY",
 *          "dueDate": "2020-03-30",
 *          "reverseTransactionAmount": "0.00",
 *          "reverseTransactionDate": "",
 *          "reverseTransactionId": "",
 *          "status": "SUCCEEDED_PAYMENT",
 *          "subscriptionId": "22",
 *          "transactionDate": "2020-03-30T13:24:13.720768Z",
 *          "transactionId": "7CU901YXQP"
 *      },
 *      {
 *          "paymentId": 20,
 *          "cycle": "DAILY",
 *          "dueDate": "2020-03-31",
 *          "reverseTransactionAmount": "0.00",
 *          "reverseTransactionDate": "",
 *          "reverseTransactionId": "",
 *          "status": "SUCCEEDED_PAYMENT",
 *          "subscriptionId": "22",
 *          "transactionDate": "2020-03-31T06:00:52.885636Z",
 *          "transactionId": "7CV301YYUT"
 *      }
 *  ],
 *  "errorCode": "00",
 *  "errorMessage": "Operation Successful"
 * }
 * Fail response only contains errorCode & errorMessage
 */
 
/**
 * ******************************************************
 * ******** Subscription Payment Details Request ********
 * ******************************************************
 */
$paymentDetailsRequestUrl = 'https://<SERVER_URL>/api/v1.0/subscription/payment/<id>'; //replace SERVER_URL & id (paymentId) with value
$paymentDetailsRequest = \Dotlines\GhooriSubscription\PaymentDetailsRequest::getInstance($paymentDetailsRequestUrl, $accessToken);
echo json_encode($paymentDetailsRequest->send()) . '<br/>';

/**
 * Subscription Payment Details Request Response looks like below:
 * {
 *  "paymentId": 18,
 *  "cycle": "WEEKLY",
 *  "dueDate": "2020-03-30",
 *  "reverseTransactionAmount": "0.00",
 *  "reverseTransactionDate": "",
 *  "reverseTransactionId": "",
 *  "status": "SUCCEEDED_PAYMENT",
 *  "subscriptionId": "23",
 *  "transactionDate": "2020-03-30T13:29:04.741416Z",
 *  "transactionId": "7CU901YXQZ",
 *  "errorCode": "00",
 *  "errorMessage": "Operation Successful"
 * }
 * Fail response only contains errorCode & errorMessage
 */
 
/**
 * ******************************************************
 * ******** Subscription Payment Refund Request ********
 * ******************************************************
 */
$paymentRefundRequestUrl = 'https://<SERVER_URL>/api/v1.0/subscription/payment/<id>/refund'; //replace SERVER_URL & id (paymentId) with value
$refund_amount = 20;
$paymentRefundRequest = \Dotlines\GhooriSubscription\PaymentRefundRequest::getInstance($paymentRefundRequestUrl, $accessToken, $refund_amount);
echo json_encode($paymentRefundRequest->send()) . '<br/>';

/**
 * Subscription Payment Refund Request Response looks like below:
 * {
 *  "requestID": 4,
 *  "amount": "2",
 *  "status": "SUCCEEDED",
 *  "errorCode": "00",
 *  "errorMessage": "Operation Successful"
 * }
 * Fail response only contains errorCode & errorMessage
 */
 
/**
 * ******************************************************
 * **** Subscription Payment Refund Details Request *****
 * ******************************************************
 */
$paymentRefundDetailsRequestUrl = 'https://<SERVER_URL>/api/v1.0/subscription/refund/<id>'; //replace SERVER_URL & id (refund requestID) with value
$paymentRefundDetailsRequest = \Dotlines\GhooriSubscription\PaymentRefundDetailsRequest::getInstance($paymentRefundDetailsRequestUrl, $accessToken);
echo json_encode($paymentRefundDetailsRequest->send()) . '<br/>';

/**
 * Subscription Payment Refund Details Request Response looks like below:
 * {
 *  "requestID": 4,
 *  "amount": "2",
 *  "status": "SUCCEEDED",
 *  "errorCode": "00",
 *  "errorMessage": "Operation Successful"
 * }
 * Fail response only contains errorCode & errorMessage
 */

/**
 * ******************************************************
 * ******************* Refresh Token *******************
 * ******************************************************
 */
$refreshTokenRequest = \Dotlines\Ghoori\RefreshTokenRequest::getInstance($tokenUrl, $accessToken, $clientID, $clientSecret, $refreshToken);
$tokenResponse = $refreshTokenRequest->send();
echo json_encode($tokenResponse) . '<br/>';

/**
 * Refresh Token Request Response looks like below:
 * {
 *  "token_type": "Bearer",
 *  "expires_in": 3600,
 *  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdW.....",
 *  "refresh_token": "def50200284b2371cad76b4d2a4e24746c44fd6a322....."
 * }
 */