Untitled
unknown
plain_text
a year ago
4.0 kB
5
Indexable
Never
<?php require_once 'engine/init.php'; protect_page(); if (!RequestMethodIsPost()) { exit; } if (!$config['pagarme']['enabled']) { exit; } function createPaymentData($package_id, $user_data, $success, $code, $price, $amount, $accountId, $server) { $data = array( "code" => $code, "customer" => array( "name" => $user_data['name'], "type" => "individual", "email" => $user_data['email'] ), "items" => array( array( "amount" => $price * 100, "description" => strval($amount) . " Taleon Coins", "quantity" => 1, "code" => "taleon_pg_" . $package_id ) ), "payments" => array( array( "amount" => $price * 100, "payment_method" => "checkout", "checkout" => array( "expires_in" => 600, "accepted_payment_methods" => array("credit_card", "pix", "boleto"), "success_url" => $success, "customer_editable" => true ), "credit_card" => array( "capture" => true, "operation_type" => "auth_and_capture", "statement_descriptor" => "Taleon" ), "boleto" => array( "instructions" => "Pay until due date.", "due_at" => date('d-m-Y',strtotime(' + 3 day', strtotime(date('Y-m-d')))), "document_number" => strval(rand(10000, 100000)) ), "pix" => array( "expires_in" => 600, "additional_information" => array( "name" => "Taleon Coins", "value" => strval($amount) ) ) ) ), "metadata" => array( "accountId" => $accountId, "server" => $server, "transactionId" => $code ) ); return $data; } function createOrder($package_id, $user_data, $secret, $price, $amount, $code, $accountId, $server, $success) { $data = json_encode(createPaymentData($package_id, $user_data, $success, $code, $price, $amount, $accountId, $server)); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://api.pagar.me/core/v5/orders", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $data, CURLOPT_FAILONERROR => true, CURLOPT_HTTPHEADER => array( "Accept: application/json", "Authorization: Basic ".base64_encode($secret.":"), "Content-Type: application/json" ), )); $response = curl_exec($curl); // Handle error if(curl_errno($curl)) { curl_close($curl); return false; } curl_close($curl); return $response; } $user = $user_data['id']; $amount = 0; $price = 0; $package_id = 1; foreach($config['pagseguro']['packages'] as $package) { if($package['price'] == intval($_POST['amount'])) { $amount = $package['amount']; $price = $package['price']; break; } $package_id += 1; } if($amount == 0 || $price == 0) { exit; } // Create order in database $order_code = md5(time()); mysql_insert("INSERT INTO znote_pagarme (account_id, transaction_id, price, points, created_at) VALUES (".$user_data['id'].", '".$order_code."', ".$price.", ".$amount.", NOW())"); // Create payment order and redirect $resp = createOrder($package_id, $user_data, $config['pagarme']['secret'], $price, $amount, $order_code, $user_data['id'], $config['pagarme']['server'], $config['pagarme']['return_url']); if(!$resp) { echo "Unable to create payment (response). Please contact an administrator"; return; } $data = json_decode($resp, true); if(!isset($data['checkouts'])) { echo "Unable to create payment (checkouts). Please contact an administrator"; return; } if(!isset($data['checkouts'][0]['payment_url'])) { echo "Unable to create payment (payment_url). Please contact an administrator"; return; } header("Location: " . $data['checkouts'][0]['payment_url']);