This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
developer:sample_codes:php_xml_subscriptions [2016/07/26 11:55] 127.0.0.1 external edit |
developer:sample_codes:php_xml_subscriptions [2022/07/15 15:23] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== 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):** | ||
+ | |||
+ | <file php %gatewaySampleFileName_account.inc> | ||
+ | |||
+ | <?php | ||
+ | |||
+ | # These values are used to identify and validate the account that you are using. They are mandatory. | ||
+ | $gateway = ''; # This is the %Gateway payments gateway that you should use, assigned to the site by %Gateway. | ||
+ | $terminalId = ''; # This is the Terminal ID assigned to the site by %Gateway. | ||
+ | $currency = ''; # This is the 3 digit ISO currency code for the above Terminal ID. | ||
+ | $secret = ''; # This shared secret is used when generating the hash validation strings. | ||
+ | # It must be set exactly as it is in the %Gateway %SelfCare system. | ||
+ | $testAccount = true; | ||
+ | |||
+ | # These are used only in the case where the response hash is incorrect, which should | ||
+ | # never happen in the live environment unless someone is attempting fraud. | ||
+ | $adminEmail = ''; | ||
+ | $adminPhone = ''; | ||
+ | |||
+ | ?> | ||
+ | |||
+ | </file> | ||
+ | ---- | ||
+ | \\ | ||
+ | |||
+ | **Subscription registration:** | ||
+ | |||
+ | <file php %gatewaySampleFileName_subscription_registration.php> | ||
+ | |||
+ | <?php | ||
+ | |||
+ | require('%gatewaySampleFileName_account.inc'); | ||
+ | require('gateway_tps_xml.php'); | ||
+ | |||
+ | # These values are specific to the cardholder. | ||
+ | $subscriptionMerchantRef = ''; # Unique merchant identifier for the subscription. Length is limited to 48 chars. | ||
+ | $storedSubscriptionMerchantRef = ''; # Merchant reference for the Stored Subscription under which this Subscription is to be created. | ||
+ | $secureCardMerchantRef = ''; # Merchant reference for the SecureCard entry that you want to use to set up the subscription. | ||
+ | $subscriptionStartDate = ''; # Date on which the subscription should start (setup payment is processed immediately, and does not obey this). Format: DD-MM-YYYY. | ||
+ | |||
+ | # These are all optiona fields | ||
+ | $endDate = ''; # (optional) set an end date for the subscription. Format: DD-MM-YYYY. | ||
+ | $eDCCDecision = ''; # (optional) if eDCC was offered and accepted, you should set this to 'Y'. | ||
+ | |||
+ | $recurringAmount = ''; # | ||
+ | $initialAmount = ''; # | ||
+ | $periodType = ''; | ||
+ | # Set up the stored subscription addition object | ||
+ | $subreg = new XmlSubscriptionRegRequest($subscriptionMerchantRef,$terminalId,$storedSubscriptionMerchantRef,$secureCardMerchantRef,$subscriptionStartDate); | ||
+ | if($name != "" || $description != "" || $periodType != "" || $length != "" || $type != "" || $onUpdate != "" || $onDelete != "") $subreg->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 <a href="mailto:' . $adminEmail . '">' . $adminEmail . '</a> 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."; | ||
+ | } | ||
+ | |||
+ | ?> | ||
+ | |||
+ | </file> | ||
+ | ---- | ||
+ | \\ | ||
+ | |||
+ | **Subscription update:** | ||
+ | |||
+ | <file php %gatewaySampleFileName_subscription_update.php> | ||
+ | |||
+ | <?php | ||
+ | |||
+ | require('%gatewaySampleFileName_account.inc'); | ||
+ | require('gateway_tps_xml.php'); | ||
+ | |||
+ | # These values are specific to the cardholder. | ||
+ | $subscriptionMerchantRef = ''; # Merchant Reference of the subscription to be updated | ||
+ | $storedSubscriptionMerchantRef = ''; # Merchant reference for the Stored Subscription under which this Subscription is to be created. | ||
+ | $secureCardMerchantRef = ''; # Merchant reference for the SecureCard entry that you want to use to set up the subscription. | ||
+ | $subscriptionStartDate = ''; # Date on which the subscription should start (setup payment is processed immediately, and does not obey this). | ||
+ | $terminalId = ''; | ||
+ | $recurringAmount = ''; | ||
+ | # Set up the stored subscription update object | ||
+ | $subupd = new XmlSubscriptionUpdRequest($subscriptionMerchantRef,$terminalId,$secureCardMerchantRef); | ||
+ | if($name != "") $subupd->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 <a href="mailto:' . $adminEmail . '">' . $adminEmail . '</a> 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."; | ||
+ | |||
+ | } | ||
+ | |||
+ | ?> | ||
+ | |||
+ | </file> | ||
+ | ---- | ||
+ | \\ | ||
+ | |||
+ | **Subscription deletion:** | ||
+ | |||
+ | <file php %gatewaySampleFileName_subscription_delete.php> | ||
+ | |||
+ | <?php | ||
+ | |||
+ | require('%gatewaySampleFileName_account.inc'); | ||
+ | require('gateway_tps_xml.php'); | ||
+ | |||
+ | # These values are specific to the cardholder. | ||
+ | $subscriptionMerchantRef = ''; # Merchant Reference of the subscription to be deleted | ||
+ | |||
+ | # Set up the stored subscription update object | ||
+ | $subdel = new XmlSubscriptionDelRequest($subscriptionMerchantRef,$terminalId); | ||
+ | $response = $subdel->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 <a href="mailto:' . $adminEmail . '">' . $adminEmail . '</a> 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."; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ?> | ||
+ | |||
+ | </file> |