2015-07-13 4 views
0

Я пытаюсь использовать SagePay. У меня есть учетная запись, и я хотел бы использовать Server Integration.Состояние: 5068 при использовании sagePay

Ошибка, которую я получаю, это . Состояние: 5068: метод шифрования не поддерживается этой версией протокола.

Я пытаюсь создать простую кнопку «платить сейчас», как описано в документах. Образцы кода, предоставленные мудрецом, не работают.

Может кто-нибудь, пожалуйста, дайте мне знать, почему код ниже не работает? благодаря

<?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> 

ответ

0

Пара вещей, чтобы проверить:

  1. Убедитесь, что вы используете шифрование AES на поле Crypt
  2. При отправке склеп к Sage Pay, убедитесь, что он приставкой «@»
  3. Убедитесь, что вы не кодируете строку Base64 после того, как вы ее зашифровали в AES (документы протокола немного вводят в заблуждение) [обновление]: 4. Фактически вы используете метод интеграции формы ...
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> 
Смежные вопросы