speckcommerce / speck-authnet
一个通用模块,用于向ZF2应用程序添加Authorize.net支持。
Requires
- php: >=5.3.3
- zendframework/zendframework: 2.*
This package is auto-updated.
Last update: 2024-09-13 01:28:02 UTC
README
一个通用模块,用于向ZF2应用程序添加Authorize.net支付支持。
简介
SpeckAuthnet是一个模块,可以在Speck Commerce之外使用,通过Authorize.net支付网关接受支付。该模块目前支持Authorize.net AIM API操作。
要开始,请访问Authorize.net 开发中心
Authorize.Net API 文档
要集成此模块,您需要在Authorize.net上注册账户。请参阅开发者网站上的说明。
此模块目前支持以下AIM调用与API版本3.1
- AUTH_CAPTURE和AUTH_ONLY
- CREDIT
- VOID
- ECHECK
- PRIOR_AUTH_CAPTURE
- CAPTURE_ONLY
需求
SpeckCommerce的依赖项设置为Git子模块,因此您应该不需要
- PHP 5.3.3+
- Zend Framework 2(最新master)
贡献者
- [Steve Rhoades] (https://github.com/SteveRhoades)(即srhoades)
社区
加入Freenode IRC网络:#speckcommerce。我们目前人数不多,但我们是一群全心全意致力于此项目的团队。
入门
将module.config.php.dist移动到module.config.php,并用您自己的值替换以下值。
- tran_key - Authorize.net提供的交易密钥
- login - Authorize.net提供的登录名
- mode - 可能的值是
sandbox或live
示例用法
客户端
SpeckAuth API名称:SpeckAuthnet\Client
SpeckAuthnet模块使用单个客户端。您将使用此客户端访问API并调用Authnet端点。客户端提供流畅的接口,允许您链式调用方法。
//start by getting an instance of the client, in this example I will be leveraging the ServiceManager.
$client = $sm->get('SpeckAuthnet\Client');
有三种方式通过客户端与API交互。
- 使用
Client::setData($data)在API上设置预配置的键/值对数组。键与Authorize.net AIM文档中的字段相同,但去掉x_ - 通过客户端代理调用API
- 在API本身上操作,调用
Client::getApi()
信用卡
SpeckAuthnet API名称:Aim\CreditCard
默认情况下,CreditCard API的授权类型为AUTH_ONLY,也可以将其配置为向Authorize.net发出AUTH_CAPTURE调用。SpeckAuthnet模块包含对所有可用字段的支援,您可以查看模块中包含的单元测试或查阅Authorize.net开发者网站上的文档以获取完整列表。
$paymentInfo = array(
'amount' => '20.00',
'card_num' => '4111111111111111',
'exp_date' => '122012',
'address' => '2065 nestall rd',
'city' => 'laguna beach',
'state' => 'california',
'zip' => '92656',
'country' => 'US',
'first_name' => 'steve',
'last_name' => 'rizzo'
);
//Authorize Only
$response = $client->api('Aim\CreditCard')
->setData($paymentInfo)
->send();
//Authorize Capture
$response = $client->api('Aim\CreditCard')
->setData($paymentInfo)
->setType('AUTH_CAPTURE')
->send();
echo $response->isApproved();
先授权捕获
SpeckAuthnet API名称:Aim\PriorAuthCapture
调用 AUTH_ONLY 和 PRIOR_AUTH_CAPTURE 代表一笔完整的交易。当您准备好捕获仅授权的交易时,将使用此API调用。此外,此API支持将捕获分散在多个授权请求中:请参阅AIM API文档中的“拆分支付”部分以获取详细信息。
$response = $client->api('Aim\PriorAuthCapture')
->setAmount($amountToCapture)
->setTransactionId($transactionId)
->send();
echo $response->isSucces();
ECheck
SpeckAuthnet API名称:Aim\ECheck
使用此API处理支票交易。
注意:这需要在Authorize.net中进行额外设置。
$response = $client->api('Aim\ECheck')
->setAmount('20.00')
->setBankAbaCode('160000000001')
->setBankAcctNum('1234567890')
->setBankAcctType('CHECKING')
->setBankName('Bank of America')
->send();
echo $response->isApproved();
取消
SpeckAuthnet API名称:Aim\Void
要取消交易,您需要原始授权返回的交易ID。
//
$response = $client->api('Aim\Void')
->setTransactionid($transactionId)
->send();
echo $response->isSuccess();
退款
SpeckAuthnet API名称:Aim\Credit
退款不能应用于仅授权的交易。您可以使用完整的卡号、掩码的最后四位数字或简单地使用最后四位数字(4111111111111111, XXXX4111, 4111)。
注意:除非您正在进行未链接的退款,否则退款只能应用于已结算的交易。
注意:默认的退款方法是 CC,如果设置了bankAbaCode或bankAcctNum,则将自动更改为 ECHECK。同样,您可以通过调用 setMethod($method); 来更改方法。
注意:未链接的退款必须排除交易ID,并提供完整的信用卡号和到期日期。
$response = $client->api('Aim\Credit')
->setCardNum($accountNum)
->transactionId($transactionId)
->send();
echo $response->isSuccess();
待办事项
- 改进集成测试
- 重构到相关异常类
- 添加对CIM的支持