This article assumes you are using the PHP library for Recurly. This library is available from here : https://github.com/recurly/recurly-client-php
The code snippet shows how to obtain a list of all active subscriptions in recurly and then fetch the details of each subscription. Note that it takes a while for recurly to return the list of subscriptions and it does not support paging of the data – it returns it all in one go. So if you have a large number of subscriptions active, then it could take a couple of minutes to return the entire data. I have put in a check to return only x number of active subscriptions.
session_start();
error_reporting(E_ALL ^ E_wARNING ^ E_NOTICE ^ E_DEPRECATED);
set_time_limit(600);
date_default_timezone_set('America/Los_Angeles');
// credentials for recurly api
$subdomain = 'your subdomain';
$apiKey = 'your api key';
require_once("lib/recurly.php");
Recurly_Client::$subdomain = $subdomain;
Recurly_Client::$apiKey = $apiKey;
$data = getAllSubscriptions(10);
if (count($data) > 0) {
echo("<b>" . count($data) . " subscriptions found </b><br>");
foreach($data as $d) {
$uuid = $d["uuid"];
$details = getSubscriptionDetails($uuid);
$plan_code = $details["plan"];
$started_at = $details["started_at"]->format("Y-m-d h:m:s");
$ends_at = $details["ends_at"]->format("Y-m-d h:m:s");
$amount = $details["amount_in_cents"]/100;
$account_code = $details["account_code"];
$invoice_number = $details["invoice_number"];
echo("<b>" . $account_code . "</b> Invoice:<b>" . $invoice_number . "</b> Plan:" . $plan_code . " USD:" . number_format($amount,2). " from " . date("Y-m-d", strtotime($started_at)) . " expires " . date("Y-m-d", strtotime($ends_at)) . "<hr>");
}
}
/**
* Get all subscriptions : max limit is set
* @param int $limit max items to return
* @return array $data associative array of subscriptions
***/
function getAllSubscriptions($limit) {
$data = array();
$counter = 0;
$subscriptions = Recurly_SubscriptionList::getActive();
foreach($subscriptions as $subscription) {
$single = array();
$single["uuid"] = $subscription->uuid;
$single["state"] = $subscription->state;
$single["activated_at"] = $subscription->activated_at;
$single["started_at"] = $subscription->current_period_started_at;
$single["ends_at"] = $subscription->current_period_ends_at;
$single["account"] = $subscription->account;
$single["invoice"] = $subscription->invoice;
$endDate = strtotime($single["ends_at"]->format("Y-m-d h:m:s"));
$counter ++;
$data[] = $single;
if ($counter > $limit)
break;
}
return $data;
}
/**
* Get subscription details
* @param string $uuid subscription id
* @return array $data associative array of subscription fields
***/
function getSubscriptionDetails($uuid) {
$data = array();
$subscription = Recurly_Subscription::get($uuid);
$single = array();
$single["uuid"] = $subscription->uuid;
$single["state"] = $subscription->state;
$single["activated_at"] = $subscription->activated_at;
$single["started_at"] = $subscription->current_period_started_at;
$single["ends_at"] = $subscription->current_period_ends_at;
$single["plan"] = $subscription->plan->plan_code;
$single["amount_in_cents"] = $subscription->unit_amount_in_cents;
$single["account_code"] = $subscription->account->get()->account_code;
$single["invoice_number"] = $subscription->invoice->get()->invoice_number;
$data = $single;
return $data;
}
Leave a Reply