Viewing file: PaytmPayment.php (5.07 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Modules\PaymentGateway\PaymentGatewayProvider;
use App\Models\BillingRequest; use App\Models\Plan; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; use Modules\PaymentGateway\Services\PaymentCredentials; use paytm\paytmchecksum\PaytmChecksum;
class PaytmPayment implements PaymentInterface { public $planReq; public $redirect_url; public $error_message; public $return_view; public $will_redirect= false;
public function __construct() {
}
public function pay() { // TODO: Implement pay() method. } public function getCredentials() { $credentials= PaymentCredentials::get(); if (!$credentials->paytm_environment || !$credentials->paytm_mid || !$credentials->paytm_secret_key || !$credentials->paytm_website || !$credentials->paytm_txn_url) { throw new \Exception('Credentials not found. Please contact with the administrator'); } return $credentials; }
public function request($request) { $this->request = $request; return $this; }
public function plan($plan){ $this->plan = $plan; return $this; }
public function plan_request($planReq){ $this->planReq = $planReq; return $this; }
public function will_redirect() { // TODO: Implement will_redirect() method. return $this->will_redirect; }
public function redirect_url() { // TODO: Implement redirect_url() method. return $this->redirect_url; } public function return_view() { // TODO: Implement redirect_url() method. return $this->return_view; } public function error_message() { // TODO: Implement error_message() method. return $this->error_message; }
public function process() { try { $credentials = $this->getCredentials(); $paytmData = $this->payTmPayment($this->plan, $this->request, $this->planReq, $credentials); $this->return_view = view('paymentgateway::paytm', $paytmData); // return view('paymentgateway::paytm', $paytmData); } catch (\Exception $ex) { Log::error($ex); return redirect()->route('customer.billing.index')->withErrors(['msg' => trans('Invalid Payment')]); } }
function payTmPayment($plan, $req, $planReq, $credentials) { $recurring_type = 'week'; $expired = now()->addWeek();
$paytmParams = array();
$orderId = "PLANORDERID_" . $planReq->id; $mid = $credentials->paytm_mid; $paytmParams["body"] = array( "requestType" => "Payment", "mid" => $mid, "websiteName" => $credentials->paytm_website, "orderId" => $orderId, "callbackUrl" => route('paymentgateway::payment.paytm.redirect'), "subscriptionAmountType" => "FIX", "subscriptionFrequency" => "2", "subscriptionFrequencyUnit" => strtoupper($recurring_type), "subscriptionExpiryDate" => $expired, "subscriptionEnableRetry" => "1", "txnAmount" => array( "value" => $plan->price, "currency" => "INR", ), "userInfo" => array( "custId" => "CUST_" . $planReq->customer_id, ), );
/* * Generate checksum by parameters we have in body * Find your Merchant Key in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys */ $checksum = PaytmChecksum::generateSignature(json_encode($paytmParams["body"], JSON_UNESCAPED_SLASHES), $credentials->paytm_secret_key);
$paytmParams["head"] = array( "signature" => $checksum ); $post_data = json_encode($paytmParams, JSON_UNESCAPED_SLASHES);
if ($credentials->paytm_environment == 'staging') { /* for Staging */ $url = "https://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid=" . $mid . "&orderId=" . $orderId;
}
if ($credentials->paytm_environment == 'production') { /* for Production */ $url = "https://securegw.paytm.in/theia/api/v1/initiateTransaction?mid=" . $mid . "&orderId=" . $orderId;
}
$ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); $response = curl_exec($ch);
$paytmBody = $paytmParams["body"]; $paytmUserInfo = $paytmBody['userInfo'];
$response = json_decode($response); if (!isset($response->body) || !isset($response->body->resultInfo) || $response->body->resultInfo->resultStatus != 'S') { throw new \Exception(trans('Invalid Payment')); }
$data['environment'] = $credentials->paytm_environment; $data['response'] = $response; $data['mid'] = $mid; $data['order_id'] = $orderId; return $data;
}
}
|