简单支付php

简单支付php,php,integration,opayo,Php,Integration,Opayo,我的任务是重新设计一个网站,让用户最终购买活动门票 旧网站使用了PayPal的buy now按钮,但客户希望该网站也这样做,但希望使用SagePay 该网站正处于一个确认页面中显示变量$ticketNumber和$ticketMount的阶段,而这正是以前的设计中有PayPal按钮的地方,因此我必须以某种方式在这里集成SagePay 我浏览了SagePay网站和文档,下载了Integration_和Protocol_指南pdf和php集成工具包,但我无法理解任何东西,因为大约有100页,包括、库

我的任务是重新设计一个网站,让用户最终购买活动门票

旧网站使用了PayPal的buy now按钮,但客户希望该网站也这样做,但希望使用SagePay

该网站正处于一个确认页面中显示变量$ticketNumber和$ticketMount的阶段,而这正是以前的设计中有PayPal按钮的地方,因此我必须以某种方式在这里集成SagePay

我浏览了SagePay网站和文档,下载了Integration_和Protocol_指南pdf和php集成工具包,但我无法理解任何东西,因为大约有100页,包括、库和模板等

我不介意,如果我使用下降或自己的形式的方法,因为该网站是安全的

我有sagepay提供的测试供应商名称、集成密钥和集成密码

sagepay技术支持人员告诉我,sagepay pi是一个不错的选择,但它所解释的3个简单步骤仍然让我感到困惑

我没有任何代码可以显示,因为我尝试过的所有内容都显示为空白页,所以我做错了什么

我所做的(使用drop-in方法)是在confirm页面中添加这些js include:

<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);
?>

我没有任何代码可以显示,因为我尝试过的所有内容都显示为空白页,所以我做错了什么

我对php很陌生,因为我的职业生涯让我在ASP工作了很多年

我要做的第一件事是做一次精神检查。当PHP返回一个空白页面时,这通常是因为有错误不让您知道(例如PHP正在生产配置中运行)。所以你首先要做的是:

在web服务器显然要打开的文件中创建以下代码(我使用index.php)


请检查Apache或Nginx日志。我相信您没有安装curl。

为了确保我们在这里的定位正确,您是否在每次提交CC表单时都创建
merchantSessionKey
merchantSessionKey
创建后仅持续400秒。然后您要抓取随您的CC表单一起提交的
cardIdentifier
cardIdentifier
将是代表卡的一次性令牌。Sage Pay webiste在实施Sage Pay PI时提供了更结构化的方法。如果您还没有这样做,并且仍然有困难,请查看
<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);
?>
<?php
echo('This is some PHP');
<?php
echo($This_is_some_PHP);