====== PHP XML Subscriptions ======
The sample code below requires the **{{:developer:sample_codes:gateway_xml_php_api.zip|PHP XML API}}**.\\
**Settings file (%gatewaySampleFileName_account.inc):**
----
\\
**Subscription registration:**
SetNewStoredSubscriptionValues($name, $description, $periodType, $length, $currency, $recurringAmount, $initialAmount, $type, $onUpdate, $onDelete);
	else if($recurringAmount != "" || $initialAmount != "") $subreg->SetSubscriptionAmounts($recurringAmount, $initialAmount);
	if($endDate != "") $subreg->SetEndDate($endDate);
	if($eDCCDecision != "") $subreg->EDCCDecision($eDCCDecision);
 
$response = $subreg->ProcessRequestToGateway($secret,$testMode,$gateway);
 
if($response->IsError())echo 'AN ERROR OCCURED, Subscription not created. Error details: ' . $response->ErrorString();
else {
	$expectedResponseHash = md5($terminalId.$response->MerchantReference().$response->DateTime().$secret);
	$merchantReference =$response->MerchantReference();
	if($expectedResponseHash != $response->Hash()) {
		echo 'SUBSCRIPTION REGISTRATION FAILED: INVALID RESPONSE HASH. Please contact ' . $adminEmail . ' or call ' . $adminPhone . ' to clarify if your card will be billed.';
		if(isset($merchantReference))echo 'Please quote %Gateway Terminal ID: ' . $terminalId . ', and Subscription Merchant Reference: ' . $response->MerchantReference() . ' when mailling or calling.';	
	} else echo "Subscription successfully setup and setup payment processed succesfully.";
}
 
?>
----
\\
**Subscription update:**
SetSubName($name);
	if($description != "") $subupd->SetDescription($description);
	if($periodType != "") $subupd->SetPeriodType($periodType);
	if($length != "") $subupd->SetLength($length);
	if($recurringAmount != "") $subupd->SetRecurringAmount($recurringAmount);
	if($type != "") $subupd->SetSubType($type);
	if($startDate != "") $subupd->SetStartDate($startDate);
	if($endDate != "") $subupd->SetEndDate($endDate);
	if($eDCCDecision != "") $subupd->EDCCDecision($eDCCDecision);
 
$response = $subupd->ProcessRequestToGateway($secret,$testMode,$gateway);
 
if($response->IsError()) {
	echo 'AN ERROR OCCURED, Subscription not updated. Error details: ' . $response->ErrorString();
}
else {
	$expectedResponseHash = md5($terminalId.$response->MerchantReference().$response->DateTime().$secret);
	if($expectedResponseHash != $response->Hash()) {
		echo 'SUBSCRIPTION UPDATE FAILED: INVALID RESPONSE HASH. Please contact ' . $adminEmail . ' or call ' . $adminPhone . ' to clarify if your card will be billed.';
		$merchantRef = $response->MerchantReference();
		if(isset($merchantRef)) {
			echo 'Please quote %Gateway Terminal ID: ' . $terminalId . ', and Subscription Merchant Reference: ' . $response->MerchantReference() . ' when mailling or calling.';
		}
	} else echo "Subscription successfully updated.";
}
 
?>
----
\\
**Subscription deletion:**
ProcessRequestToGateway($secret,$testMode,$gateway);
 
if($response->IsError())
{
 echo 'AN ERROR OCCURED, Subscription not deleted. Error details: ' . $response->ErrorString();
}
else {
	$expectedResponseHash = md5($terminalId.$response->MerchantReference().$response->DateTime().$secret);
	if($expectedResponseHash != $response->Hash()) {
		$merchantRef = $response->MerchantReference();
		echo 'SUBSCRIPTION DELETION FAILED: INVALID RESPONSE HASH. Please contact ' . $adminEmail . ' or call ' . $adminPhone . ' to clarify if your card will be billed.';
		if(isset($merchantRef)) {
			echo 'Please quote %Gateway Terminal ID: ' . $terminalId . ', and Subscription Merchant Reference: ' . $merchantRef . ' when mailling or calling.';
		}
	} 
	else {
		echo "Subscription successfully deleted.";
	}
}	
 
?>