示例#1
0
function testParams()
{
    $result = ChargeBee_Subscription::retrieve('1rifg4iOsZUL4mBhF');
    // print_r($result);
    //print_r($result->subscription()->currentTermEnasdd);
    //print_r($result->customer());
    //print_r($result->customer()->cfDateOfBirth);
    //print_r($result->customer()->cfGender);
    print_r($result->subscription());
}
示例#2
0
<?php

require_once '../partials/header.php';
/*
 * Adding ChargeBee php libraries
 */
require_once dirname(__FILE__) . "/../php_src/Config.php";
$subscriptionId = $_GET["subscription_id"];
$result = ChargeBee_Subscription::retrieve($subscriptionId);
$dob = $result->customer()->cfDateOfBirth;
$comicsType = $result->customer()->cfComicsType;
?>

<div class="jumbotron text-center">
    	<h2><span class="text-muted">Congrats! You've successfully</span> signed up <span class="text-muted">to Honey Comics.</span></h2>
        <h4 class="text-muted"><?php 
echo $comicsType;
?>
 comics will be delivered to your email address.</h4>
        <h3> Expect a surprise on your birthday (<?php 
echo date('M d', strtotime($dob));
?>
) :) </h3>
        <h1>Thank You!</h1>
</div>

<?php 
require_once '../partials/footer.php';
示例#3
0
 private function processChargeBeeData($inData)
 {
     //echo "Processing $inData";
     $inData = json_decode($inData, 1);
     $sqlData = array();
     $varData = array();
     if ($inData === null) {
         echo "Invalid Data provided.\n";
         return "Invalid data!";
     }
     echo "Processing : ";
     print_r($inData);
     foreach ($inData['content'] as $key => $value) {
         /*	"subscription": {
         			"id": "HwqE2xeNnwOeYF44",
         			"plan_id": "enterprise",
         			"plan_quantity": 1,
         			"status": "in_trial",
         			"trial_start": 1352158863,
         			"trial_end": 1353454863,
         			"created_at": 1352158863,
         			"due_invoices_count": 0,
         			"object": "subscription"
         		},
         		"customer": {
         			"id": "HwqE2xeNnwOeYF44",
         			"first_name": "Leon",
         			"last_name": "Test",
         			"email": "*****@*****.**",
         			"created_at": 1352158863,
         			"object": "customer",
         			"card_status": "valid"
         		},
         		"card": {
         			"customer_id": "HwqE2xeNnwOeYF44",
         			"status": "valid",
         			"gateway": "chargebee",
         			"first_name": "Leon",
         			"last_name": "Testington",
         			"iin": "411111",
         			"last4": "1111",
         			"card_type": "visa",
         			"expiry_month": 2,
         			"expiry_year": 2020,
         			"billing_addr1": "123 Fake Street",
         			"billing_city": "Fake suburb",
         			"billing_state": "QLD",
         			"billing_country": "AU",
         			"billing_zip": "1234",
         			"object": "card",
         			"masked_number": "411111******1111"
         		},
         		*/
         switch ($key) {
             case "customer":
                 $allowed = array("customer_first_name", "customer_last_name", "customer_email", "customer_created_at");
                 foreach ($value as $customerKey => $customerData) {
                     if (in_array("customer_" . $customerKey, $allowed)) {
                         $sqlData[] = "customer_" . $customerKey . " = ?";
                         $varData[] = $customerData;
                     }
                 }
                 //Flag the curl request as processed/deleted.
                 $query = "UPDATE user_subscriptions \n\t\t\t\t\t\t\t\t  SET " . implode(",", $sqlData) . "\t\n\t\t\t\t\t\t\t\t  WHERE chargebee_id = ?";
                 $stmt = $this->sql->link->prepare($query);
                 for ($c = 0; $c < sizeof($varData); $c++) {
                     $stmt->mbind_param('s', $varData[$c]);
                 }
                 //Bind the document id, document page num and user id.
                 $stmt->mbind_param('s', $value['id']);
                 $stmt->execute();
                 break;
             case "card":
                 $allowed = array("card_status", "card_first_name", "card_last_name", "card_card_type", "card_expiry_month", "card_expiry_year", "card_billing_addr1", "card_billing_addr2", "card_billing_city", "card_billing_state", "card_billing_country", "card_billing_zip", "card_masked_number");
                 foreach ($value as $customerKey => $customerData) {
                     if (in_array("card_" . $customerKey, $allowed)) {
                         $sqlData[] = "card_" . $customerKey . " = ?";
                         $varData[] = $customerData;
                     }
                 }
                 //Flag the curl request as processed/deleted.
                 $query = "UPDATE user_subscriptions \n\t\t\t\t\t\t\t\t  SET " . implode(",", $sqlData) . "\t\n\t\t\t\t\t\t\t\t  WHERE chargebee_id = ?";
                 $stmt = $this->sql->link->prepare($query);
                 for ($c = 0; $c < sizeof($varData); $c++) {
                     $stmt->mbind_param('s', $varData[$c]);
                 }
                 //Bind the document id, document page num and user id.
                 $stmt->mbind_param('s', $value['customer_id']);
                 $stmt->execute();
                 break;
             case "subscription":
                 $allowed = array("subscription_plan_id", "subscription_plan_quantity", "subscription_status", "subscription_trial_start", "subscription_trial_end", "subscription_created_at", "subscription_due_invoices_count", "subscription_activated_at", "subscription_current_term_start", "subscription_current_term_end");
                 foreach ($value as $customerKey => $customerData) {
                     if (in_array("subscription_" . $customerKey, $allowed)) {
                         $sqlData[] = "subscription_" . $customerKey . " = ?";
                         $varData[] = $customerData;
                     }
                 }
                 //Flag the curl request as processed/deleted.
                 $query = "UPDATE user_subscriptions \n\t\t\t\t\t\t\t\t  SET " . implode(",", $sqlData) . "\t\n\t\t\t\t\t\t\t\t  WHERE chargebee_id = ?";
                 $stmt = $this->sql->link->prepare($query);
                 for ($c = 0; $c < sizeof($varData); $c++) {
                     $stmt->mbind_param('s', $varData[$c]);
                 }
                 //Bind the document id, document page num and user id.
                 $stmt->mbind_param('s', $value['id']);
                 $stmt->execute();
                 break;
             default:
                 break;
         }
     }
     require '../php/chargebee/ChargeBee.php';
     ChargeBee_Environment::configure("rocketmailmerge", "1opwNtcdAXu19XWee9cdCFe6E3FfYcCvUF");
     switch ($inData['event_type']) {
         //Reactivate free trial accounts when the free trial runs out and is killed by chargebee
         case "subscription_canceled_no_card":
             $returnResults = array();
             $subscriptionID = $inData['content']['subscription']['id'];
             $subscriptionPlanID = $inData['content']['subscription']['plan_id'];
             $cardStatus = $inData['content']['customer']['card_status'];
             $trialEnd = $inData['content']['subscription']['trial_end'];
             $currentTermStart = $inData['content']['subscription']['current_term_start'];
             //The free trial has expired. Reactivate their account.
             if ($subscriptionPlanID == "free" && $cardStatus == "no_card") {
                 $result = ChargeBee_Subscription::reactivate($subscriptionID);
                 //Locate the user's page usage.
                 $query = "SELECT user_subscriptions.chargebee_id, user_subscriptions.user_id, user_statistics.billing_cycle_pages, subscription_plans.included_pages\n\t\t\t\t\t\t\t\tFROM user_subscriptions\n\t\t\t\t\t\t\t\tLEFT JOIN user_statistics ON user_subscriptions.user_id = user_statistics.user_id\n\t\t\t\t\t\t\t\tLEFT JOIN subscription_plans ON user_subscriptions.subscription_plan_id = subscription_plans.plan_name\n\t\t\t\t\t\t\t\tWHERE user_subscriptions.chargebee_id =  ?";
                 $stmt = $this->sql->link->prepare($query);
                 if (!$stmt) {
                     die('Invalid query: ' . $this->sql->link->error);
                 } else {
                     $stmt->bind_param('s', $subscriptionID);
                     $resultFromExec = $stmt->execute();
                     $stmt->store_result();
                     stmt_bind_assoc($stmt, $returnResults);
                     // loop through all result rows
                     while ($stmt->fetch()) {
                         foreach ($returnResults as $key => $value) {
                             $row_tmb[$key] = $value;
                         }
                         $data = $row_tmb;
                     }
                 }
                 $userID = $data['user_id'];
                 //Reset the user statistics back to 0.
                 $query = "UPDATE user_statistics SET billing_cycle_logins = 0, billing_cycle_documents = 0, billing_cycle_pages = 0\n\t\t\t\t\t\t\t  WHERE user_id = ?";
                 $stmt = $this->sql->link->prepare($query);
                 if (!$stmt) {
                     die('Invalid query: ' . $this->sql->link->error);
                 } else {
                     $stmt->bind_param('i', $userID);
                     $resultFromExec = $stmt->execute();
                 }
             }
             break;
         case "invoice_created":
             echo "Invoice Created!";
             $returnResults = array();
             $invoiceID = $inData['content']['invoice']['id'];
             $subscriptionID = $inData['content']['invoice']['subscription_id'];
             $result = ChargeBee_Subscription::retrieve($subscriptionID);
             $subscription = $result->subscription();
             $addonName = $subscription->__get('planId') . "_extra_pages";
             //build out of the name of their plan + '_extra_pages'
             //Locate the user's page usage.
             $query = "SELECT user_subscriptions.chargebee_id, user_subscriptions.user_id, user_statistics.billing_cycle_pages, subscription_plans.included_pages\n\t\t\t\t\t\t\tFROM user_subscriptions\n\t\t\t\t\t\t\tLEFT JOIN user_statistics ON user_subscriptions.user_id = user_statistics.user_id\n\t\t\t\t\t\t\tLEFT JOIN subscription_plans ON user_subscriptions.subscription_plan_id = subscription_plans.plan_name\n\t\t\t\t\t\t\tWHERE user_subscriptions.chargebee_id =  ?";
             $stmt = $this->sql->link->prepare($query);
             if (!$stmt) {
                 die('Invalid query: ' . $this->sql->link->error);
             } else {
                 $stmt->bind_param('s', $subscriptionID);
                 $resultFromExec = $stmt->execute();
                 $stmt->store_result();
                 stmt_bind_assoc($stmt, $returnResults);
                 // loop through all result rows
                 while ($stmt->fetch()) {
                     foreach ($returnResults as $key => $value) {
                         $row_tmb[$key] = $value;
                     }
                     $data = $row_tmb;
                 }
             }
             $userID = $data['user_id'];
             //Calculate how many pages over their included subscription pages they've used.
             $billingCyclePages = $data['billing_cycle_pages'];
             if (!is_numeric($data['billing_cycle_pages'])) {
                 $billingCyclePages = 0;
             }
             $billingCyclePages = $billingCyclePages - $data['included_pages'];
             //Add the extra pages used by the user to the invoice, if > 0
             if ($billingCyclePages > 0) {
                 $result = ChargeBee_Invoice::addAddonCharge($invoiceID, array("addon_id" => $addonName, "addon_quantity" => $billingCyclePages));
             }
             //Reset the user statistics back to 0.
             $query = "UPDATE user_statistics SET billing_cycle_logins = 0, billing_cycle_documents = 0, billing_cycle_pages = 0\n\t\t\t\t\t\t  WHERE user_id = ?";
             $stmt = $this->sql->link->prepare($query);
             if (!$stmt) {
                 die('Invalid query: ' . $this->sql->link->error);
             } else {
                 $stmt->bind_param('i', $userID);
                 $resultFromExec = $stmt->execute();
             }
             //Close the invoice and charge the customer.
             $result = ChargeBee_Invoice::collect($invoiceID);
             //$invoice = $result->invoice();
             break;
         case "subscription_renewed":
             break;
             //Fired when a user reactivates their subscription. Clear the counters for paid accounts.
         //Fired when a user reactivates their subscription. Clear the counters for paid accounts.
         case "subscription_reactivated":
             $returnResults = array();
             $subscriptionID = $inData['content']['subscription']['id'];
             $subscriptionPlanID = $inData['content']['subscription']['plan_id'];
             //Locate the user's page usage.
             $query = "SELECT user_subscriptions.chargebee_id, user_subscriptions.user_id, user_statistics.billing_cycle_pages, subscription_plans.included_pages\n\t\t\t\t\t\t\tFROM user_subscriptions\n\t\t\t\t\t\t\tLEFT JOIN user_statistics ON user_subscriptions.user_id = user_statistics.user_id\n\t\t\t\t\t\t\tLEFT JOIN subscription_plans ON user_subscriptions.subscription_plan_id = subscription_plans.plan_name\n\t\t\t\t\t\t\tWHERE user_subscriptions.chargebee_id =  ?";
             $stmt = $this->sql->link->prepare($query);
             if (!$stmt) {
                 die('Invalid query: ' . $this->sql->link->error);
             } else {
                 $stmt->bind_param('s', $subscriptionID);
                 $resultFromExec = $stmt->execute();
                 $stmt->store_result();
                 stmt_bind_assoc($stmt, $returnResults);
                 // loop through all result rows
                 while ($stmt->fetch()) {
                     foreach ($returnResults as $key => $value) {
                         $row_tmb[$key] = $value;
                     }
                     $data = $row_tmb;
                 }
             }
             $userID = $data['user_id'];
             //Reset the usage for free accounts.
             if ($subscriptionPlanID != "free") {
                 //Reset the user statistics back to 0.
                 $query = "UPDATE user_statistics SET billing_cycle_logins = 0, billing_cycle_documents = 0, billing_cycle_pages = 0\n\t\t\t\t\t\t\t  WHERE user_id = ?";
                 $stmt = $this->sql->link->prepare($query);
                 if (!$stmt) {
                     die('Invalid query: ' . $this->sql->link->error);
                 } else {
                     $stmt->bind_param('i', $userID);
                     $resultFromExec = $stmt->execute();
                 }
             }
             break;
             //Terminate free trial accounts when the free trial runs out.
         //Terminate free trial accounts when the free trial runs out.
         case "subscription_activated":
             $returnResults = array();
             $subscriptionID = $inData['content']['subscription']['id'];
             $subscriptionPlanID = $inData['content']['subscription']['plan_id'];
             $cardStatus = $inData['content']['customer']['card_status'];
             $trialEnd = $inData['content']['subscription']['trial_end'];
             $currentTermStart = $inData['content']['subscription']['current_term_start'];
             //The free trial has expired. Cancel their account.
             //if($subscriptionPlanID == "free" && $cardStatus == "no_card" && ($trialEnd == $currentTermStart)) {
             //	$result = ChargeBee_Subscription::cancel($subscriptionID);
             //}
             break;
         default:
             break;
     }
 }
function createSubscription($firstName, $lastName, $email)
{
    $plan = createPlan("Basic", "basic", 1000, 15);
    $createSubscriptionParam = array("plan_id" => $plan->id, "id" => $email, "customer[first_name]" => $firstName, "customer[last_name]" => $lastName, "customer[email]" => $email);
    try {
        $result = ChargeBee_Subscription::create($createSubscriptionParam);
        return $result;
    } catch (ChargeBee_InvalidRequestException $e) {
        if ($e->getApiErrorCode() == "duplicate_entry" && $e->getParam() != null && $e->getParam() == "id") {
            $result = ChargeBee_Subscription::retrieve($email);
            return $result;
        } else {
            throw $e;
        }
    }
}
function fetchSubscription()
{
    $subscriptionId = $_POST['subscription_id'];
    if (empty($subscriptionId)) {
        return false;
    }
    try {
        $result = ChargeBee_Subscription::retrieve($subscriptionId);
        session_start();
        $_SESSION['subscription_id'] = $result->subscription()->id;
        $_SESSION['customer_id'] = $result->customer()->id;
        return true;
    } catch (ChargeBee_APIError $e) {
        if ($e->getApiErrorCode() == "resource_not_found") {
            return false;
        }
        throw $e;
    }
}
示例#6
0
<?php

require_once dirname(__FILE__) . "/../php_src/Config.php";
require_once dirname(__FILE__) . '/../php_src/Util.php';
require_once '../partials/header.php';
$id = $_GET["customer_id"];
$subscriptionDetail = ChargeBee_Subscription::retrieve($id);
?>
<script type="text/javascript">
    $(document).ready(function(){
        $('.update_msg').show();
        setTimeout(function(){$('.update_msg').slideUp();},2000);
    });       
</script>
<br>
    <div id="cb-demo-ssp">
     <?php 
if (isset($_GET["updated"]) && !is_null($_GET["updated"])) {
    ?>
          <div class="update_msg text-center">
            <p class="alert alert-success">
              <span class="glyphicon glyphicon-ok-sign"></span> Your card details have been saved successfully.
                      </p>
          </div> 
    <?php 
}
?>
        <h2>
            <a align="right" href="/update_payment_method" class="pull-right btn btn-danger">
					<span class="glyphicon glyphicon-off"></span> 
					log out 
示例#7
0
<?php

require_once '../partials/header.php';
require_once dirname(__FILE__) . '/../php_src/Util.php';
$result = ChargeBee_Subscription::retrieve($_GET['subscription_id']);
?>
<h1 class="text-center" style="font-size: 50px; margin: 40px;"> You have been successfully subscribed. </h1>
<div class="col-sm-8 col-sm-offset-2 cb-spacing-bottom">

             <?php 
if ($result->subscription()->status == "in_trial") {
    ?>
                  <span class="text-muted lead"> Your current subscription trial will end on  </span>
                  <span class="lead">
                  <?php 
    echo date('m/d/y', $result->subscription()->trialEnd);
    ?>
                  </span>
             <?php 
} else {
    if ($result->subscription()->status = "active") {
        ?>
                  <span class="text-muted lead"> Your subscription will be renewed on </span>
                  <span class="lead">
                       <?php 
        echo date('m/d/y', $result->subscription()->currentTermEnd);
        ?>
                  </span>
                   <br>
                  <?php 
        if ($result->subscription->remainingBillingCycles != null) {