如何使用 VinceG php-first-data-api 调用演示 url

Posted

技术标签:

【中文标题】如何使用 VinceG php-first-data-api 调用演示 url【英文标题】:How to invoke the demo url using VinceG php-first-data-api 【发布时间】:2014-12-09 02:03:32 【问题描述】:

我正在尝试使用 php 集成 First Data e4 Gateway。我下载了VinceG/php-first-data-api PHP First Data Service API 类。代码附带一些示例。

我有我的终端 ID (API_LOGIN) 和密码(32 个字符的字符串)。

让我困惑的是,当我使用其中一个示例时,我不知道如何告诉班级我要使用演示 url,而不是生产 url。

该类带有两个常量:

const LIVE_API_URL = 'https://api.globalgatewaye4.firstdata.com/transaction/';
const TEST_API_URL = 'https://api.demo.globalgatewaye4.firstdata.com/transaction/';

在 First Data 控制台中,当我生成密码时,它说使用 v12 api,/transaction/v12,所以我更改了protected $apiVersion = 'v12';

我要做的就是使用 First Data e4 编写我的第一个开发事务。我还没有得到任何回应。显然,我需要很多手才能开始。

当我建立一个使用 BalancedPayments 的网站时,他们有一个非常好的支持论坛,而且我能够很快地运行它。 First Data 有很多文档,但由于某些原因,其中没有多少好的 PHP 示例。

希望有高手已经掌握了VinceG/php-first-data-api,可以帮我写一个行得通的脚本。

这是我正在使用的预授权代码,它调用 FirstData 类:

// Pre Auth Transaction Type
define("API_LOGIN",     "B123456-01");
define("API_KEY",    "xxxxxxxxxxyyyyyyyyyyyyzzzzzzzzzz");

$data = array();

$data['type'] = "00";
$data['number'] = "4111111111111111";
$data['name'] = "Cyrus Vance";
$data['exp'] = "0618";
$data['amount'] = "100.00";
$data['zip'] = "33333";
$data['cvv'] = "123";
$data['address'] = "1111 OCEAN BLVD MIAMI FL";
$orderId = "0001";

require_once("FirstData.php");

$firstData = new FirstData(API_LOGIN, API_KEY, true);

// Charge
$firstData->setTransactionType(FirstData::TRAN_PREAUTH);
$firstData->setCreditCardType($data['type'])
        ->setCreditCardNumber($data['number'])
        ->setCreditCardName($data['name'])
        ->setCreditCardExpiration($data['exp'])
        ->setAmount($data['amount'])
        ->setReferenceNumber($orderId);

if($data['zip']) 
    $firstData->setCreditCardZipCode($data['zip']);


if($data['cvv']) 
    $firstData->setCreditCardVerification($data['cvv']);


if($data['address']) 
    $firstData->setCreditCardAddress($data['address']);


$firstData->process();

// Check
if($firstData->isError()) 
    echo "!!!";
    // there was an error
 else 
    echo "@@@";
    // transaction passed

【问题讨论】:

【参考方案1】:

我的第一个问题是我没有创建(申请,立即批准) demo account on First Data。我没有意识到这是 First Data 的另一件事。例如,在 Balanced Payments 上,您有一个帐户,您可以在带有测试值的测试 URL 上运行脚本。

在“管理”面板中,单击“终端”,然后在 ECOMM 行中单击您的网关编号(看起来像 AH1234-03),然后您必须在密码上单击“生成”将其保存到您的个人笔记中),然后点击更新。

现在替换测试脚本中的参数值。我使用了一个看起来像这样的变量赋值块:

define("API_LOGIN",     "AH1234-05"); //fake
define("API_KEY",    "44p7797xxx790098z1z2n6f270ys1z0x"); //fake

$data = array();

$data['type'] = "03";
$data['number'] = "4111111111111111";
$data['name'] = "Cyrus Vancce";
$data['exp'] = "0618";
$data['amount'] = "100.00";
$data['zip'] = "33320";
$data['cvv'] = "123";
$data['address'] = "1234 N OCEAN BLVD MIAMI BEACH FL";
$orderId = "0001";

require_once("FirstData.php");

$firstData = new FirstData(API_LOGIN, API_KEY, true);

在 VinceG 测试脚本结束时,我使用 print_r 输出网关响应,如下所示:

$firstData->process();

// Check
if($firstData->isError()) 
    echo "!!!";
    // there was an error
 else 
    echo "@@@";
    // transaction passed

echo "<pre>";
print_r($firstData);

【讨论】:

以上是关于如何使用 VinceG php-first-data-api 调用演示 url的主要内容,如果未能解决你的问题,请参考以下文章

[精选] Mysql分表与分库如何拆分,如何设计,如何使用

如果加入条件,我该如何解决。如果使用字符串连接,我如何使用

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等