我试图测试我的 sage pay 集成,但无济于事。
这是我的代码:
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