为sagepay网关创建基本付费按钮

时间:2012-08-24 11:40:19

标签: button sagepay

我有一位客户注册了sagepay帐户。他目前的网站运行wordpress 3.0,目前没有任何电子商务功能。

他需要一个按钮,让用户通过sagepay提交300英镑的存款(这个数额永远不会改变)。 (通常情况下,我建议使用paypal这样的东西,但显然由于他的业务的旅行性质,paypal将不会让我的客户有专业帐户)

我已经在三月份(How Do I Make a SagePay BuyNow Button?)看了一个类似线程中描述的方法,但是我不确定如何在wordpress的页面中实现这个,对php不是很了解bar基本模板编辑,所以我在$ PAYMENT_CRYPT部分完全迷失了。

如果有人能够提供我需要采取的步骤来实现每次提交相同金额的基本按钮,然后在将它们发送到sagepay网关后收集所有卡详细信息/客户详细信息,我们将非常感激!

1 个答案:

答案 0 :(得分:2)

简而言之,没有。这不是解决这个问题的简单方法。除非您将付款表单链接到SagePay并使用新的IFRAME功能。您可以在WordPress中拥有某些信息,这些信息允许模板页面或模板文件上的PHP代码。

1 - 在PHP服务器中IFRAME表单并自行编写表单,这样CSS将变得像WordPress页面上的CSS

2 - 为其创建付款模块

3 - 为WordPress使用现有的付款电子商务服务器模块 - 已经有很多插件

4 - 创建一个支付按钮超级链接,一旦点击,它将转到服务器上的PHP表单,金额为300英镑。

5 - 使用Nochex或其他支付供应商,Google电子钱包等(这对客户来说不是一个简单的选择)

使用FORM,您可以:

<? 

# Define your vars

$serverLive="https://live.sagepay.com/gateway/service/vspform-register.vsp"
//$serverLive="https://test.sagepay.com/gateway/service/vspform-register.vsp"
$YOUR_VENDOR_LOGIN_NAME="";
$VendorTxCode="406227821909";
$Amount="350.00";
$Currency="GBP";
$Description="1 ACME Widget";
$SuccessURL="http://example.com/success.php";
$FailureURL="http://example.com/fail.php";
$BillingSurname="Smith";
$BillingFirstnames="John";
$BillingAddress1="123 Main Street";
$BillingCity="Anywhere";
$BillingPostCode="29555";
$BillingCountry="USA";
$DeliverySurname="Smith";
$DeliveryFirstnames="John";
$DeliverAddress1="123 Main Street";
$DeliveryCity="Anywhere";
$DeliveryPostCode="29555";
$DeliveryCountry="GBP";

# The address information can be done via jQuery on your page or get some defaults

?>
<form action="<?=$serverLive?>" method="POST" id="SagePayForm" name="SagePayForm">
    <input type="hidden" name="VPSProtocol" value="2.23" />
    <input type="hidden" name="TxType" value="PAYMENT" />
    <input type="hidden" name="Vendor" value="<?= $YOUR_VENDOR_LOGIN_NAME ?>" />
    <input type="hidden" name="Crypt" value="<?= $PAYMENT_CRYPT ?>">    
    <input type="image" src="images/buynow-sagepay.png" />
</form>
<script type="text/javascript">
function submitform()
{
  document.SagePayForm.submit();
}
submitform();
</script>

即使使用此代码,您仍然需要使用一些SagePay库,例如XOR和Crypt函数:

// Crypt and XOR functions
private function simpleXor($string, $password) {
    $data=array();
    for ($i=0; $i < utf8_strlen($password); $i++) {
        $data[$i]=ord(substr($password, $i, 1));
    }
    $output='';
    for ($i=0; $i < utf8_strlen($string); $i++) {
    $output .= chr(ord(substr($string, $i, 1)) ^ ($data[$i % utf8_strlen($password)]));
    }
    return $output;     
}