public static function payViaCreditCard($idOrder, $idUser = "") { $restoInitiate = Generic::IsNullOrEmptyString($idUser); $userInitiate = !$restoInitiate; $order = new MasterOrderModel(); $order->getByID($idOrder); //KALO USER INITIATE CEK APA DIA LEADER if ($userInitiate) { $user = new UserModel(); $user->getByID($idUser); if (!Util::isLeader($idOrder, $idUser)) { Generic::errorMsg(Keys::$ERR_PAYMENT_NOT_LEADER); } } else { $idUser = $order->id_user; $user = new UserModel(); $user->getByID($idUser); } //CEK APA PEMBAYARAN PAKE CREDIT CARD if ($order->payment_method != Keys::$PAYMENT_TYPE_CREDIT_CARD) { Generic::errorMsg("This Order Not Using Credit Card as Payment Method"); } Doku_Initiate::$sharedKey = "iMdRs8Iz987Z"; Doku_Initiate::$mallId = "3199"; $invoice = new Invoice($idOrder, true); $params = array('amount' => Generic::dokuMoneyValue($invoice->grandTotal), 'invoice' => $idOrder, 'currency' => '360'); $detailOrders = $invoice->orderDetails; $basket = array(); foreach ($detailOrders as $detailOrder) { $b = array(); $b['name'] = $detailOrder->name_dish; $b['amount'] = Generic::dokuMoneyValue($detailOrder->single_price); $b['quantity'] = $detailOrder->quantity; $b['subtotal'] = Generic::dokuMoneyValue($detailOrder->price); $basket[] = $b; } $words = Doku_Library::doCreateWords($params); $customer = array('name' => $user->full_name, 'data_phone' => $user->phone_no, 'data_email' => $user->email, 'data_address' => $user->district . ',' . $user->city); // $basket[] = array( // 'name' => 'sayur', // 'amount' => '10000.00', // 'quantity' => '1', // 'subtotal' => '10000.00' // ); // $basket[] = array( // 'name' => 'buah', // 'amount' => '10000.00', // 'quantity' => '1', // 'subtotal' => '10000.00' // ); $dataPayment = array('req_mall_id' => Doku_Initiate::$mallId, 'req_chain_merchant' => 'NA', 'req_amount' => $params['amount'], 'req_words' => $words, 'req_purchase_amount' => $params['amount'], 'req_trans_id_merchant' => $params['invoice'], 'req_request_date_time' => date('YmdHis'), 'req_currency' => '360', 'req_purchase_currency' => '360', 'req_session_id' => sha1(date('YmdHis')), 'req_name' => $customer['name'], 'req_payment_channel' => '15', 'req_email' => $customer['data_email'], 'req_basket' => $basket, 'req_address' => $customer['data_address'], 'req_token_payment' => $user->payment_token, 'req_customer_id' => $idUser); $response = Doku_Api::doDirectPayment($dataPayment); if ($response->res_response_code == '0000') { $status = "SUCCESS"; $order->status_payment = Keys::$PAYMENT_STATUS_PAID; $order->isPaid = Keys::$YES; $order->load = 1; $order->save(); //success $trans = new MasterRestoTransactionModel(); $trans->id_restaurant = $order->id_restaurant; $trans->id_request = $order->id_order; $trans->gross_amount = $invoice->grandTotal; $trans->type_transaction = "1"; $trans->datetime_transaction = leap_mysqldate(); $trans->approved = "1"; $trans->mr_fee = $invoice->valFeeMR; //doubleval($order->mr_fee);//((double)($arrOrder[0]->grand_total * $resto->mr_fee)) / 100; //TODO LATER CHANGE 3 (BANK FEE) INTO GLOBAL VAR $trans->other_fee = 0; //((double)($arrOrder[0]->grand_total * $resto->cc_fee)) / 100; $trans->bank_disc = $invoice->valDiscBank; //doubleval($order->disc_bank);//$objOrder->disc_bank; $valNetAmount = doubleval($trans->gross_amount - $trans->mr_fee - $trans->other_fee + $trans->bank_disc); $trans->net_amount = $valNetAmount; $trans->save(); //reset user credit to 0 $user = new UserModel(); $user->getByID($idUser); $user->credit = 0; $user->save(); } else { $status = "FAILED"; } $results['status'] = $status; $results['res_token_id'] = $user->payment_token; $results['invoice_no'] = $idOrder; $results['id_user'] = $idUser; $results['res_response_code'] = $response->res_response_code; $results['doku_results'] = $response; // $results['data_payment'] = $dataPayment; // pr($results); if ($status == "SUCCESS") { return array("success" => 1, $results); } else { return array("success" => 0, $results); } // Generic::finish($results); }
public function initialCreditCard() { if (Efiwebsetting::getData('checkOAuth') == 'yes') { IMBAuth::checkOAuth(); } $res_token_id = Generic::mustCheck($_POST['res_token_id'], "No Token"); $res_pairing_code = Generic::mustCheck($_POST['res_pairing_code'], "No Pairing Code"); $invoice_no = Generic::mustCheck($_POST['invoice_no'], "No Invoice Id"); $device_id = Generic::mustCheck($_POST['device_id'], "No Device ID"); $dataWord = Generic::getOrDefault($_POST['data_word'], "No Data Word"); $dataEmail = Generic::mustCheck($_POST['res_data_email'], "No Data Email"); $dataPhone = Generic::mustCheck($_POST['res_data_mobile_phone'], "No Data Phone"); $dataName = Generic::mustCheck($_POST['res_name'], "No Data Name"); $initialAmount = Generic::getOrDefault(Efiwebsetting::getData('credit_card_initial_amount'), '0'); // $json = Generic::mustCheck($_POST['json'], "Param Required"); // $jResponse = json_decode($json, true); // // $res_token_id = $jResponse['res_token_id']; // $res_pairing_code = $jResponse['res_pairing_code']; // $invoice_no = $jResponse['invoice_no']; $idUser = Generic::mustCheck($_POST['id_user'], Keys::$ERR_NOT_FOUND_ID_USER); $user = new UserModel(); $user->getByID($idUser); Doku_Initiate::$sharedKey = "iMdRs8Iz987Z"; Doku_Initiate::$mallId = "3199"; $token = $res_token_id; $pairing_code = $res_pairing_code; $invoice_no = $invoice_no; $params = array('amount' => Generic::dokuMoneyValue($initialAmount), 'invoice' => $invoice_no, 'currency' => '360', 'pairing_code' => $pairing_code, 'token' => $token, 'device_id' => $device_id); $words = Doku_Library::doCreateWords($params); $basket[] = array('name' => 'initial payment', 'amount' => Generic::dokuMoneyValue($initialAmount), 'quantity' => '1', 'subtotal' => Generic::dokuMoneyValue($initialAmount)); $customer = array('name' => $user->full_name, 'data_phone' => $user->phone_no, 'data_email' => $user->email, 'data_address' => $user->district . ',' . $user->city); $dataPayment = array('req_mall_id' => Doku_Initiate::$mallId, 'req_chain_merchant' => 'NA', 'req_amount' => Generic::dokuMoneyValue($initialAmount), 'req_words' => $words, 'req_purchase_amount' => Generic::dokuMoneyValue($initialAmount), 'req_trans_id_merchant' => $invoice_no, 'req_request_date_time' => date('YmdHis'), 'req_currency' => '360', 'req_purchase_currency' => '360', 'req_session_id' => sha1(date('YmdHis')), 'req_name' => $customer['name'], 'req_payment_channel' => 15, 'req_basket' => $basket, 'req_email' => $customer['data_email'], 'req_token_id' => $token, 'req_customer_id' => $idUser, 'req_mobile_phone' => $customer['data_phone'], 'req_address' => $user->district . ',' . $user->city); $result = Doku_Api::doPayment($dataPayment); if ($result->res_response_code == '0000') { $status = "SUCCESS"; $result->res_bundle_token = json_decode($result->res_bundle_token, true); Util::saveUserPaymentDetails($result, $idUser); //success } else { $status = "FAILED"; //failed } $results['status'] = $status; $results['res_token_id'] = $token; $results['invoice_no'] = $invoice_no; $results['res_pairing_code'] = $res_pairing_code; $results['device_id'] = $device_id; $results['id_user'] = $idUser; $results['res_response_code'] = $result->res_response_code; $results['app_word'] = $dataWord; $results['server_word'] = $words; $results['word_match'] = $dataWord == $words; $results['doku_results'] = $result; $results['data_payment'] = $dataPayment; $results['my_payment'] = Util::getMyPayment($idUser); if ($status == "SUCCESS") { Generic::finish($results); } else { Generic::errorReturn("Failed Initiate", 0, $results); } }