我正在尝试在Classic ASP中添加Form Intergration SagePay支付网关。我有一个工作的PHP版本,我从SO采购。我把它翻译成VBSCRIPT,一切似乎都运行正常,但加密。
我使用与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=
我已经尝试手动将某些字段添加到加密字符串中,我尝试过GET到没有加密的anther页面来查看完整输出。
我的加密密码是正确的,我进行了双倍和三倍检查。它输入了includes.php文件。
的index.asp
<%@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>
任何指导都将不胜感激。
答案 0 :(得分:4)
我在同一条船上。我可以使用完全相同的结果完美地加密和解密,但是当它传递给Sagepay时,我收到错误 - 缺少货币字段。
更新:我设法解决了这个错误。请确保在'includes.asp'中更改现有行:
strEncryptionPassword="mcAX65PTadrrsKQ3"
包含原始Sagepay'include.asp'文件中的密码。请勿使用帖子中下载链接附带的默认密码。