comprei um formulário de pagamento via pix através do mercadopago no qual a pessoa q me vendeu não me da suporte algum e to quase uma semana quebrando cabeça com isso.
ao clicar em gerar pix não há efeito algum.
<?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(E_ALL);/**
* Automatic Mercadopago payment system gateway.
*
* @name pix-myaac-mercadopago
* @author Rafhael Oliveira <rafhaelxd@gmail.com>
* @website github.com/thetibiaking/ttk-myaac-plugins
* @website github.com/underewarrr/
* @version 1.0.0
*/
require_once('/var/www/html/classes/functions.php');
require_once('/var/www/html/system/load.init.php');
require_once('/var/www/html/mercadopago/pix/config.php');if(isset($config['mercadopago'])&& $config['mercadopago']=true){}else{
echo "MercadoPago is disabled. If you're an admin please configure this script in config.local.php.";return;}if(empty($logged)){
header("Location: ". $noSessionUrl);exit;}if($_SERVER['REQUEST_METHOD']==='POST'){// Verifica se os dados foram enviados via POST// Caminho relativo para o arquivo config.php
$quantidadeSelecionada =(int)$_POST['quantidade'];
$cpf = $_POST['cpf'];// Validate CPFif(!validateCPF($cpf)){
echo '<p>CPF inválido. Por favor, verifique e tente novamente.</p>';exit;}
$totalValue = $quantidadeSelecionada * $priceByPoints;
$pontosGanhos = $quantidadeSelecionada * $pointsByDonate;
$curl = curl_init();
$dados["transaction_amount"]= $totalValue;
$dados["description"]= $_POST['description']?:'Value and Coins';
$dados["external_reference"]="2";
$dados["payment_method_id"]="pix";
$dados["notification_url"]= $notificationUrl;
$dados["payer"]["email"]= $_POST['email_cob'];
$dados["payer"]["first_name"]="Nilza";
$dados["payer"]["last_name"]="Guimaraes";
$dados["payer"]["identification"]["type"]="CPF";
$dados["payer"]["identification"]["number"]= $cpf;
$dados["payer"]["address"]["zip_code"]="76240000";
$dados["payer"]["address"]["street_name"]="Av. Carlos Gomes";
$dados["payer"]["address"]["street_number"]="411";
$dados["payer"]["address"]["neighborhood"]="Bela Vista";
$dados["payer"]["address"]["city"]="Aragarcas";
$dados["payer"]["address"]["federal_unit"]="GO";
curl_setopt_array($curl, array(
CURLOPT_URL =>'https://api.mercadopago.com/v1/payments',
CURLOPT_RETURNTRANSFER =>true,
CURLOPT_CUSTOMREQUEST =>'POST',
CURLOPT_POSTFIELDS => json_encode($dados),
CURLOPT_HTTPHEADER => array('accept: application/json','content-type: application/json','Authorization: Bearer '. $authorizationToken,),));
$response = curl_exec($curl);
$resultado = json_decode($response);
$collector_id = isset($resultado->id)? $resultado->id :null;
curl_close($curl);// Display full response for debugging if debug is enabledif($debug){
echo '<pre>';
var_dump($resultado);
echo '</pre>';}// Check if collector_id is presentif(!$collector_id){
echo '<p>Error: Collector ID not found in the response.</p>';exit;}
echo 'Collector ID: '. $collector_id;// Verifica se a resposta foi bem-sucedida antes de exibir o QR Codeif($resultado->status ==='pending'){// Exibe o QR Code e o código apenas se o debug estiver desativadoif(!$debug){
echo '<img style="display:block; width:300px;height:300px;" id="base64image" src="data:image/jpeg;base64, '. $resultado->point_of_interaction->transaction_data->qr_code_base64 .'" />';
echo '<b>Copie:</b> '. $resultado->point_of_interaction->transaction_data->qr_code;}// Exibe os pontos ganhos
echo '<p>Você gerou um pix no valor de '.$totalValue.'R$ e '. $pontosGanhos .' pontos!</p>';
echo '<p>Ao Pagar você recebera seus pontos automaticamente</p>';
echo '<p>Status: '. $resultado->status .'</p>';
echo '<button onclick="location.href=\'https://meusite.com/?subtopic=mpnotification&id='. $collector_id .'&debug='.($debug ?'true':'false').'\'" type="button">Conferir Status do Pedido</button> <br>';// Ação no banco de dados (se necessário)
$logged = getSession('account');
$sql ="INSERT INTO status(status, codigo, account, points) VALUES(?, ?, ?, ?)";
$stmt = mysqli_prepare($conexao, $sql);// Check if the statement was prepared successfullyif($stmt){// Assuming $logged and $pontosGanhos are defined elsewhere in your code// Bind parameters with data types
mysqli_stmt_bind_param($stmt,"sssi", $resultado->status, $collector_id, $logged, $pontosGanhos);// Execute the statement
mysqli_stmt_execute($stmt);// Check for successful executionif(mysqli_stmt_affected_rows($stmt)>0){
echo "Record inserted successfully";}else{
echo "Error inserting record";}// Close the statement
mysqli_stmt_close($stmt);}else{
echo "Error preparing statement: ". mysqli_error($conexao);}}else{
echo '<p>Erro ao processar o pagamento. Tente novamente.</p>';// Display error message, if availableif(isset($resultado->message)){
echo '<p>Error Message: '. $resultado->message .'</p>';}// Display status for further analysis
echo '<p>Status: '. $resultado->status .'</p>';}}else{// Formulário para preenchimento dos dados
echo '
<form method="POST">
<label for="quantidade">Quantidade de Doações:</label>
<select name="quantidade" id="quantidade" required>
<option value="1">1 - R$25,00 (60 pontos)</option>
<option value="2">2 - R$50,00 (120 pontos)</option>
<option value="3">3 - R$75,00 (180 pontos)</option>
<!-- Adicione mais opções conforme necessário -->
</select>
<br>
<label for="description">Descrição:</label>
<input type="text" name="description" id="description" placeholder="Write any description" required>
<br>
<label for="email_cob">Email do Pagador:</label>
<input type="email" name="email_cob" id="email_cob" required>
<br>
<label for="cpf">CPF do Pagador:</label>
<input type="text" name="cpf" id="cpf" required>
<br>
<button type="submit">Gerar Pix</button>
</form>
';}// Simple CPF validation functionfunction validateCPF($cpf){// Remove any non-numeric characters
$cpf = preg_replace('/[^0-9]/','', $cpf);// Check if CPF has 11 digitsif(strlen($cpf)!=11){returnfalse;}// Validate CPF using basic algorithm
$sum =0;for($i =0; $i <9; $i++){
$sum +=(int)$cpf[$i]*(10- $i);}
$remainder = $sum %11;
$digit =($remainder <2)?0:11- $remainder;if((int)$cpf[9]!= $digit){returnfalse;}
$sum =0;for($i =0; $i <10; $i++){
$sum +=(int)$cpf[$i]*(11- $i);}
$remainder = $sum %11;
$digit =($remainder <2)?0:11- $remainder;if((int)$cpf[10]!= $digit){returnfalse;}returntrue;}?>
<?php
/**
* Automatic Mercadopago payment system gateway.
*
* @name pix-myaac-mercadopago
* @author Rafhael Oliveira <rafhaelxd@gmail.com>
* @website github.com/thetibiaking/ttk-myaac-plugins
* @website github.com/underewarrr/
* @version 1.0.0
*/
require_once('/var/www/html/classes/functions.php');
require_once('/var/www/html/system/load.init.php');
require_once('/var/www/html/mercadopago/pix/config.php');// Set debug mode based on the query parameter // use debug true in url to get more infos
$debug = isset($_REQUEST['debug'])&& $_REQUEST['debug']==='true';// Verify if the collector_id is present in the requestif(isset($_REQUEST['id'])){
$collector_id = $_REQUEST['id'];// Initialize cURL
$curl = curl_init();// Set cURL options
curl_setopt_array($curl, array(
CURLOPT_URL =>'https://api.mercadopago.com/v1/payments/'. $collector_id,
CURLOPT_RETURNTRANSFER =>true,
CURLOPT_CUSTOMREQUEST =>'GET',
CURLOPT_HTTPHEADER => array('accept: application/json','content-type: application/json','Authorization: Bearer '. $authorizationToken,),));// Execute cURL request
$response = curl_exec($curl);// Check if cURL request was successfulif($response ===false){// Handle cURL error
echo 'Error fetching payment details from Mercado Pago API.';if($debug){
echo '<br>Debug Mode: ON';
echo '<br>Status from Mercado Pago API: '. $resultado->status;
echo 'Total Paid Amount or Transaction Amount: '. $resultado->transaction_amount * $conversionRate;
echo '<br>Status from Mercado Pago API: <pre>'. print_r($resultado,true).'</pre>';
echo '<br>CURL Error: '. curl_error($curl);}}else{// Decode the JSON response
$resultado = json_decode($response);// Check if the payment status is 'approved' or 'paid'// Check if the payment status is approved or paid// Check if the payment status is approved or paidif($resultado->status ==='approved'|| $resultado->status ==='paid'){// Check if the payment has already been processed
$check_processed ="SELECT processed FROM status WHERE codigo = ?";
$stmt_check = mysqli_prepare($conexao, $check_processed);
mysqli_stmt_bind_param($stmt_check,"i", $collector_id);
mysqli_stmt_execute($stmt_check);
mysqli_stmt_bind_result($stmt_check, $processed);
mysqli_stmt_fetch($stmt_check);
mysqli_stmt_close($stmt_check);if($processed ===0|| $processed ===null){// Payment not processed yet// Mark the payment as processed
$update_processed ="UPDATE status SET processed = 1 WHERE codigo = ?";
$stmt_processed = mysqli_prepare($conexao, $update_processed);
mysqli_stmt_bind_param($stmt_processed,"i", $collector_id);
mysqli_stmt_execute($stmt_processed);
mysqli_stmt_close($stmt_processed);
$new_status_value ='delivered';// Here's the additional update query for the status column in the status table
$update_status ="UPDATE status SET status = ? WHERE codigo = ?";
$stmt_status = mysqli_prepare($conexao, $update_status);
mysqli_stmt_bind_param($stmt_status,"si", $new_status_value, $collector_id);// Replace $new_status_value with the appropriate value
mysqli_stmt_execute($stmt_status);
mysqli_stmt_close($stmt_status);// Calculate premium points based on total_paid_amount and conversion rate
$conversionValue = $resultado->transaction_amount * $conversionRate;// Get the current session account
$logged = getSession('account');// Update the accounts table with premium points using prepared statement
$update_accounts ="UPDATE accounts SET $donationType = $donationType + ? WHERE id = ?";
$stmt_accounts = mysqli_prepare($conexao, $update_accounts);// Check if the statement for accounts table was prepared successfullyif($stmt_accounts){// Bind parameters with data types for accounts table
mysqli_stmt_bind_param($stmt_accounts,"di", $conversionValue, $logged);// Execute the statement for accounts table
mysqli_stmt_execute($stmt_accounts);// Check for successful execution for accounts tableif(mysqli_stmt_affected_rows($stmt_accounts)>0){
echo "Premium points updated successfully in accounts table";}else{
echo "Error updating premium points in accounts table";}// Close the statement for accounts table
mysqli_stmt_close($stmt_accounts);}else{
echo "Error preparing statement for accounts table: ". mysqli_error($conexao);}}else{
echo 'Payment already processed.';}}else{
echo 'Payment status is not "approved" or "paid". No database update performed.';}if($debug){
echo '<br>Debug Mode: ON';
echo '<br>Status from Mercado Pago API: '. $resultado->status;
echo 'Total Paid Amount or Transaction Amount: '. $resultado->transaction_amount * $conversionRate;
echo '<br>Status from Mercado Pago API: <pre>'. print_r($resultado,true).'</pre>';
echo '<br>CURL Error: '. curl_error($curl);}}// Close cURL
curl_close($curl);}else{
echo 'Invalid or missing collector_id in the request.';if($debug){
echo '<br>Debug Mode: ON';// Add more debug information as needed}}?>
Vocês já tiveram problemas ao lidar com pagamentos do exterior? Temos uma mensagem do nosso parceiro, o Remessa Online, que criou uma ótima solução para desenvolvedores receber do exterior.
A gente sabe que a cada dia cresce o número de devs trabalhando para empresas gringas. Por conta da pandemia e a necessidade de digitalização do trabalho, essa demanda aumentou muito.
O problema é que nem todo mundo sabe como funciona o processo de pagamento de salário, e quem já vive essa realidade sofre com a demora, a burocracia e taxas altíssimas.
Só para vocês terem uma noção, qualquer transação do exterior nos bancos tradicionais leva de 3 a 5 dias úteis. Além disso, o custo por transação varia entre 5 a 11% sobre o pagamento. É caro demais!
Porém, já existe uma forma mais fácil e econômica de efetuar qualquer tipo de remessa internacional. É por isso que abrimos este tópico!
A plataforma da REMESSA ONLINE soluciona tudo isso. Ela ajuda você a enviar/receber dinheiro de forma ágil e segura.
A ideia nasceu em 2016 e já facilitou a vida de mais de 350 mil pessoas. Além de ser 100% digital, o pagamento cai em até 1 dia útil e o custo por transação a partir de 1,3%. Sem burocracia e sem letras miúdas.
Veja o que a Remessa também pode fazer por você:
• Investir no exterior;
• Pagar cursos de fora;
• Horário de atendimento estendido, das 9h às 20h;
• Atendimento multicanal (telefone, chat, site e WhatsApp);
• Transparência total, pois você sabe exatamente quanto vai pagar desde o momento de cadastro.
• Receber via GoogleAdsense e Twitch (se você também é streamer ou produtor de conteúdo).
É hora de desburocratizar o sistema. Nós ajudamos empresas e pessoas a fazerem transações internacionais com rapidez e inovação.
Provavelmente vocês ainda terão dúvidas sobre como funciona! Na página da Remessa vocês podem ter mais informações: https://lp.remessaonline.com.br/receba-do-exterior.
Vocês já tiveram problemas ao lidar com pagamentos do exterior? Temos uma mensagem do nosso parceiro, o Remessa Online, que criou uma ótima solução para desenvolvedores receber do exterior.
A gente sabe que a cada dia cresce o número de devs trabalhando para empresas gringas. Por conta da pandemia e a necessidade de digitalização do trabalho, essa demanda aumentou muito.
O problema é que nem todo mundo sabe como funciona o processo de pagamento de salário, e quem já vive essa realidade sofre com a demora, a burocracia e taxas altíssimas.
Só para vocês terem uma noção, qualquer transação do exterior nos bancos tradicionais leva de 3 a 5 dias úteis. Além disso, o custo por transação varia entre 5 a 11% sobre o pagamento. É caro demais!
Porém, já existe uma forma mais fácil e econômica de efetuar qualquer tipo de remessa internacional. É por isso que abrimos este tópico!
A plataforma da REMESSA ONLINE soluciona tudo isso. Ela ajuda você a enviar/receber dinheiro de forma ágil e segura.
A ideia nasceu em 2016 e já facilitou a vida de mais de 350 mil pessoas. Além de ser 100% digital, o pagamento cai em até 1 dia útil e o custo por transação a partir de 1,3%. Sem burocracia e sem letras miúdas.
Veja o que a Remessa também pode fazer por você:
• Investir no exterior;
• Pagar cursos de fora;
• Horário de atendimento estendido, das 9h às 20h;
• Atendimento multicanal (telefone, chat, site e WhatsApp);
• Transparência total, pois você sabe exatamente quanto vai pagar desde o momento de cadastro.
• Receber via GoogleAdsense e Twitch (se você também é streamer ou produtor de conteúdo).
É hora de desburocratizar o sistema. Nós ajudamos empresas e pessoas a fazerem transações internacionais com rapidez e inovação.
Provavelmente vocês ainda terão dúvidas sobre como funciona! Na página da Remessa vocês podem ter mais informações: https://lp.remessaonline.com.br/receba-do-exterior.
Boa noite! gente, eu estou tentando colocar alguma forma de pagamentos no meu app, no caso para que o usuario possa adicionar credito ao mesmo, eu estou fazendo isso com a api da JUNO, porem, tambem quero adicionar PIX como forma de pagamento pois não saio do zero com a juno! alguem aqui ja usou PIX com android studio e pode me explicar como fazer? ja busquei por aulas e tutoriais e nada... Grato!
Olá pessoal, recentemente eu venho desenvolvendo um app para pagamentos/cartões pré-pago, e estou procurando alguma empresa/api que forneça um serviço apara emissão de cartões pré-pagos (e que seja possível customizar os cartões: por a minha própria logo, etc), alguém pode me informar alguma empresa que faz isso aqui no brasil? Já encontrei soluções como stripe mas eles não oferecem esse serviço para o brasil?
Boa noite a todos,
comprei um formulário de pagamento via pix através do mercadopago no qual a pessoa q me vendeu não me da suporte algum e to quase uma semana quebrando cabeça com isso.
ao clicar em gerar pix não há efeito algum.
Share this post
Link to post
Share on other sites