状态详细信息:5068使用sagePay时

时间:2015-07-13 08:31:28

标签: aes sagepay

我正在尝试使用SagePay。我有一个帐户,我想使用服务器集成。

我得到的错误是状态详细信息:5068:此协议版本不支持加密方法。

我正在尝试创建一个简单的“立即付款”按钮,如文档中所述。 sage提供的代码示例似乎不起作用。

有人可以让我知道为什么下面的代码不起作用?感谢

<?php

require_once ('lib/SagePay.php');

$sagePay = new SagePay();
$sagePay->setCurrency('BG');
$sagePay->setAmount('100');
$sagePay->setDescription('Lorem ipsum');
$sagePay->setBillingSurname('Mustermann');
$sagePay->setBillingFirstnames('Max');
$sagePay->setBillingCity('Cologne');
$sagePay->setBillingPostCode('50650');
$sagePay->setBillingAddress1('Bahnhofstr. 1');
$sagePay->setBillingCountry('de');
$sagePay->setDeliverySameAsBilling();

/* Example of using BasketXML */

$xml = new DOMDocument();
$basketNode = $xml->createElement("basket");
$itemNode = $xml->createElement("item");

$descriptionNode =  $xml->createElement( 'description' );
$descriptionNode->nodeValue = 'First Item Description';
$itemNode -> appendChild($descriptionNode);

$quantityNode =  $xml->createElement('quantity');
$quantityNode->nodeValue = '1';
$itemNode -> appendChild($quantityNode);

$unitNetAmountNode =  $xml->createElement('unitNetAmount');
$unitNetAmountNode->nodeValue = '90.00';
$itemNode -> appendChild($unitNetAmountNode);

$unitTaxAmountNode =  $xml->createElement('unitTaxAmount');
$unitTaxAmountNode->nodeValue = '10.00';
$itemNode -> appendChild($unitTaxAmountNode);

$unitGrossAmountNode =  $xml->createElement('unitGrossAmount');
$unitGrossAmountNode->nodeValue = '100.00';
$itemNode -> appendChild($unitGrossAmountNode);

$totalGrossAmountNode =  $xml->createElement('totalGrossAmount');
$totalGrossAmountNode->nodeValue = '100.00';
$itemNode -> appendChild($totalGrossAmountNode);

$basketNode->appendChild( $itemNode );
$xml->appendChild( $basketNode );

$sagePay->setBasketXML($xml->saveHTML());



$sagePay->setSuccessURL('https://website.co.uk/page.html');
$sagePay->setFailureURL('https://website.co.uk/page.html');
?>

<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 here">
    <input type="hidden" name="Crypt" value= "<?php echo $sagePay->getCrypt(); ?>">
    <input type="submit" value="continue to SagePay">
</form>

2 个答案:

答案 0 :(得分:0)

要检查的事情:

  1. 确保在Crypt字段上使用AES加密
  2. 将密码发送给Sage Pay时,请确保它的前缀为“@”
  3. 确保在对AES进行AES加密后对字符串进行Base64编码(协议文档在这方面有点误导) [更新]:4。您实际上正在使用表单集成方法......

答案 1 :(得分:0)

感谢您的帮助。

这是加密方法的问题。最终为我工作的代码就是这个:

https://github.com/tolzhabayev/sagepayForm-php/blob/master/lib/SagePay.php

我的表单按钮是这样的:

<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= "vendornamehere">
<input type="hidden" name="Crypt" value= "<?php echo $sagePay->getCrypt(); ?>">
<input type="submit" value="continue to SagePay">
</form>