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的支持