SagePay表单 - 经典ASP - 使用rijndael.asp缺少货币字段

时间:2015-02-07 14:07:14

标签: encryption vbscript asp-classic sagepay rijndael

我正在尝试在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>

任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:4)

我在同一条船上。我可以使用完全相同的结果完美地加密和解密,但是当它传递给Sagepay时,我收到错误 - 缺少货币字段。

更新:我设法解决了这个错误。请确保在'includes.asp'中更改现有行:

strEncryptionPassword="mcAX65PTadrrsKQ3"

包含原始Sagepay'include.asp'文件中的密码。请勿使用帖子中下载链接附带的默认密码。