Ir para conteúdo

POWERED BY:

Arquivado

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

ultra

Cartões de crédito AMEX

Recommended Posts

Olá programadores iMasters

 

Há um tempo estou fazendo testes com as páginas do cartão de credito AMerican EXpress, e conforme o pacote de scripts deles há um objeto chamado: PaymentClient.com.COMClient

 

Me parece que esse script funciona perfeitamente em sistemas inferiores ao Windows 2000, mas como o nosso aqui é Windows 2003 Server estou com grandes dificuldades

 

Gostaria de saber se alguém aqui já mecheu com esse tipo de cartão, e se caso sim pode me dar uma mãozinha........

 

Grato

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

A dica que vou dar não é de ASP nem Programação, então não me interprete mal.

 

No seu caso seria mais fácil entrar em contato com a própria AMEX e verificar se existe alguma incompatibilidade e solução ou nova versão do componente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salgado eu já liguei pra lá e converso todo dia com a mulher via e-mail.... mas parece que eles nunca tiveram um problema deste tipo (engraçado...)Estamos nesse problema já vai fazer 3 semanas, e de tanto ficar pensando a causa do problema vim aqui perguntar se alguém já trabalhou com esse tipo de cartão e se já teve algum sucesso :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, Exibe algum erro ou só não funciona?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exibe sempre o mesmo erro, que é tratado pelo ASP do código fonteEle vem dessa linha :set objPayClient = Server.CreateObject("PaymentClient.com.COMClient")Sendo que já reinstalei o componente milhares de vezes, e o programa de teste (desse componente) já funcionou, e é essa nossa dificuldade... o negócio tá lá mas não pegapor isso precisava saber se alguém já driblou esse problema, que me parece só acontecer com o windows 2003 e XP

Compartilhar este post


Link para o post
Compartilhar em outros sites

como funciona o componente?é possível você postar aqui o componente e o codigo, pra alguem fazer download e testar.. pra ver se não é só o seu servidor que está com problema? (possivelmente sistema operacional..)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se isso ajuda mas veja as permissões de acesso ao componente.Já tive problemas com componentes que foram instalados e que não tinham as devidas permissões para o IUSR.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, eu realmente gostaria de postar aqui o código... mas ele tá distribuido em vários arquivos, então só vou postar o arquivo onde está o erro (é grande)

 

O problema realmente é no S.O., pois aqui na minha máquina (windows xp) roda normalmente, mas em qualquer windows server não pega e tá difícil de resolver.... já ví também as permissoes de acesso, já cheguei a dar acesso full à tudo e à todos, e mesmo assim nada..... tá dificil

 

Código:

<%@ LANGUAGE=vbscript %><%' Initialisation' =============='	Define the error constants	const No_Error	= 0	const ERR_PayClient  = 10	const ERR_DigitalOrder	= 11	const ERR_No_Results	= 12	const OK	= 1'	Define the local variables	avsData = ""'	Define Error Handler	sErrorPage = "./AMEX_ASP_Error.asp"'	Define AgainLink and Title Heading	AgainLink = "./AMEX_ASP_MOTO_Order.asp"	Title = "AMEX ASP MOTO Example Digital Receipt"'	Define module to receive Digital Receipt details	sDRDetailsURL = "./AMEX_ASP_Receipt.asp"'	Initialise ErrorCode - set to No Errors	nErrorCode = No_Error	sException	= ""'	Turn off default error checking, as any errors are explicitly handled	on error resume next'	Stop the page being cached on the web server	Response.Expires = 0'	Retrieve input variables from the prior form	sLocale	  = Request("Locale")	sMerchantID  = Request("MerchantID")	sSessionID  = Request("SessionID")	sPurchaseAmount	= Request("PurchaseAmount")	sccNumber  = Request("Ecom_Payment_Card_Number")	sccMonth  = Request("Ecom_Payment_Card_ExpDate_Month")	sccYear	  = Request("Ecom_Payment_Card_ExpDate_Year")	sccSecurityCode	= Request("Ecom_Card_Security_Code")	sCustCardAddress = Request ("AVS_Address")	sCustCardCity  = Request ("AVS_City")	sCustCardState  = Request ("AVS_State")	sCustCardZip  = Request ("AVS_Zip")	sCustCardCountry = Request ("AVS_Country")	sPlanType  = Request.Form("PlanType")	sNumPayments	= Request.Form("NumPayments")	'	Evaluate the credit cards expiry date to YYMM	if len(sccYear) >= 2 then  sccYear = Right(sccYear, 2)	end if	sccExpiry = sccYear & sccMonth'	The amount must be converted to a long for processing	lAmount  = CLng(sPurchaseAmount)	'	Set avsData by limiting field to 29 characters in length'	(19 chars + space + zip)	avsData = Left(sCustCardAddress,19) & " " & sCustCardZip' Create Payment Client Object' ============================'	Create Payment Client object	set objPayClient = Server.CreateObject("PaymentClient.com.COMClient")'	Test the Payment Client object created corectly	if objPayClient.echo("Test") <> "echo:Test" then  nErrorCode = ERR_PayClient	end if' Generate and Send Digital Order' ==============================='	if no errors ...	if nErrorCode = No_Error then'  Add credit card fields to Digital Order  sTemp = objPayClient.addDigitalOrderField("CardNum",sccNumber)  sTemp = objPayClient.addDigitalOrderField("CardExp",sccExpiry)  sTemp = objPayClient.addDigitalOrderField("CardSecurityCode",sccSecurityCode)  sTemp = objPayClient.addDigitalOrderField("AddressVerification",avsData)  '  Generate and Send Digital Order (& receive Digital Receipt)'  ===========================================================  if sPlanType = "PlanN" or sPlanType = "PlanAmex" then	  sDigitalOrder = objPayClient.addDigitalOrderField(sPlanType,"")	  sDigitalOrder = objPayClient.addDigitalOrderField("numPayments",sNumPayments)  else if sPlanType = "PlanAmex(Inquiry)" then	  sDigitalOrder = objPayClient.addDigitalOrderField("PlanAmex","")	  sDigitalOrder = objPayClient.addDigitalOrderField("inquiryTransaction","")	  sDigitalOrder = objPayClient.addDigitalOrderField("numPayments",sNumPayments)  end if  end if'  Required parameter; not used for MOTO  sBlankValue = ""  if objPayClient.sendMOTODigitalOrder( _	  sSessionID, _	  sMerchantID, _	  lAmount, _	  sLocale, _	  sBlankValue) <> OK then	  nErrorCode = ERR_DigitalOrder	  sException	= objPayClient.getResultField("PaymentClient.Error")  else'	  Set ResultField array to Digital Receipt details	  if objPayClient.nextResult() <> OK then'	Failed	nErrorCode = ERR_No_Results	  end if  end if	end if' Get Digital Receipt details' ==========================='	if no errors ...	if nErrorCode = No_Error then'  Gather Digital Receipt variables and append to Digital Receipt Details URL  sDRDetailsURL = sDRDetailsURL & _	  "?SessionID="	  & objPayClient.getResultField("DigitalReceipt.SessionId") & _	  "&MerchantID="	& objPayClient.getResultField("DigitalReceipt.MerchantId") & _	  "&PurchaseAmount="	  & objPayClient.getResultField("DigitalReceipt.PurchaseAmountInteger") & _	  "&Locale="		& objPayClient.getResultField("DigitalReceipt.Locale") & _	  "&ReceiptNo="	  & objPayClient.getResultField("DigitalReceipt.ReceiptNo") & _	  "&TransactionNo="  & objPayClient.getResultField("DigitalReceipt.TransactionNo") & _	  "&AcqResponseCode="  & objPayClient.getResultField("DigitalReceipt.AcqResponseCode") & _	  "&QSIResponseCode="  & objPayClient.getResultField("DigitalReceipt.QSIResponseCode") & _	  "&InterestRate="  & objPayClient.getResultField("DigitalReceipt.InterestRate") & _	  "&SaleAmount="	& objPayClient.getResultField("DigitalReceipt.SaleAmount") & _	  "&NumOccurrences="  & objPayClient.getResultField("DigitalReceipt.NumOccurrences") & _	  "&AvsResult="	  & objPayClient.getResultField("DigitalReceipt.AVSResultCode") & _	  "&CscResult="	  & objPayClient.getResultField("DigitalReceipt.CSCResultCode") & _	  "&AgainLink=" & AgainLink & "&Title=" & Title  nOccurrences=objPayClient.getResultField("DigitalReceipt.NumOccurrences")  if Len(nOccurrences) > 0 then	  nOccurrences=CInt(nOccurrences)  else	  nOccurrences = 0  end if    if nOccurrences > 0 then	  for i=1 to nOccurrences	sDRDetailsURL = sDRDetailsURL & "&NumPayments" & i & "=" & objPayClient.getResultField("DigitalReceipt.NumPayments" & i) & _			"&FinalAmount" & i & "=" & objPayClient.getResultField("DigitalReceipt.FinalAmount" & i) & _			"&PaymentAmount" & i & "=" & objPayClient.getResultField("DigitalReceipt.PaymentAmount" & i)	  next  end if'  Finished with the objPayClient object, so nullify it  set objPayClient = nothing'  Pass control to the Digital Receipt details page  Response.Redirect sDRDetailsURL	else'  Finished with the objPayClient object, so nullify it  set objPayClient = nothing'  Pass control to the error handler  sErrorPage = sErrorPage &	"?ErrorCode="	& nErrorCode & _		  "&Exception="	& sException & "&AgainLink=" & AgainLink & "&Title=" & Title  Response.Redirect sErrorPage	end if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, estou praticamente com o seu mesmo problema. To desenvolvendo um gateway de pgto com o payment client. No meu servidor de homologação, q é win 2000, ta funcionando 100%. Ja no servidor de produção, que é win 2003, ta dando erro. Ja tentei o suporte do Amex aqui no Brasil, e é um lixo!! Eles não sabem nada e falam um monte de besteiras. E acredite, você não é o unico q está tendo esse problema, como eles dizem!! Eles ja devem ter mandado você instalar o jvm da ms... Entrei em contato por e-mail com a Dialect (empresa dona do payment client) e um consultor deles me respondeu. O meu erro não é na hora de instanciar o objeto não e sim logo depois qdo eu mando um echo pra testar a comunicação. O gringo me mandou um vbs para testar. Qdo me logo no servidor como administrator e rodo la de dentro esse vbs funciona perfeitamente! Fiz um asp de teste equivalente ao vbs e qdo chamo (pela url no browser) da erro. Então a unica conclusao q pude tirar é q isso teria a ver com o usuario logado no servidor. Ja q qdo uso o admin o vbs funciona, mas qdo chamo o asp pela url (nesse caso é outro usuario) da o erro. Caso queira as dicas de instalação do payment client q o suporte la da Dialect me deu, entre contato comigo por e-mail: joao@imprimir.com.br. O vbs ta aqui:'VBScript source codeOn Error Resume NextDim MessageMessage = ""' Create Payment ClientDim PayClientset PayClient = WScript.CreateObject("PaymentClient.com.COMClient")' Check if Payment Client was created without errorsif Err then Message = Message & "Error Creating Payment Client" & vbCrLf & Err.Source& vbCrLf & Err.Number & " - " & Err.Descriptionelse ' Perform Get Version Message = Message & "Payment Client Version=" & PayClient.getVersion() & vbCrLf ' See if there was an error performing the Get Version if Err then Message = Message & "Microsoft Error Retrieving Payment Client Version" & vbCrLf & Err.Source& vbCrLf & Err.Number & " - " & Err.Description else ' Perform Echo Test Dim response response = PayClient.echo("Test") if response <> "echo:Test" then Message = Message & "Payment Client Echo Test Failed. Expected 'echo:Test', Received '" & response & "'" & vbCrLf else Message = Message & "Payment Client Echo Test Successful" & vbCrLf end if ' Check for an Error performing the Echo Test if Err then Message = Message & "Microsoft Error Performing Echo Test" & vbCrLf & Err.Source& vbCrLf & Err.Number & " - " & Err.Description else ' Create Digital Order Test response = PayClient.getDigitalOrder ("12345", "TESTSCRIPT", 100, "en", "http://127.0.0.1?DO=${DR}") if (Mid(response, 1, 4) = "http") or (Mid(response, 1, 4) = "HTTP") then Message = Message & "Digital Order Test Successful" & vbCrLf else Message = Message & "Digital Order Test failed" & vbCrLf & "Test Returned: " & response & vbCrLf end if ' Check for an error performing the Digital Order Test if Err then Message = Message & "Microsoft Error Performing Digital Order Test" & vbCrLf & Err.Source& vbCrLf & Err.Number & " - " & Err.Description end if end if end ifend ifErr.Clearset PayClient = Nothingif Err then Message = Message & "Microsoft Error Destroying Payment Client Object" & vbCrLf & Err.Source& vbCrLf & Err.Number & " - " & Err.Descriptionend if' Display test resultsWScript.Echo Message'MsgBox Message

Compartilhar este post


Link para o post
Compartilhar em outros sites

jonimoreira graças à Deus alguém com o mesmo problema que eu ! você num vai acreditar, mas estamos com exatamente o mesmo problema, inclusive já recebi esse arquivo aí .vbs (mas o engraçado é que ele me retorna resultado positivo, conforme a imagem COMTestsuccessful.jpg)Realmente o atendimento lá é ruim, mas a muié que me atende é educada e atenciosa.... provavelmente quando tem alguma dúvida encaminha para a AMEX internacional e por isso da demora das respostas...Bom, minha máquina de testes é Win Xp SP2, e o servidor é Win 2003 server.... não consigo fazer testes nem em minha máquina, como irei implantar ainda no 2003, que é muito mais complicado..... talvez esse problema de você só conseguir rodar o script como administrador seja causado pelas permissões de usuários (painel de controle/ferramentas administrativas/Gerenciamento do computador/usuários). O script deverá rodar para você , mas ainda não sei como fazê-lo funcionar no meu siteOque ocorre é que ele dá uma falha na linha de código onde o script manda um Server.CreateObject("PaymentClient.com.COMClient").... já instalei todas versões do JVM ou JRE da sun / microsoft , e nada do treco funcionar.... isso tá me dando uma dor-de-cabeça.......Mas responda o tópico, vamos resolver essa parada... tamos quase lá ![]'s

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.