nidux / cybersource-soap-client
Nidux 的 CyberSource SOAP 客户端
Requires
- php: >= 7.0
- ext-curl: *
- ext-openssl: *
- ext-simplexml: *
- ext-soap: *
- myclabs/php-enum: ^1.7
Requires (Dev)
- phpunit/phpunit: ^7.3
This package is auto-updated.
Last update: 2024-09-26 20:51:44 UTC
README
这是由 Nidux 修改过的 CyberSource SOAP Toolkit API 的非官方 SOAP 客户端。
Packagist
您可以在 Packagist 上找到 nidux/cybersource-soap-client。如果您想从 Packagist 安装 SDK,请在您的应用 'composer.json' 文件中添加以下依赖项。
"require": { "nidux/cybersource-soap-client": "*" },
前提条件
- PHP 7.0 或更高版本
- 一个 CyberSource 账户。您可以在 这里 创建评估账户。
- 一个 CyberSource 交易密钥。
安装
您可以通过 Composer 或手动安装此客户端。您可以在 cybs.ini
文件中提供包含商户 ID、交易密钥和相应的 WSDL 文件 URL 的文件位置(此包更新时的最新版本)。以下是可用的最新 WSDL,如果您想手动测试,可以使用 SOAPUI
使用 Composer 安装
首先,请确保您已安装 Composer。您可以根据 官方网站 上的说明进行操作。Composer 安装完成后,您可以在项目根目录下运行
composer.phar install
然后,为了使用客户端,您需要包含 Composer 生成的自动加载文件
require_once('/path/to/project/vendor/autoload.php');
入门
PHP 客户端将为您生成请求消息头,并包含由 WSDL 文件指定的方法。
创建简单请求
您将主要使用的方法是 runTransaction()
。要运行交易,您首先需要构造一个客户端以生成请求对象,然后您可以填充必要的字段(请参阅 文档 中的示例请求)。对象将被转换为 XML,因此对象的属性需要与正确的 XML 格式相对应。
$client = new CybersourceSoapClient(); $request = $client->createRequest(); $card = new stdClass(); $card->accountNumber = '4111111111111111'; $card->expirationMonth = '12'; $card->expirationYear = '2020'; $request->card = $card; // Populate $request here with other necessary properties $reply = $client->runTransaction($request);
从 XML 创建请求
您可以从文件或 XML 字符串中创建请求。XML 请求格式在 使用 XML 部分 此处 描述。以下是使用 XML 文件运行交易的示例
$referenceCode = 'your_merchant_reference_code'; $client = new CybersourceSoapClient(); $reply = $client->runTransactionFromFile('path/to/my.xml', $referenceCode);
或者,您也可以创建自己的 XML 字符串并使用它
$xml = ""; // Populate $xml $client = new CybersourceSoapClient(); $client->runTransactionFromXml($xml);
使用名称值对
为了使用名称值对运行交易,请确保在 cybs.ini
中设置了 NVP 交易处理器的 WSDL 的值。然后使用 CybsNameValuePairClient
如下所示
$client = new CybersourceNVPClient(); $request = array(); $request['ccAuthService_run'] = 'true'; $request['merchantID'] = 'my_merchant_id'; $request['merchantReferenceCode'] = $'my_reference_code'; // Populate $request $reply = $client->runTransaction($request);
如何获取 CardType
有一个辅助类可以使用 getCardType($cardNumber)
方法。您需要提供卡号,您将获得在 XML/Object 中使用的正确 CardType 值,当无法检测到卡的品牌时,它将返回 Null。
$cardTypeValue = CybersourceHelper::getCardType('4111111111111111'); //it will return 001