/**
  * @api {post} /ecommerce/purchase Make Purchase
  * @apiName Make Purchase
  * @apiGroup Transaction
  * @apiHeader (Header) {String} X_Authorization Authorization value.
  * @apiParam  {String[]} items cart items in json format
  * @apiParam  {Number} amount Total amount.
  * @apiParam  {Number} card_num Credit Cart Number.
  * @apiParam  {String} exp_date Credit Cart exp date in 'm/y' format.
  *
  * @apiParam  (items) {Number} id course_sale_id
  * @apiParam  (items) {Number} course_id Course Id.
  * @apiParam  (items) {String} name Course Name.
  * @apiParam  (items) {Number} price final price.
  * @apiParam  (items) {Number} qty qty.
  * 
  * @apiError 400 Input Invalid. This will happen if the param is missing or not the valid format.
  * @apiError 404 Not found. This will happen if the role id/user id/group id is not in our system.
  * @apiError 401 Not authorized. This will happen if the header value is not attached.
  * 
  * 
  */
 public static function purchase()
 {
     $app = \Slim\Slim::getInstance();
     $data = $app->request->post();
     $idUser = self::authCheck();
     self::inputValid();
     self::cartCheck();
     $data['cust_id'] = $idUser;
     $transaction = new Authorize();
     $transaction->setCustomer($data);
     $transaction->addItem(json_decode($data['items']));
     $result = $transaction->AIM($data['amount'], $data['card_num'], $data['exp_date']);
     if (!$result->approved) {
         $app->halt(400, json_encode($result->response_reason_text));
     }
     EnrollmentController::afterPurchaseEnroll(json_decode($data['items']), $idUser);
     return json_encode($result);
 }