PageRenderTime 43ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/api/plan.php

https://bitbucket.org/onehost/respond
PHP | 271 lines | 152 code | 80 blank | 39 comment | 11 complexity | 2c0efe0ace5b5b2114b2b0ab6d6df6cc MD5 | raw file
Possible License(s): MIT
  1. <?php
  2. /**
  3. * A protected API call to edit a page
  4. * @uri /plan/add
  5. */
  6. class PlanAddResource extends Tonic\Resource {
  7. /**
  8. * @method POST
  9. */
  10. function post() {
  11. // get an authuser
  12. $authUser = new AuthUser();
  13. if(isset($authUser->UserUniqId)){ // check if authorized
  14. if($authUser->IsSuperAdmin == true){ // only available to super admin
  15. try{
  16. parse_str($this->request->data, $request); // parse request
  17. $id = $request['id'];
  18. $name = $request['name'];
  19. $amount = $request['amount'];
  20. $interval = $request['interval'];
  21. $currency = $request['currency'];
  22. $trial = $request['trial'];
  23. $plan = array(
  24. "amount" => $amount,
  25. "interval" => $interval,
  26. "name" => $name,
  27. "currency" => $currency,
  28. "trial_period_days" => $trial,
  29. "id" => $id);
  30. // add plan to stripe
  31. Stripe::setApiKey(STRIPE_API_KEY);
  32. Stripe_Plan::create($plan);
  33. // return a json response
  34. $response = new Tonic\Response(Tonic\Response::OK);
  35. $response->contentType = 'applicaton/json';
  36. $response->body = json_encode($plan);
  37. return $response;
  38. }
  39. catch (Exception $e) {
  40. $response = new Tonic\Response(Tonic\Response::BADREQUEST);
  41. $response->body = $e->getMessage();
  42. return $response;
  43. }
  44. }
  45. } else{ // unauthorized access
  46. return new Tonic\Response(Tonic\Response::UNAUTHORIZED);
  47. }
  48. }
  49. }
  50. /**
  51. * A protected API call to edit a plan
  52. * @uri /plan/edit
  53. */
  54. class PlanEditResource extends Tonic\Resource {
  55. /**
  56. * @method POST
  57. */
  58. function post() {
  59. // get an authuser
  60. $authUser = new AuthUser();
  61. if(isset($authUser->UserUniqId)){ // check if authorized
  62. if($authUser->IsSuperAdmin == true){ // only available to super admin
  63. try{
  64. parse_str($this->request->data, $request); // parse request
  65. $id = $request['id'];
  66. $name = $request['name'];
  67. // add plan to stripe
  68. Stripe::setApiKey(STRIPE_API_KEY);
  69. $p = Stripe_Plan::retrieve($id);
  70. $p->name = $name;
  71. $p->save();
  72. // return a json response
  73. $response = new Tonic\Response(Tonic\Response::OK);
  74. return $response;
  75. }
  76. catch (Exception $e) {
  77. $response = new Tonic\Response(Tonic\Response::BADREQUEST);
  78. $response->body = $e->getMessage();
  79. return $response;
  80. }
  81. }
  82. } else{ // unauthorized access
  83. return new Tonic\Response(Tonic\Response::UNAUTHORIZED);
  84. }
  85. }
  86. }
  87. /**
  88. * A protected API call to add a page
  89. * @uri /plan/list
  90. */
  91. class PlanListResource extends Tonic\Resource {
  92. /**
  93. * @method GET
  94. */
  95. function get() {
  96. // get an authuser
  97. $authUser = new AuthUser();
  98. if(isset($authUser->UserUniqId)){ // check if authorized
  99. try{
  100. // add plan to stripe
  101. Stripe::setApiKey(STRIPE_API_KEY);
  102. $plan_list = Stripe_Plan::all();
  103. $plans = array();
  104. foreach($plan_list['data'] as $item){ // iterate files
  105. $readable = $item->amount.' / '.$item->interval.' '.$item->currency;
  106. if($item->currency = 'usd'){
  107. $dollars = $item->amount/100;
  108. $readable = '$'.$dollars.' / '.$item->interval;
  109. }
  110. if($item->currency=='usd'){
  111. }
  112. $plan = array(
  113. 'interval' => $item->interval,
  114. 'name' => $item->name,
  115. 'amount' => $item->amount,
  116. 'currency' => $item->currency,
  117. 'id' => $item->id,
  118. 'readable' => $readable,
  119. 'trial' => $item->trial_period_days
  120. );
  121. array_push($plans, $plan);
  122. }
  123. // return a json response
  124. $response = new Tonic\Response(Tonic\Response::OK);
  125. $response->contentType = 'applicaton/json';
  126. $response->body = json_encode($plans);
  127. return $response;
  128. }
  129. catch (Exception $e) {
  130. $response = new Tonic\Response(Tonic\Response::BADREQUEST);
  131. $response->body = $e->getMessage();
  132. return $response;
  133. }
  134. } else{ // unauthorized access
  135. return new Tonic\Response(Tonic\Response::UNAUTHORIZED);
  136. }
  137. }
  138. }
  139. /**
  140. * A protected API call to edit a page
  141. * @uri /plan/get
  142. */
  143. class PlanGetResource extends Tonic\Resource {
  144. /**
  145. * @method POST
  146. */
  147. function post() {
  148. // get an authuser
  149. $authUser = new AuthUser();
  150. parse_str($this->request->data, $request); // parse request
  151. if(isset($authUser->UserUniqId)){ // check if authorized
  152. try{
  153. $customerId = $authUser->CustomerId;
  154. Stripe::setApiKey(STRIPE_API_KEY);
  155. $customer = Stripe_Customer::retrieve($customerId);
  156. $status = $customer->subscription->status;
  157. $plan = $customer->subscription->plan->id;
  158. $name = $customer->subscription->plan->name;
  159. $renewal = gmdate("Y-m-d H:i:s", intval($customer->subscription->current_period_end));
  160. $currency = $customer->subscription->plan->currency;
  161. $amount = $customer->subscription->plan->amount;
  162. $interval = $customer->subscription->plan->interval;
  163. $readable = $amount.' / '.$interval.' '.$currency;
  164. if($currency = 'usd'){
  165. $dollars = $amount/100;
  166. $readable = '$'.$dollars.' / '.$interval;
  167. }
  168. $plan = array(
  169. 'status' => $status,
  170. 'plan' => $plan,
  171. 'readable' => $readable,
  172. 'name' => $name,
  173. 'renewal' => $renewal
  174. );
  175. // return a json response
  176. $response = new Tonic\Response(Tonic\Response::OK);
  177. $response->contentType = 'applicaton/json';
  178. $response->body = json_encode($plan);
  179. return $response;
  180. }
  181. catch (Exception $e) {
  182. $response = new Tonic\Response(Tonic\Response::BADREQUEST);
  183. $response->body = $e->getMessage();
  184. return $response;
  185. }
  186. } else{ // unauthorized access
  187. return new Tonic\Response(Tonic\Response::UNAUTHORIZED);
  188. }
  189. }
  190. }
  191. ?>