Jump to content
wneo

Ajuda na integração PHP+Pagseguro

Recommended Posts

Olá!

Alguém já integrou pagseguro com php de forma transparente?

Acho um pouco complicado...

Estou tentando com o arquivo sugerido no dev.pagseguro que pode ser baixado nesse link: exemplo-pagseguro

Nesse exemplo tem uma página de pagamento. Quero fazer algo com essa idéia.. porém diferente do que tem aí, que é adicionar os ítens ao carrinho com formulário.. Na realidade, quero que em uma tela anterior, clicar na foto do produto, depois escolher quantidade e mais detalhes, para daí então chegar nessa página de exemplo já com os valores prontos para serem pagos..

 

E o outro detalhe, é que não consigo gerar o pagamento nem em boleto... já coloquei e-mail e token do sandbox, mas fica somente com a mensagem de aguardando, e nada acontece.. =/

 

Então são 2problemas.... 1° é a idéia de uso que quero modificar, e o 2° é que não finaliza nenhum pagamento...

Para o 1°, preciso compartilhar um zip com os códigos para vcs entrarem na idéia...

Para o 2° pode ser visto direto no exemplo original...

 

Alguém ajuuuuuuuuuda...

Share this post


Link to post
Share on other sites

Dessa forma, eu nunca usei, eu já usei o PagSeguro UOL, fazendo o login nele, para criar um botão dentro dele, para cobrar algo de alguém.  O email que eles atendem é o faleconosco@uol.com.br 

 

  • +1 2

Share this post


Link to post
Share on other sites

No link abaixo há um pouco da informação.

 

A parte javascript deve ser feita a parte.

  • +1 1

Share this post


Link to post
Share on other sites

Sem ter conhecimento intermediário de JS, é quase impossível trabalhar com checkout Transparente.

 

Vê se te ajuda como base, já que está praticamente pronto.

https://github.com/lubuzzo/checkout-transparente-PagSeguro

  • +1 2

Share this post


Link to post
Share on other sites

Tudo é exemplo, quem tem que implementar o que quer, é você!

Ou acha que é como ir em uma alfaiataria, sob medida para você?

  • +1 1
  • -1 1

Share this post


Link to post
Share on other sites
26 minutos atrás, Williams Duarte disse:

Tudo é exemplo, quem tem que implementar o que quer, é você!

Ou acha que é como ir em uma alfaiataria, sob medida para você?

Não.. 

Por isso que estou conversando com quem já fez ou tem vontade de ver como funciona..

Quem tiver vontade e algo para agregar pode postar aqui.

Disponibilizei o código que já iniciei, para quem quiser ajudar poder visualizar a idéia.

Share this post


Link to post
Share on other sites

Naquele dia, a página do desenvolvedor do PagSeguro UOL  estava desativada, hoje vi que voltou a funcionar.

 

https://dev.pagseguro.uol.com.br/documentacao/pagamentos

 

Guia de Integração = https://dev.pagseguro.uol.com.br/

 

 

  • +1 3

Share this post


Link to post
Share on other sites
Em 06/05/2017 at 14:49, Ana Gauna disse:

Naquele dia, a página do desenvolvedor do PagSeguro UOL  estava desativada, hoje vi que voltou a funcionar.

 

https://dev.pagseguro.uol.com.br/documentacao/pagamentos

 

Guia de Integração = https://dev.pagseguro.uol.com.br/

 

 

Sim, esse é o guia de integração oficial...

Tem bastante coisa, mas como toda integração de API, tem seu nível de complexidade e muitas vezes demorado sendo a primeira utilização.. =/

Lendo esse guia e outros conteúdos, montei essa parte, que pode ser baixada aqui:

https://github.com/WPG2000/pagseguro-transparente-php

 

E sigo no desafio de fazer uma boa integração transparente, como mencionei no primeiro post...

 

Seguindo minha necessidade, preciso:

1 - Ter a foto dos produtos com sua descrição em uma pagina;

2 - Ao clicar no produto, abrir uma tela com mais detalhes, para o usuário escolher quantidade e demais itens conforme tipo de produto;

3 - Ao definir isso, ser direcionado a uma nova tela, onde carrega no carrinho o que o usuário quer comprar, e o formulário para dados do comprador. Podendo assim, escolher forma de pagamento e gerar o mesmo...(boleto ou cartões)...

 

* O 1 e 2 já estão acontecendo na idéia que montei...

* O 3 ainda está no desafio...

* Quem puder compartilhar alguma idéia, pode baixar o código...

Share this post


Link to post
Share on other sites
50 minutos atrás, Guilherme Luiz disse:

Cara, pagseguro, particularmente, achei complexa a integração...

Hoje utilizo a do Gerencianet em meu site para boletos e cartões... muito mais facil a integração e taxas melhores. 

 

vale a pena conferir.

Olá Guilherme!

Vou ver essa opção enquanto tento desvendar o pagseguro...

Quem tiver mais idéias pode compartilhar, ainda estou na busca da integração perfeita...

Share this post


Link to post
Share on other sites
2 minutos atrás, wneo disse:

[...]ainda estou na busca da integração perfeita...

 

Vai morrer esperando... Não existe isso. Todas terão seus prós e contras.

 

Se está tendo alguma dificuldade em implementar, traga sua dificuldade, mostre-nos aonde você parou. Evite usar links de códigos externos quando o fórum provê essa facilidade.

  • +1 1
  • -1 1

Share this post


Link to post
Share on other sites
11 minutos atrás, Gabriel Heming disse:

Vai morrer esperando... Não existe isso. Todas terão seus prós e contras.

 

Se está tendo alguma dificuldade em implementar, traga sua dificuldade, mostre-nos aonde você parou. Evite usar links de códigos externos quando o fórum provê essa facilidade.

 

Nesse link tem o código que eu montei para ser baixado e acompanhar a idéia:

https://github.com/WPG2000/pagseguro-transparente-php

 

*Como existe uma estrutura de modelo que montei, acredito ser melhor ter o código em mãos para quem quiser ajudar ter mais facilidade de entender, daí então falamos sobre trechos específicos.

 

*Com relação a trazer minha dificuldade.. em post anterior apresentei:

 

Seguindo minha necessidade, preciso:

1 - Ter a foto dos produtos com sua descrição em uma pagina;

2 - Ao clicar no produto, abrir uma tela com mais detalhes, para o usuário escolher quantidade e demais itens conforme tipo de produto;

3 - Ao definir isso, ser direcionado a uma nova tela, onde carrega no carrinho o que o usuário quer comprar, e o formulário para dados do comprador. Podendo assim, escolher forma de pagamento e gerar o mesmo...(boleto ou cartões)...

 

* O 1 e 2 já estão acontecendo na idéia que montei...

* O 3 ainda está no desafio...

* Quem puder compartilhar alguma idéia, pode baixar o código...

 

- Com relação a prós e contras de integrações.. sim sabemos que existem inúmeras.

- Procurei o fórum para compartilhar a idéia e encontrar quem já fez ou tem vontade de fazer, colaborar com a solução contribuindo com sua própria evolução de conhecimento e dos demais assim como eu.

 

 

 

Share this post


Link to post
Share on other sites

Reforço, traga seu código para o post. Por N aspectos.

 

- Links externos, apesar de poderem ter informações importantes, podem se perder com o tempo, tornando inválida toda uma discussão;

- O fórum não perderá as informações que nele constar;

- Não é nada confiável baixar um arquivo compactado;

- A maioria dos usuários que poderiam te ajudar, vão te ignorar pelo simples fato de ter que baixar um arquivo.

 

  • +1 1
  • -1 1

Share this post


Link to post
Share on other sites
22 minutos atrás, Gabriel Heming disse:

Vai morrer esperando... Não existe isso. Todas terão seus prós e contras.

Quando ele chegar na parte do Bug do PagSeguro para parcelamentos então. Morre, pois ja esta apanhando em implementação Básicas de carrinho de compras, que é o desafio que ele fala!

 

14 minutos atrás, wneo disse:

* Quem puder compartilhar alguma idéia, pode baixar o código...

Quem vai baixar código rapaz, se quer usar o GitHub, começa estudando como ele funciona para atrair contribuidores para seu projeto.

O que te falta é estudar sobre Requisitos, HTML+Javascript, pois checkout transparente nada mais é, do que uma pagina de finalizar pedido com eventos em Javascript.

  • +1 1
  • -1 1

Share this post


Link to post
Share on other sites

Na realidade tudo já está pronto:

https://comunidade.pagseguro.uol.com.br/hc/pt-br/community/posts/220126928-Exemplo-de-Checkout-Transparente

 

Além disso, tem a explicação com os exemplos (que até onde me lembro, estão funcionais) na outra página do manual:

https://dev.pagseguro.uol.com.br/documentacao/pagamentos/pagamento-transparente

  • +1 1
  • -1 1

Share this post


Link to post
Share on other sites

Certo pessoal...

Seguindo então com base nos últmos posts de Gabriel, Williams e ESerra.

- Coloquei os arquivos no github sem rar.

https://github.com/WPG2000/pagseguro-transparente-php

 

- O desafio de um modo geral, é ter a integração completa funcionando, de inicio o pagseguro me parecia um bom recurso, no entanto receber mais ideias me atrai muito, assim como a do Guilherme, que falou sobre o gerencianet. Considero ideal o contexto colaborativo de uma idéia, para evolução mútua de quem frequenta e procura o forum, mantendo os questionamentos e respostas em um nível didático, no entanto cada um tem sua liberdade de expressão, embora nem sempre agreguem com algo de valor a todos.

 

- Fazendo um resumo então da necessidade atual.. considerando os posts anteriores em que já a apresentei... e mencionando a orientação correta de Gabriel, e também do ESerra:

-  A idéia que montei, e para facilitar o entendimento, está dividida em 3 partes:

 

1 - Ter a foto dos produtos com sua descrição em uma pagina;

2 - Ao clicar no produto, abrir uma tela com mais detalhes, para o usuário escolher quantidade e demais itens conforme tipo de produto;

3 - Ao definir isso, ser direcionado a uma nova tela, onde carrega no carrinho o que o usuário quer comprar, e o formulário para dados do comprador. Podendo assim, escolher forma de pagamento e gerar o mesmo...(boleto ou cartões)...

 

* O 1 e 2 já estão acontecendo na idéia que montei...

* Originalmente nessa idéia com o material do pagseguro, o ítem 3, era uma pagina onde havia um recurso de adicionar os items, que seriam os produtos e ao lado dados do comprador e forma de pagamento.

* Quero modificar isso, fazendo de um modo onde chegando nessa página, o produto já esteja selecionado com suas especificações escolhidas pelo cliente, e então possa ser finalizada a compra.

* Persistir os dados até esse momento, já está acontecendo, pode ser visualizado no projeto para download... Gostaria então, de resgatar ele nesse contexto de código que vem do material do pagseguro, e finalizar a compra, pq atualmente fica apenas com a mensagem de aguardando na tela...não gera o boleto nem pgto via cartão:

// Setting the application NameSpace
var MyApplication = window.MyApplication || {};
MyApplication.CheckoutPage = new function() {
	
	var hasSessionId = false; // Inicia sem sessionId
	
	var updateSessionId = function(callback) {
		
		showLoading();
		
		$.ajax({
			url: "engine/pagseguro/sessionid.php",
			type:"GET",
			cache: false,
			success: function(response) {
				
				PagSeguroDirectPayment.setSessionId(response);
				
				hasSessionId = true;
				cardBrandEvents();
				callback();
				
			},
			error: function() {
				alert(" Não foi possível obter o Session ID do PagSeguro ");
			},
			complete: function() {
				hideMessages();
			}
		});
		
	};
	
	// Atualiza dados de parcelamento atráves da bandeira do cartão
	var updateInstallments = function(brand) {
		
		var amount = Number($("#totalValue").html());
		
		PagSeguroDirectPayment.getInstallments({
			amount: amount,
			brand:  brand,
			success: function(response) {
				
				// Para obter o array de parcelamento use a bandeira como "chave" da lista "installments"
				var installments = response.installments[brand];
				
				var options = '';
				for (var i in installments) {
					
					var optionItem     = installments[i];
					var optionQuantity = optionItem.quantity; // Obtendo a quantidade
					var optionAmount   = optionItem.installmentAmount; // Obtendo o valor
					var optionLabel    = (optionQuantity + "x " + formatMoney(optionAmount)); // montando o label do option
					var price          = Number(optionAmount).toMoney(2,'.',',');
					
					options += ('<option value="' + optionItem.quantity + '" dataPrice="'+price+'">'+ optionLabel +'</option>');
					
				};
				
				// Atualizando dados do select de parcelamento
				$("#installmentQuantity").html(options);
				
				// Exibindo select do parcelamento
				$("#installmentsWrapper").show();
				
				// Utilizando evento "change" como gatilho para atualizar o valor do parcelamento
				$("#installmentQuantity").trigger('change');
				
			},
			error: function(response) {
				
			},
			complete: function(response) {
				
			}
		});
		
	};
	
	
	var updateCardBrand = function(cardBin) {
		
		PagSeguroDirectPayment.getBrand({
			
			cardBin: cardBin,
			
			success: function(response) {
				
				var brand = response.brand.name;
				
				$("#cardBrand").attr('brand', brand);
				$("#creditCardBrand").val(brand);
				
				updateInstallments(brand);
				
			},
			
			error: function(response) {
				
			},
			
			complete: function(response) {
				
			}
			
		});
		
	};
	
	var changeMethod = function(method) {
		
		var loading = $("#paymentMethodLoading");
		
		loading.show();
		
		var showBox = function() {
			
			var allMethods = $(".paymentMethodGroup");
			var thisMethod = allMethods.filter("[dataMethod='"+method+"']");
			
			allMethods.hide();
			thisMethod.show();
			loading.hide();
			
		};
		
		if (hasSessionId) {
			showBox();
		} else {
			// obter sessioId se ainda não foi setado
			updateSessionId(showBox);
		}
		
	};
	
	
	var updateCardToken = function(callback) {
		
		PagSeguroDirectPayment.createCardToken({
			
			cardNumber: $("#cardNumber").val(),
			brand: $("#creditCardBrand").val(),
			cvv: $("#cardCvv").val(),
			expirationMonth: $("#cardExpirationMonth").val(),
			expirationYear: $("#cardExpirationYear").val(),
			
			success: function(response) {
				
				// Obtendo token para pagamento com cartão
				var token = response.card.token;
				
				// Executando o callback (pagamento) passando o token como parâmetro
				callback(token);
				
			},
			
			error: function(response) {
				
				showCardTokenErrors(response.errors);
				
			},
			
			complete: function(response) {
				
			}
			
		});
		
	};
	
	
	// Fazer pagamento de qualquer tipo
	var doPayment = function(params, callback) {
		
		// travando a tela (loading)
		showLoading();
		
		// Adicionando dados do comprador aos parâmentros de pagamento
		areaToParams("buyerData", params);
		
		// Adicionando dados dos items (carrinho) aos parâmetros de pagamento
		addCartData(params);
		
		// Atualizando hash do comprador
		params.senderHash = PagSeguroDirectPayment.getSenderHash();
		
		// Request para o PHP passando os dados do pagamento
		$.ajax({
			type:"POST",
			url: "payment.php",
			data: params,
			dataType: 'json',
			cache: false,
			success: function(response) {
				
				// Executa o callback passado como parâmentro
				callback(response.transaction);
				
			},
			error: function(jqxhr) {
				// Liberando a tela (esconde o loading)
				//hideMessages();
				
				// obtendo lista de erros
				var response = $.parseJSON(jqxhr.responseText);
				
				// Exibindo lista de erros
				showPaymentErrors(response.errors);
				
			}
			
		});
		
	};
	
	// Pagamento com cartão de crédito
	var creditCardPayment = function() {
		
		showLoading();
		
		//////////////////////////////////////
		// fazer validação nesse ponto;
		//////////////////////////////////////
		
		updateCardToken(function(cardToken) {
			
			// Atualizando field que deve conter o valor do token
			$("#creditCardToken").val(cardToken);
			
			var params = {
				paymentMethod: 'creditCard'
			};
			
			// Adicionando dados do cartão de crédito aos parâmentros de pagamento
			areaToParams("creditCardData", params);
			
			// Fazer pagamento via cartão de crédito passando um callback a ser executado no final
			doPayment(params, function(transaction){
				
				// Aqui você tem o código da transação no final do pagamento
				showTransactionCode(transaction.code);
				
			});
			
		});
		
	};
	
	// Alerando tipo de meio de pagamento (cartão, boleto ou tef)
	var changeMethodEvents = function() {
		var radioInputs = $("input[name='changePaymentMethod']");
		radioInputs.click(function(){
			
			var method = $(this).val();
			
			changeMethod(method);
			
		});
		radioInputs.filter(":checked").trigger("click");
	};
	
	
	// Pagamento via cartão de crédito no click do "botão pagar"
	var creditCardPaymentEvents = function() {
		$("#creditCardPaymentButton").click(function(){
			creditCardPayment();
		});
	};
	
	
	// Gerenciando bandeira do cartão
	var cardBrandEvents = function() {
		
		var verifyBrand = function() {
			
			// Obtendo apenas os 6 primeiros dígitos (bin)
			var cardBin = $("#cardNumber").val().substring(0, 6);
			
			// Atualizar Brand apenas se tiver 6 ou mais dígitos preenchidos
			if (String(cardBin).length >= 6) {
				
				// Atualizar Brand
				updateCardBrand(cardBin);
				
			} else {
				
				// Se não digitou o número do cartão, esconder parcelamento
				$("#installmentsWrapper").hide();
				
			}
			
		};
		
		// Verificar bandeira após qualquer mudança nos inputs de cartão de crédito
		$(".cardDatainput").change(function(){
			verifyBrand();
		});
		
		// Verificar bandeira logo no início
		verifyBrand();
		
	};
	
	// Atualizando o valor do parcelamento
	var installmentQuantityEvents = function() {
		$("#installmentQuantity").change(function() {
			var option = $(this).find("option:selected");
			if (option.length) {
				$("#installmentValue").val( option.attr("dataPrice") );
			}
		});
	};
	
	var holderEvents = function() {
		
		var holderData = $("#holderData");
		
		// Usar dados do comprador para preencher dados do dono do cartão
		$("#sameHolder").click(function(){
			
			$("#buyerData input[holderField]").each(function(){
				var fieldRef = $(this).attr('holderField');
				var value = $(this).val();
				holderData.find("input[holderField=\""+fieldRef+"\"]").val(value);
			});
			
			$("#creditCardHolderBirthDate").focus();
			holderData.show();
			
		});
		
		// limpar dados do dono do cartão para preecher novo
		$("#otherHolder").click(function(){
			holderData.find("input").val('');
			holderData.show();
			$("#creditCardHolderBirthDate").focus();
		});
		
		// Verificar no início
		$("input[name='holderType']:checked").trigger('click');
		
	};
	
	// Adicionar dados do carrinho aos parâmetros de pagamento
	var addCartData = function(params) {
		
		$("#cartTable tbody tr").each(function(index, element){
			$(element).find("td").each(function(){
				if($(this).attr("data-name")) {
					if (startsWith($(this).attr("data-name"),"itemAmount")) {
						params[$(this).attr("data-name") + (index+1)] = $(this).html().replace(",",".");
					} else {
						params[$(this).attr("data-name") + (index+1)] = $(this).html();
					}
				}
			});
		});
		
	};
	
	// Eventos do carrinho (adicioanr item)
	var cartEvents = function() {
		
		$("#addItem").click(function(){
			
			$.colorbox({
				html: $("#cartItemHidden").html(),
				fixed: true
			});
			
			$("#colorbox .addToCart").unbind('click').bind('click', function(){
				
				var parent     = $(this).parents(".cartItemFields");
				var itemid     = parent.find(".itemId").val();
				var descr      = parent.find(".itemDescription").val();
				var amount     = Number(parent.find(".itemAmount").val().replace(",", "."));
				var qty        = Number(parent.find(".itemQuantity").val());
				var itemValue  = (amount * qty);
				
				var html  = ("<tr>");
				html += ("<td data-name='itemId'>" + itemid + "</td>");
				html += ("<td data-name='itemDescription'>" + descr + "</td>");
				html += ("<td data-name='itemAmount'>" + amount.toMoney(2, ',', '.') + "</td>");
				html += ("<td data-name='itemQuantity'>" + '<?php echo $quantidade; ?>' + "</td>");
				html += ("<td>" + itemValue.toMoney(2, ',', '.') + "</td>");
				html += ("</tr>");
				
				$("#cartTable tbody").append(html);
				
				var total = Number($("#totalValue").html());
				total = total + itemValue;
				
				$("#totalValue").html(total.toMoney(2, '.', ','));
				
				if ($("#installmentQuantity").val() != "") {
					updateInstallments( $("#creditCardBrand").val() );
				}
				
				$.colorbox.close();
				
			});
			
		});
		
	};
	
	
	// Pagamento com TEF
	var eftEvents = function() {
		
		$(".bank-flag").click(function(){
			var bank = $(this).attr("dataBank");
			var params = {
				paymentMethod: 'eft',
				bankName: bank
			};
			doPayment(params, function(transaction){
				window.open(transaction.paymentLink);
				showWaitingPayment("Débito online");
			});
		});
		
	};
	
	
	// Pagamento com boleto
	var boletoEvents = function() {
		
		$("#boletoButton").click(function(){
			var params = {
				paymentMethod: 'boleto'
			};
			doPayment(params, function(transaction){
				window.open(transaction.paymentLink);
				showWaitingPayment("Pagamento com Boleto...");
			});
		});
		
	};
	
	
	// Aplicando eventos apenas quado o documento estiver pronto
	$(document).ready(function(){
		cartEvents();
		changeMethodEvents();
		holderEvents();
		creditCardPaymentEvents();
		installmentQuantityEvents();
		eftEvents();
		boletoEvents();
	});
	
};

 

Share this post


Link to post
Share on other sites

Já experimentou o do Paypal?  https://www.paypal-brasil.com.br/desenvolvedores/

 

 

  • +1 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Joob
      Boas Malta,
       
      Não sei porquê que não estou a conseguir remover os ficheiros após minutos..
      Por exemplo ele vai buscar o deleteshared_links e apaga a partilha feita após o tempo colocado, mas no deletezips já não apaga.
      Supostamente ele vai buscar os ficheiros da pasta zip e deveria apagar.
       
      Resolvido
       
      Obrigado :)
    • By adamo marinho
      Estou tentando achar numeros iguais dentro de arrays criadas usando a função array_intersect, porem para facilitar o meu projeto, precisaria incluir variaveis dentro das arrays, alguem pode ajudar por favor?

      <?php $v1_1 = 1; $v1_2 = 2; $v1_3 = 3; $v1_4 = 4; $v1_5 = 5; $v1 = array($v1_1, $v1_2, $v1_3, $v1_4, $v1_5); $v2_1 = 6; $v2_2 = 7; $v2_3 = 8; $v2_4 = 9; $v2_5 = 10; $v2 = array($v2_1, $v2_2, $v2_3, $v2_4, $v2_5); $v3_1 = 10; $v3_2 = 9; $v3_3 = 8; $v3_4 = 7; $v3_5 = 6; $v3 = array($v3_1, $v3_2, $v3_3, $v3_4, $v3_5); $v4_1 = 5; $v4_2 = 4; $v4_3 = 3; $v4_4 = 2; $v4_5 = 1; $v4 = array($v4_1, $v4_2, $v4_3, $v4_4, $v4_5); $resultado = array_intersect($v1, $v2, $v3, $v4 ); var_dump($resultado); ?>
    • By babylon
      Ola amigos,
       
      Estava querendo criar algo para meu site, um botao igual do site abaixo para calcular formas de pagamento "ver formas de pagamento":
       
      https://www.chipart.com.br/pc-gamer-level-one-black-amd-3400g
       
      Segue imagem em anexo.
       
      Alguem poderia me ajudar se tem algum script algo pronto ou que ajude para abrir pop up modal?
       
      Obrigado a todos.
       
       

    • By srs1999_
      Tópico
       
      Site em Código
      Sobre desenvolver sites sem o wordpress que ja tá tudo ali feito que seja um site dinâmico ou seja com banco de dados , APIs de pagamento, Painel para o usuário ,  além de todas  as funções que tem no wordpress e você teria propriedade pra explicar sobre detalhes mais técnicos da produção onde no wordpress só quem entende de progrqmação explicaria algum detalhe técnico 
      Então usando basicamente : 
      FRONT END 
      HTML 
       CSS 
      JAVASCRIPT 
      ALGUMA DE BACKEND COMO PHP E BANCO DE DADOS
      Pode se criar sites/sistemas tão bons ou melhores que no wordpress
       
      Fato : o proprio wordpress é feito em php e ate o proprio facebook tbm em php
      Fato 2 :  cerca de 70% dos sites são feitos em Wordpress
       
      Acho esse lance de procurar o caminho mais fácil limita muito a pessoa por exemplo é facil editar imagens no paint bem intuitivo , agora para editar no photoshop com muitas outras possibilidades  acaba sendo importante ir explorando essa elaboração mais difícil  com um mesmo objetivo. No caso do exemplo ( editar imagens )  
       
      Reflexão:
      Vale a pena se dedicar a trabalhar com a ferramenta Wordpress apenas por ser um meio rápido de ganhar dinheiro ?
      Ou trabalhar sem wordpress  usando tudo que exigido pra criar coisas originais mais que não seria tão rápido a produção. Mas creio que além dos sites feitos também geraria a possibildade de vender o sistema web criado para o cliente personalizar .
       
      Você Desenvolveria de que forma :
       Wordpress apenas ?
       
      Conhecer programação pra trabalhar 
      com  Wordpress ?
       
      Produzir tudo só com programação totalmente dinâmico sem  Wordpress?
    • By violin101
      Caros amigos
       
      saudações...
       
      Peço desculpa, se postei minha dúvida em local errado.
       
      Tenho um formulário onde valido todos os campos e após clicar no BUTTON para adicionar, tenho uma função que muda o TITLE e deixa desabilitado.
       
      O problema é o seguinte:
      - caso algum campo fica em branco, após validar o formulário e mudar o BUTTON, não consigo depois de preenchido HABILITAR novamente o button.
       
      Observação:
      1) após preencher o campo que ficou em branco, como faço para HABILITAR o button novamente e mudar o title do button ?
       
       
      na VIEW está assim:
      <form action="<?php echo current_url(); ?>" id="frmEstoque" method="post" onsubmit="this.btn_adc.disabled=true;" > <div class="card-body"> <div class="row"> <!---Todos os campos do Formulário---> </div> </div> <div class="card-footer" style="text-align:center;"> <input type="hidden" id="idCli" name="idCli" value="<?php echo $cliente->idClientes; ?>" /> <a href="<?php echo base_url() ?>admin/estoque" id="" class="btn btn-danger"><i class="fa fa-undo"></i> Voltar</a> &nbsp; <button type="submit" id="btn_adc" name="btn_adc" class="btn btn-primary">Adicionar</button> </div> </form>  
      na JavaScript está assim:
      <script> //Função para Mudar o VALUE do Button Adicionar Veículo document.getElementById("btn_adc").addEventListener("click",function(){ this.innerHTML = this.value++ || 'Aguarde...'; },false); </script> /* Observação: 1) como removo a função acima, após validar o formulário e esse encontrar algum campo vazio. 2) após preencher o campo que ficou em branco, HABILITAR o button novamente. */ <script type="text/javascript"> $(document).ready(function(){ //Função para Validar Formulário $('#frmEstoque').validate({ rules :{ etq_categcars:{ required: true}, etq_destaq:{ required: true}, etq_status:{ required: true} }, messages:{ etq_categcars :{ required: '<span style="color:#ff0000;">Campo Requerido</span>'}, etq_destaq :{ required: '<span style="color:#ff0000;">Campo Requerido</span>'}, etq_status :{ required: '<span style="color:#ff0000;">Campo Requerido</span>'} }, errorClass: "help-inline", errorElement: "span", highlight:function(element, errorClass, validClass) { $(element).parents('.form-group').addClass('error'); }, unhighlight: function(element, errorClass, validClass) { $(element).parents('.form-group').removeClass('error'); $(element).parents('.form-group').addClass('success'); } }); //Status dos Botões ADICIONAR - iniciar como desabilitado. document.getElementById("btn_adc").disabled = true; }); function statusButton(){ //valida conteudo do input if ($("input[name=etq_vlrcpr]").val() != 0 && $("input[name=etq_vlrvda]").val() != 0) { //habilita o botão document.getElementById("btn_adc").disabled = false; } else { //desabilita o botão se o conteúdo do input ficar em branco document.getElementById("btn_adc").disabled = true; } } </script>  
      Grato,
       
      Cesar
       
       
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.