2015-02-07 3 views
2

Classic ASP에 Form Intergration SagePay 지불 게이트웨이를 추가하려고합니다. 나는 SO에서 유래 한 PHP 버전을 가지고있다. 나는 이것을 VBSCRIPT로 번역했는데, 모든 것이 잘 작동하지만 암호화가 된 것처럼 보인다.SagePay 양식 - classic ASP - 통화 필드가 rijndael.asp를 사용하여 누락되었습니다.

PHP 스크립트와 동일한 입력을 모두 사용하므로 암호화되기 전에 Cryptstring이 PHP Cryptstring과 완전히 동일합니다.

내가 다운로드 여기에있는 Rijndael.asp & includes.asp 파일을 사용했습니다 Encrypting Crypt field using Classic ASP for SagePay Form Integration

을하지만 다음과 같은 오류가 계속 :

 
Status: MALFORMED 
Status Detail: 3045 : The Currency field is missing. 

Cryptstring: VendorTxCode=542534345&ReferrerID=&Amount=200.00&Currency=GBP 
&Description=Lorem ipsum&SuccessURL=http://www.testserver.co.uk/sagepaytest/success.php 
&FailureURL=https://www.yoururl.org/fail.php&CustomerName=&CustomerEMail=&VendorEMail= 
&SendEMail=&eMailMessage=&BillingSurname=Mustermann&BillingFirstnames=Max 
&BillingAddress1=Bahnhofstr. 1&BillingAddress2=&BillingCity=Cologne&BillingPostCode=50650 
&BillingCountry=DE&BillingState=&BillingPhone=&DeliverySurname=Mustermann 
&DeliveryFirstnames=Max&DeliveryAddress1=Bahnhofstr. 1&DeliveryAddress2= 
&DeliveryCity=Cologne&DeliveryPostCode=50650&DeliveryCountry=DE&DeliveryState= 
&DeliveryPhone=&Basket=&AllowGiftAid=&ApplyAVSCV2=&Apply3DSecure=&BillingAgreement= 
&BasketXML=&CustomerXML=&SurchargeXML=&VendorData=&ReferrerID=&Language=&Website= 

내가 어떤 추가 수동으로 해봤를 필드를 암호화 문자열에 넣으려면 암호가없는 다른 페이지로 가서 전체 출력을 확인해보십시오.

내 암호화 암호가 정확합니다. 두 번 겹쳐서 확인했습니다. 그것은 includes.php 파일에 입력됩니다. 모든 지침을 감상 할 수있다

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> 

<!-- #include file="classes/includes.asp" --> 

<!-- #include file="classes/sagepay.asp" --> 

<% Set objSagePay=new SagePay %> 

<% objSagePay.setCurrency("GBP") %> 
<% objSagePay.setAmount(200) %> 
<% objSagePay.setDescription("Lorem ipsum") %> 
<% objSagePay.setBillingSurname("Mustermann") %> 
<% objSagePay.setBillingFirstnames("Max") %> 
<% objSagePay.setBillingCity("Cologne") %> 
<% objSagePay.setBillingPostCode("50650") %> 
<% objSagePay.setBillingAddress1("Bahnhofstr. 1") %> 
<% objSagePay.setBillingCountry("de") %> 
<% objSagePay.setDeliverySameAsBilling() %> 

<% objSagePay.setSuccessURL("http://www.testserver.co.uk/sagepaytest/success.php") %> 
<% objSagePay.setFailureURL("https://www.yoururl.org/fail.php") %> 

<% Crypt=objSagePay.getCrypt() %> 
<%= Crypt %> 

<div id="content"> 
    <form method="POST" id="SagePayForm" action="https://test.sagepay.com/gateway/service/vspform-register.vsp"> 
    <input type="hidden" name="VPSProtocol" value= "3.00"> 
    <input type="hidden" name="TxType" value= "PAYMENT"> 
    <input type="hidden" name="Vendor" value= "vendorname"> 
    <input type="hidden" name="Crypt" value= "<%= objSagePay.getCrypt() %>"> 
    <input type="submit" value="continue to SagePay"> 
</form> 


index.asp.

+0

같은 데이터와 암호를 사용하여 SagePay 암호문 예제를 시도했지만 완전히 다른 CryptString을 표시합니다. 나는 rijndael.asp를 시도하고 해부하기에 충분한 경험이 없다. –

답변

4

나는 같은 배에있다. 나는 정확히 동일한 결과로 완벽하게 암호화하고 해독 할 수 있지만 Sagepay로 전달 될 때 오류가 발생합니다 - 통화 필드가 누락되었습니다.

업데이트 :이 오류를 해결할 수있었습니다. 기존 라인을 변경하려면 'includes.asp'에서 확인하십시오 :

strEncryptionPassword="mcAX65PTadrrsKQ3" 

원래 Sagepay를 'includes.asp'파일에 암호를 포함 할 수 있습니다. 게시물에 다운로드 링크와 함께 제공되는 기본 비밀번호를 사용하지 마십시오.