我被赋予了重新设计网站的任务,用户最终会为活动购买门票。
旧网站使用PayPal立即购买按钮,但客户希望网站执行相同的操作,但希望使用SagePay。
在确认页面中显示变量$ ticketNumber和$ ticketAmount的阶段的网站,这是以前的设计有PayPal按钮的地方,所以我必须以某种方式在这里集成SagePay。
我已经浏览了SagePay网站和文档,我已经下载了Integration_and_Protocol_Guidelines pdf和php集成工具包,但我不能做任何事情,因为有大约一百页,包括,库和模板等
如果我使用drop-in或自己的表单方法,我不会感到困扰,因为网站是安全的。
我有来自sagepay的测试vendorname,Integration Key和Integration Password。
sagepay技术支持人员告诉我,鼠尾草是最佳选择,但它解释的3个简单步骤仍然让我感到困惑。
我没有任何代码显示,因为我尝试的所有内容都显示空白页面,所以我做错了。
我做了什么(使用插入式方法),我在确认页面中添加了这些js包括:
<script src="https://pi-test.sagepay.com/api/v1/js/sagepay.js"></script>
<script src="https://pi-test.sagepay.com/api/v1/js/sagepay-dropin.js">
然后我在确认文本下添加了这个脚本,它显示了票号和金额:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://pi-test.sagepay.com/api/v1/merchant-session-keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{ "vendorName": "<myvendorname>" }',
CURLOPT_HTTPHEADER => array(
"Authorization: Basic <Base64 Encoded Integration Key:Integration Password>",
"Cache-Control: no-cache",
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
?>
然后在那之下,我添加了这段代码:
<form>
<h2>Payment Details</h2>
<div id="sp-container"></div>
<div id="submit-container">
<input type="submit">
</div>
</form>
<script>
sagepayCheckout({ merchantSessionKey: 'F42164DA-4A10-4060-AD04-F6101821EFC3' }).form();
</script>
它确实显示了一个卡片输入表单,但在我点击提交按钮后没有显示任何内容。
我确实在表单认为它会用它来发送付款之后添加此代码,但页面只是空白:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://pi-test.sagepay.com/api/v1/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{' .
'"transactionType": "Payment",' .
'"paymentMethod": {' .
' "card": {' .
' "merchantSessionKey": "' . $merchantSessionKey . '",' .
' "cardIdentifier": "' . $cardIdentifier . '"' .
' }' .
'},' .
'"vendorTxCode": "$ticketNo",' .
'"amount": 100,' .
'"currency": "GBP",' .
'"description": "Online Payment",' .
'"apply3DSecure": "UseMSPSetting",' .
'"customerFirstName": "Sam",' .
'"customerLastName": "Jones",' .
'"billingAddress": {' .
' "address1": "407 St. John Street",' .
' "city": "London",' .
' "postalCode": "EC1V 4AB",' .
' "country": "GB"' .
'},' .
'"entryMethod": "Ecommerce"' .
'}',
CURLOPT_HTTPHEADER => array(
"Authorization: Basic <Base64 Encoded Integration Key:Integration Password>",
"Cache-Control: no-cache",
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
?>
我还必须让用户输入他们的账单地址等,因为这似乎是sagepay所要求的,所以我不得不考虑从他们那里抓住它。
我不知道我哪里出错了,因为说明书向我扔了很多代码而没有告诉我该如何处理它。我在他们的文档中的某处读到我不需要很多开发人员的经验,我想我会试一试。我不是一个完整的新手,但我对php很陌生,因为我的职业生涯让我在ASP工作了很多年。
非常感谢任何帮助。
提前致谢。 尼科
答案 0 :(得分:0)
我没有任何代码显示,因为我尝试的所有内容都显示空白页面,所以我做错了。
...
我对php很陌生,因为我的职业生涯让我在ASP工作了很多年。
我要做的第一件事就是进行健全检查。当PHP返回空白页面时,这通常是因为存在错误(例如PHP在生产配置中运行)。所以你应该做的第一件事是:
在Web服务器显然要打开的文件中创建以下代码(我使用index.php)
<?php
echo('This is some PHP');
你应该在屏幕上看到“这是一些PHP”字样。
现在试试这个:
<?php
echo($This_is_some_PHP);
只要你没有名为$ This_is_some_PHP的变量(请说你没有 - 如果你这样做,请暂时注释掉) - 那么你应该会在屏幕上看到错误。
如果您看到一个空白的屏幕,您的PHP正在生产配置中运行 - 通过启用屏幕上的打印错误和错误报告将其切换到开发人员配置。这样当出现问题时,你至少开始有机会调试它们。然后你就可以开始调试这个问题了。
答案 1 :(得分:0)
请检查Apache或Nginx日志。我相信您没有安装curl。