vkopytich13/cybersource-rest-client-php

CyberSource REST API 客户端 SDK


README

CyberSource PHP 客户端为您提供了从 PHP 应用程序访问 CyberSource REST API 的便捷方式。

Version

要求

  • PHP 5.6+
  • 启用 cURL PHP 扩展
  • 启用 JSON PHP 扩展
  • 启用 MBString PHP 扩展
  • 启用 PHP_APCU PHP 扩展。您需要根据您的平台(Windows/Linux/Mac)下载它。
  • CyberSource 账户
  • CyberSource API 密钥

依赖项

  • PHP-JWT:JWT 令牌生成
  • CURL:与支付网关的 Http 通信
  • PHP_APCU:缓存
  • phpunit-5.7.25:单元测试
  • phpunit-5.7.25 代码覆盖率:Sonar 覆盖率

安装

Composer

我们推荐使用 Composer(注意:我们绝不推荐您覆盖新的 secure-http 默认设置)按照以下示例更新您的 composer.json 文件,然后运行 composer update

{
  "require": {
  "php": ">=5.6",
  "cybersource/rest-client-php": "0.0.25"
  }
}

注册与配置

使用此 SDK 和 CyberSource API 需要在我们的系统中拥有账户。您可以在这里找到获取测试账户和创建密钥的详细信息

一旦您有了密钥,只需将它们加载到代码中相应的变量中即可,如下面的示例代码处理 API 请求的认证部分。

请记住,此 SDK 用于在服务器端 PHP 应用程序中访问 CyberSource REST API,并且凭证应始终安全存储并适当访问。

SDK 使用示例和示例代码

要开始使用此 SDK,我们强烈建议下载我们的示例代码库

在该存储库中,我们有针对 API 所有常用功能的综合示例代码

此外,您可以在我们的 API 参考指南中找到有关 API 结构的详细信息及示例

API 参考指南提供了特定请求所需信息的示例以及这些信息应该如何格式化。使用这些示例,您可以轻松确定需要哪些方法才能使用此 SDK 将该信息包含在请求中。

MetaKey 支持

MetaKey 是一个可用于一个、一些或所有商户(或账户,如果由组合用户创建)的单个密钥。

组合或父账户拥有密钥,并在使用 MetaKey 时被认为是交易提交者,而商户拥有交易。

即使生成了 MetaKey,MID 仍然可以为自己创建密钥。

有关 MetaKey 的更多信息,请参阅新业务中心用户指南

要为 API 请求设置 API 凭据,请在 ExternalConfiguration.php 文件中配置以下信息

在您的应用程序 Resources 文件夹中创建一个名为 ExternalConfiguration.php 的文件,并按照以下要求配置以下信息,类似于 这个

对于 Http 签名认证

ExternalConfiguration.php文件中配置以下信息

  • 认证类型:商户应输入“HTTP_SIGNATURE”以使用HTTP认证机制。
  • 商户ID:商户将提供从EBC门户获取的商户ID。
  • MerchantSecretKey:商户将提供从EBC门户获取的秘密密钥值。
  • MerchantKeyId:商户将提供从EBC门户获取的密钥ID值。
  • 启用日志:要开始日志条目,提供true否则输入false
  • LogDirectory:商户将提供日志创建的目录路径。
  • LogMaximumSize:商户将提供日志文件的尺寸值。
  • LogFilename:商户将提供日志文件名。
   $this->authType          = "HTTP_SIGNATURE";
   $this->runEnv            = "apitest.cybersource.com";
   $this->merchantID        = <merchantID>;
   $this->apiKeyID          = <merchantKeyId>;
   $this->secretKey         = <merchantSecretKey>;

   $this->enableLog         = true;
   $this->logSize           = <logMaximumSize>;
   $this->logFile           = <logDirectory>;
   $this->logFilename       = <logFilename>;

   $this->proxyUrl          = <proxyHost>;
   $this->proxyHost         = <proxyPort>;

   $this->useMetaKey        = false;

对于Jwt签名认证

ExternalConfiguration.php文件中配置以下信息

  • 认证类型:商户应输入“JWT”以使用JWT认证机制。
  • 商户ID:商户将提供从EBC门户获取的商户ID。
  • keyAlias:JWT令牌生成时使用的商户ID别名。
  • keyPassword:JWT令牌生成时使用的商户密码别名。
  • keyFileName:从EBC门户生成的密钥文件名,不包括扩展名部分 .P12
  • keysDirectory:密钥放置的目录路径。
  • 启用日志:要开始日志条目,提供true否则输入false
  • LogDirectory:商户将提供日志创建的目录路径。
  • LogMaximumSize:商户将提供日志文件的尺寸值。
  • LogFilename:商户将提供日志文件名。
   $this->authType            = "JWT";
   $this->runEnv              = "apitest.cybersource.com";
   $this->merchantID          = <merchantID>;

   $this->keyAlias            = <keyAlias>;
   $this->keyPass             = <keyPassword>;
   $this->keyFilename         = <keyFileName>";
   $this->keyDirectory        = <keysDirectory>;

   $this->enableLog           = true;
   $this->logSize             = <logMaximumSize>;
   $this->logFile             = <logDirectory>;
   $this->logFilename         = <logFilename>;

   $this->proxyUrl            = <proxyHost>;
   $this->proxyHost           = <proxyPort>;

   $this->useMetaKey          = false;

对于使用MetaKey

MetaKey可用于HTTP签名和JWT认证

对于HTTP签名认证

   $this->authType            = "HTTP_SIGNATURE";
   $this->merchantID          = <child merchantID>;
   $this->apiKeyID            = <MetaKey merchantKeyId>;
   $this->secretKey           = <Metakey merchantsecretKey>;
   $this->useMetaKey          = true;
   $this->portfolioID         = <Portfolio ID>;

对于JWT认证

   $this->authenticationType  = "JWT";
   $this->merchantID          = <child merchantID>;
   $this->keyAlias            = <keyAlias>;
   $this->keyPass             = <keyPassword>;
   $this->keyFileName         = <keyFileName>;
   $this->keyDirectory        = <keysDirectory>;
   $this->useMetaKey          = true;

在沙箱环境和生产环境之间切换

CyberSource维护一个完整的沙箱环境,用于测试和开发目的。这个沙箱环境是我们生产环境的精确副本,其中交易授权和结算过程被模拟。默认情况下,此SDK配置为与沙箱环境通信。要切换到生产环境,请在Resources\ExternalConfiguration.php中设置适当的属性。

例如

   // For TESTING use
   // $this->runEnv = "apitest.cybersource.com";
   // For PRODUCTION use
   $this->runEnv = "api.cybersource.com";

API参考指南提供了特定请求所需信息的示例以及该信息的格式化方式。使用这些示例,您可以轻松确定需要哪些方法来使用此SDK将信息包含在请求中。