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」を使用するとエラーが発生します:

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

私はこれをまったく理解できないようです。誰かに何かアイデアがあれば、それは大歓迎です。

編集: $stuff がエコーアウトします:

VendorTxCode=fdsdgfd&Amount=45.60&Currency=GBP&Description=description...&SuccessURL=http://localhost/ecom_framework/&FailureURL=http://localhost/ecom_framework/&CustomerEmail=luke@actwebdesigns.co.uk&VendorEmail=luke@actwebdesigns.co.uk&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 luke@fgfdgf.co.uk
4

2 に答える 2

1

Direct または Form-integration メソッドを使用してトランザクションを作成しようとしていますか? 購入 URL を間違えたようです... から購入 URL を更新してください:

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

そして、それらが本来あるべき姿であることを確認してください。

于 2011-09-19T16:08:24.650 に答える
0

5005 エラーを停止するには、有効な Sage Pay アカウントに投稿していることを確認し、ベンダー名が正しいことを確認する必要があります。

VendorTxCode フィールドは 40 文字に制限されています。文字列を正しく作成していない場合は、VendorTxCode アンパサンドの後のすべてを誤ってフィールドに投稿している可能性があります。

于 2014-05-01T08:13:27.217 に答える