2011-02-17 44 views
0

即時通訊試圖測試我的鼠尾草支付整合,但無濟於事。鼠尾草支付測試錯誤

這裏是我的代碼:

private function init_sagepay(){ 
    extract(static::$post); 
    $settings = global_data::get_settings(); 
    $strConnectTo = "TEST"; 
    $strVirtualDir = "VSPForm-Kit"; 
    $strYourSiteFQDN = global_data::get_web_root(); 
    $strVSPVendorName = $settings->sagepay_vendor; 
    $strEncryptionPassword = "z5phUfjdEB5ZX2ZY"; 
    $strCurrency = static::$currency; 
    $strVendorEMail = $settings->sagepay_email; 
    $strTransactionType = "PAYMENT"; 

    $strProtocol = "2.23"; 
    if ($strConnectTo == "LIVE") 
     $strPurchaseURL = "https://live.sagepay.com/gateway/service/vspform-register.vsp"; 
    elseif ($strConnectTo == "TEST") 
     $strPurchaseURL = "https://test.sagepay.com/gateway/service/vspform-register.vsp"; 
    elseif($strConnectTo == 'TTEST') 
     $strPurchaseURL = 'https://test.sagepay.com/Simulator/VSPServerGateway.asp?Service=VendorRegisterTx'; 
    else 
     $strPurchaseURL = "https://test.sagepay.com/Simulator/VSPDirectGateway.asp"; 

    $details = self::get_member_details(); 
    $thisOrderDeteails = 'order details...'; 
    $ThisVendorTxCode = 'fdsdgfd'; 
    $ThisAmount = $total; 
    $ThisCurrency = static::$currency; 
    $ThisDescription = "description..."; 
    $ThisCustomerEmail = $details->email; 
    $ThisCustomerName = $details->first_name . " " . $details->last_name; 
    $ThisVendorEmail = $strVendorEMail; 
    $ThisApplyAVSCV2 = 1; 
    $ThisApply3DSecure = 1; 
    $ThisDeliveryAddress = $address_line_1 . ", " . $address_line_2 . ", " . $address_line_3 . ", " . $address_line_4 . ", " . $country; 
    $ThisDeliveryPostCode = $postcode; 
    $address_full = $ThisDeliveryAddress . ' ' . $ThisDeliveryPostCode; 

    $ThisBillingAddress = $details->address_line_1 . ", " . $details->address_line_2 . ", " . $details->address_line_3 . ", " . $details->address_line_4 . ", " . $details->country; 
    $ThisBillingPostCode = $details->postcode; 

    $ThisContactNumber = $details->home_number; 
    $ThisContactFax = $details->fax_number; 
    $ThisAllowGiftAid = ''; 

    $ThisShoppingBasket = 'Basket=' . count($items) . ':'; 
    foreach($items as $item) { 
     preg_match("#^\[([^\]]+)\]\[([^\]]+)\]\[([^\]]+)\]$#is", $item, $match); 
     $ThisShoppingBasket .= $match[2] . ':' . $match[1] . ':' . static::$cp . ($match[3]/$match[1]) . static::$cp . ':0.00:' . static::$cp . $match[3] . ':'; 
    } 
    $ThisShoppingBasket .= 'Delivery:1:£4.99'; 

    $stuff = "VendorTxCode=" . $ThisVendorTxCode . "&"; 
    $stuff .= "Amount=" . $ThisAmount . "&"; 
    $stuff .= "Currency=" . $ThisCurrency . "&"; 
    $stuff .= "Description=" . $ThisDescription . "&"; 
    $stuff .= "SuccessURL=" . $strYourSiteFQDN . "&"; 
    $stuff .= "FailureURL=" . $strYourSiteFQDN . "&"; 

    $varArray = array('CustomerEmail','VendorEmail','CustomerName','DeliveryAddress','DeliveryPostCode','BillingAddress','BillingPostCode','ContactNumber','ContactFax','AllowGiftAid','ApplyAVSCV2','Apply3DSecure'); 
    foreach($varArray as $var) { 
     if(${'This' . $var}) { 
      $stuff .= $var . '=' . ${'This' . $var} . '&'; 
     } 
    } 
    if($ThisShoppingBasket) { 
     $stuff .= $ThisShoppingBasket; 
    } 
    $stuff .= "EMailMessage=For an update on the status of your order please email us at $ThisVendorEmail"; 
    echo $stuff; 
    $crypt = self::base64Encode(self::SimpleXor($stuff,$strEncryptionPassword));  
    ob_start(); 
    ?> 
    <form action="<?php echo $strPurchaseURL; ?>" method="post" id="sageForm" name="form1"> 
     <input TYPE="hidden" name="VPSProtocol" value="<?php echo $strProtocol; ?>"> 
     <input TYPE="hidden" name="TxType" value="<?php echo $strTransactionType; ?>"> 
     <input TYPE="hidden" name="Vendor" value="<?php echo $strVSPVendorName; ?>"> 
     <input TYPE="hidden" name="Crypt" value="<?php echo $crypt; ?>">  
     <input name="sbbutton" type="submit" value="Checkout" class="wpcf7-submit">     
    </form>  
    <?php 
    return ob_get_clean(); 
} 

使用 「TEST」 IM時,得到一個錯誤:

Status Detail: 5005 : The Vendor configuration is missing or invalid 

使用 「TTEST」 即時得到一個錯誤,當:

VPSProtocol=2.23 
Status=INVALID 
StatusDetail=The VendorTxCode you supplied is an invalid length. VendorTxCodes should be between 1 to 40 characters long 

我似乎無法弄清楚這一點。如果有人有任何想法,將非常感激。

編輯:$東西回聲出來:

VendorTxCode=fdsdgfd&Amount=45.60&Currency=GBP&Description=description...&SuccessURL=http://localhost/ecom_framework/&FailureURL=http://localhost/ecom_framework/&[email protected]&[email protected]&CustomerName=Luke Snowden&DeliveryAddress=mansfield, nottinghamshire, mansfield, nottinghamshire, United Kingdom&DeliveryPostCode=ng19 8pw&BillingAddress=mansfield, nottinghamshire, mansfield, nottinghamshire, United Kingdom&BillingPostCode=ng19 8pw&ContactNumber=0165656567&ApplyAVSCV2=1&Apply3DSecure=1&Basket=3:Blue Hat - black :2:£2£:0.00:£4.00:Blue Hat - brown :3:£3£:0.00:£9.00:Blue Hat - grey :4:£4£:0.00:£16.00:Delivery:1:£4.99EMailMessage=For an update on the status of your order please email us at [email protected] 
+0

數組,你爲什麼不使用它們?這個代碼可能不到這個長度的一半。 – meagar 2011-02-17 06:32:14

回答

1

你是想通過直接或表單的集成方法來進行交易? 看起來你已經做出了混淆與Purchse網址...] 更新您的購買網址,這些網址:

http://www.sagepay.com/developers/

,並確保他們是他們應該是什麼。

0

您需要確保您發佈到有效的Sage Pay帳戶,並確保vendorname正確停止5005錯誤。

VendorTxCode字段限制爲40個字符。如果您沒有正確構建您的字符串,您可能會在VendorTxCode字符錯誤後將所有內容發佈到您的字段中。