Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Adriano Barbosa

Inserir resultado JSON no MYSQL via PHP ou AJAX

Recommended Posts

Amigos,

 

Não tenho muito conhecimento de JSON e estou com um probleminha que é o seguinte.

 

Eu recupero as informações via JSON e preciso inserir essas informações no banco de dados e redirecionar.

 

Segue o script

 

var funcaoSucesso = function(data){
    alert('Sucesso\n' + JSON.stringify(data));				
    window.open(data.url);
}; 

 

Não sou especialista, mas sei que também podemos recuperar da seguinte forma e exibir no alert

 

alert(data.Mensagem + data.Status);

Sei que tem muito material em PHP utilizando o "encode" e "decode" mas o exemplo é sempre com a string já pronta, eu não consegui desenvolver essa string no script acima para poder interpretar no PHP e fazer a incluão.

 

Alguem pode me ajudar com isso? Só preciso de uma luz, não precisam me enviar tudo pronto.

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o formato q chega a string no php? posta ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu recebo da seguinte forma pelo JSON

{"Codigo":123,"Status":"OK","Mensagem":"Legal, funcionou"}

o que eu preciso é que o PHP receba essas variaveis da seguinte forma:

$codigo = 123;
$status = 'OK';
$mensagem = 'Legal, funcionou';

E pegar esse valor e inserir no MySql, pode ser até por Ajax, ou não, pq se eu tiver esse resultado em PHP nem precisa de inserção direta por AJAX.

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa json_decode(), essa string vai virar um objeto ou array, testa assim

 

http://php.net/manual/pt_BR/function.json-decode.php

 

 

$valor = json_decode('{"Codigo":123,"Status":"OK","Mensagem":"Legal, funcionou"}');

echo "<pre>";
print_r($valor);

echo $valor->Codigo   ."<br>";
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então shini, essa string é mostrada em um alert dessa forma:

var funcaoSucesso = function(data){
    alert('Sucesso\n' + JSON.stringify(data));				
    window.open(data.url);
}; 

Para eu usar o json_decode eu tenho que colocar essa string em uma variavel PHP correto? como vc mesmo citou no exemplo utilizando a variavel "$valor"

 

Sendo que vc já pegou o valor retornado pelo JSON que é exibido em um alert, como seria pegar esse valor que o JSON coloca em um alert mas em uma variavel PHP.

 

Algo como

var funcaoSucesso = function(data){
    $valor = JSON.stringify(data);				
    window.open(data.url);
}; 

Só que ai estamos declando a variavel $valor em javascritp correto? ai como eu pego esse valor para transformar em PHP?

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

da onde vem o parametro data?

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse data é q vc tem q passar pro php. tenta ai, se n conseguir posta o codigo todo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso, as informações da "data" que eu preciso recuperar pelo JSON e passar para o PHP, vou inserir o codigo completo, pq é muito grande.

 

É um codigo de pagamento para o MOIP

 

(function() {

	var jMoip;
	
	var falha = new Array();
	var errors = new Array();
	var indice = 0;
	var URL = "https://desenvolvedor.moip.com.br/sandbox";

	var requestUrl = window.location;
	
	if (window.jQuery === undefined) {
		var scriptTag = document.createElement('script');
	    scriptTag.setAttribute("type","text/javascript");
	    scriptTag.setAttribute("src", URL + "/scripts/jquery-1.7.min.js");
	    scriptTag.onload = scriptLoadHandler;
	    scriptTag.onreadystatechange = function () {

	        if (this.readyState == 'complete' || this.readyState == 'loaded') {
	        	scriptLoadHandler();
	        }
	    };
	    
	    (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(scriptTag);

	} else if(window.jQuery.fn.jquery <= '1.7') {
		
		var scriptTag = document.createElement('script');
	    scriptTag.setAttribute("type","text/javascript");
	    scriptTag.setAttribute("src", URL + "/scripts/jquery-1.7.min.js");
	    scriptTag.onload = scriptLoadHandler;
	    scriptTag.onreadystatechange = function () {

	        if (this.readyState == 'complete' || this.readyState == 'loaded') {
	        	scriptLoadHandler();
	        }
	    };
	    
		(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(scriptTag);
	    
	} else {
	    jMoip = window.jQuery;
		jMoip.getScript(URL + "/widget-fb/js/json2.js");
		jMoip.getScript(URL + "/scripts/util.js");
	}


	function scriptLoadHandler() {
	    jMoip = window.jQuery.noConflict(false);
		jMoip.getScript(URL + "/widget-fb/js/json2.js");
		jMoip.getScript(URL + "/scripts/util.js");
	}

	var MoipWidget = function(json) {

	jMoip(document).ready(function(jMoip) {
	    param = {  
			pagamentoWidget:{
				referer : requestUrl.href,
	        	token : jMoip("#MoipWidget").attr("data-token"),
	        	dadosPagamento: json
			}
	   };
	
	   var serviceUri = "/rest/pagamento?callback=?";

	   validarJson(param);
	
       if (errors.length > 0) {
    	   var callback_error = jMoip("#MoipWidget").attr("callback-method-error");
    	   __function = eval(callback_error); 
    	   if (typeof window.__function == "function") {
	    	   __function(errors);
	    	   errors = new Array();
	    	   return;
       	   }
       } 
       
       var conf = {	
			url: URL + serviceUri,
			type: "GET",
			dataType: "json",
            scriptCharset: "utf-8",
			async: true,
			data: {"pagamentoWidget":JSON.stringify(param)},
			headers:{
				"Content-Type": "application/json",
				"Accept": "application/json"
			},
			success: function(data){
				
				if(data.StatusPagamento == "Sucesso"){
					var callback_success = jMoip("#MoipWidget").attr("callback-method-success");
					setarToken(data);
		            eval(callback_success)(data);
				} else {
					var callback_error = jMoip("#MoipWidget").attr("callback-method-error");
			        eval(callback_error)(data);
				}
			}
       };
   	   jMoip.ajax(conf);
       
      });
    };
	
	//### validações do json ###
	validarJson = function(json) {

		var token = json.pagamentoWidget.token;
		var pagamento = json.pagamentoWidget.dadosPagamento;
		
		validarToken(token);
		validarFormaDePagamento(pagamento);
	};
	
	validarToken = function(token) {
		
		if(naoInformou(token)) {
			adicionarErro(914, "Informe o token da Instrução");
		}
	};
	
	validarFormaDePagamento = function(pagamento) {
		
		var forma = pagamento.Forma;
		
		if(!jMoip.isFunction(window["validar" + forma])) {
			adicionarErro(900, "Forma de pagamento inválida");
			return;
		}
		
		var fn = window["validar" + forma];
		fn(pagamento);
	};
	
	//### validações por forma de pagamento ###
	validarCartaoCredito = function(pagamento) {
		validarInstituicao(pagamento.Instituicao);
		validarParcelas(pagamento.Parcelas);
		validarPagamentoCartao(pagamento);
	};
	
	validarDebitoBancario = function(pagamento) {
		validarInstituicao(pagamento.Instituicao);
	};
	
	validarBoletoBancario = function(pagamento) {
	};
	
	//### validações dos dados de cartão de crédito ###
	validarPagamentoCartao = function(pagamento) {
		
		var cartao = pagamento.CartaoCredito;
		var cofre = pagamento.CartaoCredito.Cofre;
		var instituicao = pagamento.Instituicao;
		
		if (naoInformou(cartao)) {
			adicionarErro(905, "Informe os dados do cartão de crédito");
		}
		//cofre
		else if (informou(cofre)) {
			validarCofre(cartao, instituicao);
		//cartão de crédito
		} else {
			validarCartao(cartao, instituicao);
		}
	};
	
	validarInstituicao = function(instituicao) {
		
		if (naoInformou(instituicao)) {
			adicionarErro(901, "Informe a instituição de pagamento");
		}
	};
	
	validarCofre = function(cartao, instituicao) {
		
		var cofre = cartao.Cofre;
		var cvv = cartao.CodigoSeguranca;
		
		if (naoInformou(cofre)) {
			adicionarErro(913, "Informe o cofre a ser utilizado");
		}
		
		if (naoInformou(cvv)) {
			adicionarErro(907, "Informe o código de segurança do cartão");
		
		} else {
			var qtdCaracteres = String(cvv).length;
			
			if (isNaN(cvv)) {
				adicionarErro(907, "Código de segurança inválido");
			}
			else if (qtdCaracteres < 3 || qtdCaracteres > 4) {
				adicionarErro(907, "Código de segurança inválido");
			}
		}
	};
	
	validarCartao = function(cartao, instituicao) {
		
		var numero = cartao.Numero;
		
		if (informou(numero)) {
			cartao.Numero = String(numero).replace(/\D/g, "");
		}
		
		validarNumeroDoCartao(cartao, instituicao);
		validarCvv(cartao.CodigoSeguranca, instituicao);
		validarDataDeExpiracao(cartao.Expiracao);
		validarPortador(cartao.Portador);
	};
	
	validarNumeroDoCartao = function(cartao, instituicao) {
		
		var numero = cartao.Numero;
		
		if (naoInformou(numero)) {
			adicionarErro(905, "Informe o número do cartão");
		
		} else {
			var qtdCaracteres = String(numero).length;
			
			if (instituicao == "Visa" && qtdCaracteres != 16) {
				adicionarErro(905, "Número de cartão inválido");
			}
			else if (instituicao == "Mastercard" && qtdCaracteres != 16) {
				adicionarErro(905, "Número de cartão inválido");
			}
			else if (instituicao == "AmericanExpress" && (qtdCaracteres < 15 || qtdCaracteres > 16)) {
				adicionarErro(905, "Número de cartão inválido");
			}
			else if (instituicao == "Diners" && qtdCaracteres != 14) {
				adicionarErro(905, "Número de cartão inválido");
			}
			else if (instituicao == "Hipercard" && (qtdCaracteres < 13 || qtdCaracteres > 19 || qtdCaracteres == 17 ||qtdCaracteres == 18)) {
				adicionarErro(905, "Número de cartão inválido");
			}
		}
	};
	
	validarCvv = function(cvv, instituicao) {
		
		if (naoInformou(cvv)) {
			adicionarErro(907, "Informe o código de segurança do cartão");
		
		} else {
			var qtdCaracteres = String(cvv).length;
			
			if (isNaN(cvv)) {
				adicionarErro(907, "Código de segurança inválido");
			}
			else if (instituicao == "AmericanExpress" && qtdCaracteres != 4) {
				adicionarErro(907, "Código de segurança inválido");
			}
			else if (instituicao != "AmericanExpress" && qtdCaracteres != 3) {
				adicionarErro(907, "Código de segurança inválido");
			}
		} 
	};
	
	validarParcelas = function(parcelas){
	
		if (naoInformou(parcelas)) {
			adicionarErro(902, "Informe a quantidade de parcelas");
		
		} else if (isNaN(parcelas) || parcelas < 1 || parcelas > 12){
				adicionarErro(902, "Quantidade de parcelas deve ser entre 1 e 12");
		}
	};
	
	validarPortador = function(portador){
		
		if (naoInformou(portador)) {
			adicionarErro(908, "Informe os dados do portador do cartão");
		
		} else {
			if (naoInformou(portador.Nome)) {
				adicionarErro(909, "Informe o nome do portador como está no cartão");
			}
			
			if(naoInformou(portador.DataNascimento)) {
				adicionarErro(910, "Informe a data de nascimento do portador");

			} else if(!dataDeNascimentoEhValida(portador.DataNascimento)) {
				adicionarErro(910, "Data de nascimento do portador deve estar no formato DD/MM/AAAA");
			}
			
			if(naoInformou(portador.Telefone)) {
				adicionarErro(911, "Informe o telefone do portador");
				
			} else if(!telefoneEhValido(portador.Telefone)) {
				adicionarErro(911, "O telefone do portador é inválido");
			}
			
			if(naoInformou(portador.Identidade)) {
				adicionarErro(912, "Informe o CPF do portador");
			
			} else if(!cpfEhValido(portador.Identidade)) {
				adicionarErro(912, "O CPF do portador inválido");
			}
		}
	};
	
	telefoneEhValido = function(telefone) {

		telefone = String(telefone).replace(/\D/g, "");
		
		if (telefone.length < 8) {
			return false;
		}
		return true;
	};
	
	cpfEhValido = function(cpf) {
		
		cpf = String(cpf).replace(/\D/g, "");
		
	    if (cpf.length != 11) {
	          return false;
	    }
    	return true;
    };
	
	dataDeNascimentoEhValida = function(data) {
    	
		barras = data.split("/");
		if (barras.length == 3) {
	        dia = barras[0];
	        mes = barras[1];
	        ano = barras[2];
	        
	        if(!diaEhValido(dia) || !mesEhValido(mes) || !anoEhValido(ano)) {
	        	return false;
	        
	        } else {
	        	return true;
	        }
		}
		return false;
    };
    
	validarDataDeExpiracao = function(data) {
		
		var dataDeExpiracao = String(data);
		
		if(naoInformou(dataDeExpiracao)) {
			adicionarErro(906, "Informe a data de expiração do cartão");
			
		} else if(dataDeExpiracao.indexOf("/") < 0) {
			adicionarErro(906, "Data de expiração deve estar no formato 'MM/AA'");
			return;

		} else {
			partes = dataDeExpiracao.split("/");
			
			if(partes.length == 2) {
				mes = partes[0];
				ano = partes[1];
				
				if (!mesEhValido || !anoEhValido) {
					adicionarErro(906, "Data de expiração deve estar no formato 'MM/AA'");
				}
			} else {
				adicionarErro(906, "Data de expiração deve estar no formato 'MM/AA'");
			}
		}
	};
	
	diaEhValido = function(dia) {
    	return !isNaN(dia) && dia >= 1 && dia <= 31;
    };
    
    mesEhValido = function(mes) {
    	return !isNaN(mes) && mes >= 1 && mes <= 12;
    };
    
    anoEhValido = function(ano) {
    	return !isNaN(ano) && ano.length == 4;
    };
    
    informou = function(dado) {
    	return !naoInformou(dado);
    };
	
    naoInformou = function(dado) {
    	return dado == undefined || String(dado) == '';
    };

    setarToken = function(data) {
		data["url"] = URL + "/Instrucao.do?token=" + jMoip("#MoipWidget").attr("data-token");
	};
	
	adicionarErro = function(codigoErro, mensagemErro) {
		var erro = {
			Codigo: codigoErro,
			Mensagem: mensagemErro
		};
		errors.push(erro);
	};
	
	var parcelamento;
	var MoipUtil = { 
			calcularParcela: function(settings) {
				parcelamento = settings;
				var request = { "token": jMoip("#MoipWidget").attr("data-token"), "instituicao" : parcelamento.instituicao };
				var conf = {	
						url: URL + "/rest/pagamento/consultarparcelamento?callback=?",
						type: "GET",
						dataType: "json",
                        scriptCharset: "utf-8",
						async: true,
						data: request,
						headers:{
							"Content-Type": "application/json",
							"Accept": "application/json"
						},
						success: function(data){
							eval(parcelamento.callback)(data);
						}
		    	   };
				jMoip.ajax(conf);
			}
	};
	
	window.MoipWidget = MoipWidget;
	window.MoipUtil = MoipUtil;

})();

Compartilhar este post


Link para o post
Compartilhar em outros sites

crie um iput hidden para cada valor do data ai vc consegue enviar para o php.

 

 

document.getElementById('codigo').value = data.codigo;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Shini,

 

Estou quase fechando isso... mas um help pode ser?

 

Tenho esse script, estou enviando para um outro arquivo, ele chega a enviar, mas insere tudo em branco

var funcaoSucesso = function(data){
  var postData = JSON.stringify(data);
				 
  $.ajax({					
	type: "POST",
	dataType: "json",
	url: "insert.php",
	data: postData,
	success: function(data){
	  alert('enviou');
	}
   });
                
 alert('Sucesso\n' + JSON.stringify(data));				
}; 

Veja o PHP

<? include "../conexao.php";

$postData = $_GET['postData'];

$dados = json_decode($postData);
$Status = $dados->Status;
$Codigo = $dados->CodigoMoIP;

$insert = mysql_query("INSERT INTO teste (codigo, status) VALUES ('$Codigo', '$Status') ");
exit;

?>

O que pode ser?

inserindo eu sei que está, mas com valores em branco

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho q vc deve enviar pelo $_POST e não pelo $_GET

 

 

 

 $.ajax({ type: "POST",
 

$_GET['postData']; 

Compartilhar este post


Link para o post
Compartilhar em outros sites

já fiz isso

 

tentei receber por POST, REQUEST e GET

 

e nada, insere o registro em branco

 

alguma outra ideia?

rapaz... estou precisando muito resolver esse problema, estou o dia todo pesquisando ja visitei uma penca de sites



qual o correto?

 

type: "POST" ou method: "POST" ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque <? por <?php

 

imprima o valor de de $_GET e $_POST, posta ai o resultado.

 

 

echo"<pre>";
print_r($_POST);
 
echo"<pre>";
print_r($_GET);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.