search
Your Paytm for business app is working and will keep working beyond March 15th, 2024. Click to know more

PHP SDK Integration

Installation Guide

Requirements
 

PHP 5.6.0 or later

 

 

Installing Paytm's payment gateway SDK with composer

  1. To install PHP SDK available on packagist.org, run the command below.
    composer require paytm/paytm-pg


    OR
     

    Add the following lines to composer.json of your project.

    "require": {
            ...
            "paytm/paytm-pg": "*"
            ...
    }
  2. To enable autoloading, add the following lines to composer.json of your project.
    "autoload": {
        "psr-4": {
        "paytmpg\\": "vendor/paytm/paytm-pg"
        }
    } 

    Note:You might have to change the path of paytm-pg depending on your project's folder structure.

  3. Run the command below on the command line to install dependencies to your project.
    composer install
  4. Run the command below on the command line to autoload files in your project.
    composer dumpautoload -o
  5. To start using SDK functions, add the following lines in your project.
    require_once('vendor/autoload.php');
        define('PROJECT','path/to/paytm-pg');

    Note:You might have to change the path of autoload.php depending on your project's folder structure.

Generate API Keys

ATTRIBUTE DESCRIPTION
MID A unique merchant identifier issued by Paytm for your account.
Merchant Key A 16-digit unique merchant identifier issued by Paytm for your account.

Note: Merchant Key is a secret key used for encryption and it should never be shared with anyone. And, you must generate separate API Keys for test and production environment.

 

Steps to generate API keys

  1. Log into your Dashboard.
  2. Select the environment (Test/Production) for which you want to generate the API key.
  3. For Test mode, click the Generate Key to generate key under Test API details tab.
  4. For Production mode, activate your account here to generate Production API details.

SDK code

Initialization

 

Merchant will initialize the mandatory parameters i.e. environment, mid, key, and website, after which merchant can directly call SDK methods to call APIs of payment gateway.

// For Staging 
$environment = LibraryConstants::STAGING_ENVIRONMENT;

// For Production 
// $environment = LibraryConstants::PRODUCTION_ENVIRONMENT;
 
// Find your mid, key, website in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys 
$mid = "YOUR_MID_HERE";
$key = "YOUR_KEY_HERE";
$website = "YOUR_WEBSITE_NAME";
$client_id = "YOUR_CLIENT_ID_HERE";

$callbackUrl = "MERCHANT_CALLBACK_URL";
MerchantProperties::setCallbackUrl($callbackUrl);

MerchantProperties::initialize($environment, $mid, $key, $client_id, $website);
// If you want to add log file to your project, use below code
Config::$monologName = '[PAYTM]';
Config::$monologLevel = MonologLogger::INFO;
Config::$monologLogfile = '/path/log/file.log';

Note: Make sure the log file (/path/log/file.log) has write permission.

 

Payments


Create Transaction Token

$channelId = EChannelId::WEB;
$orderId = "UNIQUE_ORDER_ID";
$txnAmount = Money::constructWithCurrencyAndValue(EnumCurrency::INR, "1.00");
$userInfo = new UserInfo("CUSTOMER_ID"); 
$userInfo->setAddress("CUSTOMER_ADDRESS");
$userInfo->setEmail("CUSTOMER_EMAIL_ID");
$userInfo->setFirstName("CUSTOMER_FIRST_NAME");
$userInfo->setLastName("CUSTOMER_LAST_NAME");
$userInfo->setMobile("CUSTOMER_MOBILE_NO");
$userInfo->setPincode("CUSTOMER_PINCODE");
$paymentDetailBuilder = new PaymentDetailBuilder($channelId, $orderId, $txnAmount, $userInfo);
$paymentDetail = $paymentDetailBuilder->build();
$response = Payment::createTxnToken($paymentDetail);

 

GetPaymentStatus

$orderId = "YOUR_ORDER_ID";
$readTimeout = 80000;
$paymentStatusDetailBuilder = new PaymentStatusDetailBuilder($orderId);
$paymentStatusDetail = $paymentStatusDetailBuilder->setReadTimeout($readTimeout)->build();
$response = Payment::getPaymentStatus($paymentStatusDetail);

 

Refunds

InitiateRefund

$orderId = "YOUR_ORDER_ID";
$refId = "REFERENCE_ID";
$txnId = "TRANSACTION_ID";
$txnType = "REFUND";
$refundAmount = "1";
$readTimeout = 80000;
$subWalletAmount = array();
$subWalletAmount[UserSubWalletType::FOOD] = 1.00;
$subWalletAmount[UserSubWalletType::GIFT] = 1.00;
$refund = new RefundDetailBuilder($orderId, 
        $refId, $txnId, $txnType, $refundAmount);
$refundDetail = $refund->setReadTimeout($readTimeout)
->setSubwalletAmount($subWalletAmount)
->build();
$response = Refund::initiateRefund($refundDetail);

 

GetRefundStatus

$orderId = "YOUR_ORDER_ID";
$refId = "REFERENCE_ID";
$readTimeout = 8000;
$refundStatusDetailBuilder = new RefundStatusDetailBuilder($orderId, $refId);
$refundStatusDetail = $refundStatusDetailBuilder->setReadTimeout($readTimeout)->build();
$response = Refund::getRefundStatus($refundStatusDetail);

 

SDK Method References

Class Methods HTTP request Description

Payments

createTxnToken POST/theia/api/v1/initiateTransaction Returns a token which will be used further in frontend payment calls
getPaymentStatus POST/merchant-status/api/v1/getPaymentStatus Returns the payment status

Refunds

initiateRefund POST/refund/api/v1/async/refund Initiates the refund
getRefundStatus POST/refund/api/v1/refundStatus Returns the refund status

Downloads

Models