Add/Import subscriptions without payment data
Overview
This article covers subscription import without credit/debit card information. Use the addSubscription method to import a subscription into the Avangate system.
Parameters
Parameters |
Type/Description |
sessionID |
Required (string) |
|
Session identifier, the output of the Login method. Include sessionID into all your requests. Avangate throws an exception if the values are incorrect. The sessionID expires in 10 minutes. |
Required (Object) |
|
|
Object designed to provide Avangate with all the information to create a subscription. |
Response
SubscriptionReference |
String |
|
Unique, system-generated subscription identifier. |
Request
<?php function callRPC($Request, $hostUrl, $Debug = true) { $curl = curl_init($hostUrl); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_SSLVERSION, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Accept: application/json')); $RequestString = json_encode($Request); curl_setopt($curl, CURLOPT_POSTFIELDS, $RequestString); if ($Debug) { $RequestString; } $ResponseString = curl_exec($curl); if ($Debug) { $ResponseString; } if (!empty($ResponseString)) { $Response = json_decode($ResponseString); if (isset($Response->result)) { return $Response->result; } if (!is_null($Response->error)) { var_dump($Request->method, $Response->error); } } else { return null; } } $host = 'https://api.avangate.com/rpc/3.0/'; $merchantCode = "YOUR_MERCHANT_CODE";// your account's merchant code available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php $key = "YOUR_SECRET_KEY";// your account's secret key available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php $string = strlen($merchantCode) . $merchantCode . strlen(gmdate('Y-m-d H:i:s')) . gmdate('Y-m-d H:i:s'); $hash = hash_hmac('md5', $string, $key); $i = 1; // counter for api calls // call login $jsonRpcRequest = new stdClass(); $jsonRpcRequest->jsonrpc = '2.0'; $jsonRpcRequest->method = 'login'; $jsonRpcRequest->params = array($merchantCode, gmdate('Y-m-d H:i:s'), $hash); $jsonRpcRequest->id = $i++; $sessionID = callRPC($jsonRpcRequest, $host); var_dump($sessionID); $Product = new stdClass (); $Product->ProductCode = 'my_subscription_1'; $Product->ProductId = 4639321; $Product->ProductName = 'Avangate Subscription Imported'; $Product->ProductVersion = 1.0; $Product->ProductQuantity = 3; $Product->PriceOptionCodes = array(); $EndUser = new stdClass (); $EndUser->Address1 = 'Address line 1'; $EndUser->Address2 = 'Address line 2'; $EndUser->City = 'LA'; $EndUser->Company = 'Company Name'; $EndUser->CountryCode = "US"; $EndUser->Email = 'customerAPI@avangate.com'; $EndUser->FirstName = 'Customer'; $EndUser->Language = 'en'; $EndUser->LastName = 'Avangate'; $EndUser->Phone = '1234567890'; $EndUser->State = 'California'; $EndUser->Fax = NULL; $EndUser->Zip = '90210'; $Subscription = new stdClass(); $Subscription->ExternalSubscriptionReference = '12345678912ImportedSubscription'; $Subscription->SubscriptionCode= NULL; $Subscription->StartDate = '2013-01-01'; $Subscription->ExpirationDate = '2017-12-30'; $Subscription->Product = $Product; $Subscription->EndUser = $EndUser; $Subscription->ExternalCustomerReference = '12354678ExtCustRef'; $jsonRpcRequest = array ( 'method' => 'addSubscription', 'params' => array($sessionID, $Subscription), 'id' => $i++, 'jsonrpc' => '2.0'); var_dump (callRPC((Object)$jsonRpcRequest, $host, true));