Developer ZoneRecipesAPI ReferenceChangelog
Developer Zone
These docs are for v3.2.6. Click to read the latest docs for v4.3.0.

Card tokenization

'Card Tokenization' Securely save your customers' credit card information in 2C2P PGW Vault.

👍

Download Sample Code

PHP Code

📘

Environment

Please refer Demo & Live Endpoint.

Set account credentials

<?php 
	//Merchant's account information
	$merchant_id = "JT01";		//Get MerchantID when opening account with 2C2P
	$secret_key = "7jYcp4FxFdf0";	//Get SecretKey from 2C2P PGW Dashboard

Set transaction information

//Transaction information
	$payment_description  = '2 days 1 night hotel room';
	$order_id  = time();
	$currency = "702";
	$amount  = '000000002500';

Enable Tokenization

Set payment option

🚧

'enable_store_Card' parameter must be included in hash compute value

//Payment Options
  $enable_store_card = "Y";	//Enable / Disable Tokenization

Set payment request information

//Request information
	$version = "8.5";	
	$payment_url = "https://demo2.2c2p.com/2C2PFrontEnd/RedirectV3/payment";
	$result_url_1 = "http://localhost/devPortal/V3_UI_PHP_JT01_devPortal/result.php";

	//Construct signature string
	$params = $version . $merchant_id . $payment_description . $order_id . $invoice_no . 
	$currency . $amount . $customer_email . $pay_category_id . $promotion . $user_defined_1 . 
	$user_defined_2 . $user_defined_3 . $user_defined_4 . $user_defined_5 . $result_url_1 . 
	$result_url_2 . $enable_store_card . $stored_card_unique_id . $request_3ds . $recurring . 
	$order_prefix . $recurring_amount . $allow_accumulate . $max_accumulate_amount . 
	$recurring_interval . $recurring_count . $charge_next_date. $charge_on_date . $payment_option . 
	$ipp_interest_type . $payment_expiry . $default_lang . $statement_descriptor . $use_storedcard_only .
	$tokenize_without_authorization . $product . $ipp_period_filter . $sub_merchant_list . $qr_type .
	$custom_route_id . $airline_transaction . $airline_passenger_list . $address_list;

	$hash_value = hash_hmac('sha256',$params, $secret_key,false);	//Compute hash value

Construct payment request form

echo 'Payment information:';
	echo '<html> 
	<body>
	<form id="myform" method="post" action="'.$payment_url.'">
		<input type="hidden" name="version" value="'.$version.'"/>
		<input type="hidden" name="merchant_id" value="'.$merchant_id.'"/>
		<input type="hidden" name="currency" value="'.$currency.'"/>
		<input type="hidden" name="result_url_1" value="'.$result_url_1.'"/>
		<input type="hidden" name="enable_store_card" value="'.$enable_store_card.'"/>
		<input type="hidden" name="request_3ds" value="'.$request_3ds.'"/>
		<input type="hidden" name="payment_option" value="'.$payment_option.'"/>
		<input type="hidden" name="hash_value" value="'.$hash_value.'"/>
		PRODUCT INFO : <input type="text" name="payment_description" value="'.$payment_description.'"  readonly/><br/>
		ORDER NO : <input type="text" name="order_id" value="'.$order_id.'"  readonly/><br/>
		AMOUNT: <input type="text" name="amount" value="'.$amount.'" readonly/><br/>
		<input type="submit" name="submit" value="Confirm" />
	</form>

Submit payment request form

<script type="text/javascript">
		document.forms.myform.submit();
	</script>
	</body>
	</html>';	 
?>

Complete Code
Copy & Paste below code to 'demo' file, and put this file in your Web Server.

<?php //Merchant's account information
	$merchant_id = "JT01";		//Get MerchantID when opening account with 2C2P
	$secret_key = "7jYcp4FxFdf0";	//Get SecretKey from 2C2P PGW Dashboard

	//Transaction information
	$payment_description  = '2 days 1 night hotel room';
	$order_id  = time();
	$currency = "702";
	$amount  = '000000002500';

  //Payment Options
  $enable_store_card = "Y";	//Enable / Disable Tokenization

	//Request information
	$version = "8.5";	
	$payment_url = "https://demo2.2c2p.com/2C2PFrontEnd/RedirectV3/payment";
	$result_url_1 = "http://localhost/devPortal/V3_UI_PHP_JT01_devPortal/result.php";

	//Construct signature string
	$params = $version . $merchant_id . $payment_description . $order_id . $invoice_no . 
	$currency . $amount . $customer_email . $pay_category_id . $promotion . $user_defined_1 . 
	$user_defined_2 . $user_defined_3 . $user_defined_4 . $user_defined_5 . $result_url_1 . 
	$result_url_2 . $enable_store_card . $stored_card_unique_id . $request_3ds . $recurring . 
	$order_prefix . $recurring_amount . $allow_accumulate . $max_accumulate_amount . 
	$recurring_interval . $recurring_count . $charge_next_date. $charge_on_date . $payment_option . 
	$ipp_interest_type . $payment_expiry . $default_lang . $statement_descriptor . $use_storedcard_only .
	$tokenize_without_authorization . $product . $ipp_period_filter . $sub_merchant_list . $qr_type .
	$custom_route_id . $airline_transaction . $airline_passenger_list . $address_list;
	
	$hash_value = hash_hmac('sha256',$params, $secret_key,false);	//Compute hash value

	echo 'Payment information:';
	echo '<html> 
	<body>
	<form id="myform" method="post" action="'.$payment_url.'">
		<input type="hidden" name="version" value="'.$version.'"/>
		<input type="hidden" name="merchant_id" value="'.$merchant_id.'"/>
		<input type="hidden" name="currency" value="'.$currency.'"/>
		<input type="hidden" name="result_url_1" value="'.$result_url_1.'"/>
		<input type="hidden" name="enable_store_card" value="'.$enable_store_card.'"/>
		<input type="hidden" name="request_3ds" value="'.$request_3ds.'"/>
		<input type="hidden" name="payment_option" value="'.$payment_option.'"/>
		<input type="hidden" name="hash_value" value="'.$hash_value.'"/>
		PRODUCT INFO : <input type="text" name="payment_description" value="'.$payment_description.'"  readonly/><br/>
		ORDER NO : <input type="text" name="order_id" value="'.$order_id.'"  readonly/><br/>
		AMOUNT: <input type="text" name="amount" value="'.$amount.'" readonly/><br/>
		<input type="submit" name="submit" value="Confirm" />
	</form>  

	<script type="text/javascript">
		document.forms.myform.submit();
	</script>
	</body>
	</html>';	 
?>

Next: Enable / Disable 3DS