speckcommerce/speck-authnet

该软件包最新版本(dev-master)没有提供许可证信息。

一个通用模块,用于向ZF2应用程序添加Authorize.net支持。

dev-master 2012-11-19 20:14 UTC

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子模块,因此您应该不需要

贡献者

社区

加入Freenode IRC网络:#speckcommerce。我们目前人数不多,但我们是一群全心全意致力于此项目的团队。

入门

将module.config.php.dist移动到module.config.php,并用您自己的值替换以下值。

  • tran_key - Authorize.net提供的交易密钥
  • login - Authorize.net提供的登录名
  • mode - 可能的值是sandboxlive

示例用法

客户端

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