Authorize.Net的AIM API的简单界面
项目描述
Authorize.Net通过HTTPS协议之上的协议提供信用卡(以下简称“CC”)处理服务。Authorize.Net的客户是“商家”。商家是接受信用卡作为支付手段的实体。此包提供对Authorize.Net的“高级集成方法”(AIM)的简单接口。
本文件中使用的几个术语
authorize:检查CC信息的有效性以及是否有足够的余额
capture:批准将资金从信用卡持卡人转移到商家
settlement:实际将资金从信用卡持卡人转移到商家
credit:从商家向信用卡持卡人退款
voiding:取消之前的交易
结算操作按日批量进行。该批次的截止时间在Authorize.Net商家界面的商家设置中指定。
还有许多其他设置可以通过商家界面进行配置,但此模块试图独立于大多数设置工作。当需要特定设置时,它们将用“所需商家界面设置”短语标注。
交易密钥
每个AIM交易都必须附有商家登录和“交易密钥”。此密钥从商家界面获取。导入CcProcessor类后,您必须传递您的登录和交易密钥。
>>> from zc.authorizedotnet.processing import CcProcessor >>> from zc.creditcard import (AMEX, DISCOVER, MASTERCARD, ... VISA, UNKNOWN_CARD_TYPE) >>> cc = CcProcessor(server=SERVER_NAME, login=LOGIN, key=KEY)
信用(退款)交易
之前已授权的交易可以进行退款。退款金额不能超过已捕获的金额。至少必须提供信用卡号的最后四位,以及交易ID。
只有在银行已结算交易的情况下,信用才会生效,即如果我们立即尝试退款,它将失败。
>>> result = cc.credit(trans_id=auth_trans_id, ... card_num='4007000000027', ... exp_date='0530', ... amount='1.00', ... ) >>> result.response_reason 'The referenced transaction does not meet the criteria for issuing a credit.' >>> result.response 'error'
取消交易
如果我们需要停止尚未完成的交易(如上述捕获的交易信用),我们可以使用void
方法。
>>> result = cc.void(trans_id=auth_trans_id) >>> result.response 'approved'
交易错误
如果交易中存在错误,交易结果会指出。
>>> result = cc.authorize(amount='2.50', card_num='4007000000027', ... exp_date='0599')
结果对象反映了错误。
>>> result.response 'error' >>> result.response_reason 'The credit card has expired.'
response
属性的合法值是‘approved’、‘declined’和‘error’。
地址验证系统(AVS)
AVS用于断言交易提供的计费信息必须(在一定程度上)与持卡人的实际计费数据匹配。网关可以被配置为不允许不满足某些AVS标准的交易。
>>> result = cc.authorize(amount='27.00', card_num='4222222222222', ... exp_date='0530', address='000 Bad Street', ... zip='90210') >>> result.response 'declined' >>> result.response_reason 'The transaction resulted in an AVS mismatch...'
重复窗口
网关提供了一种方法来检测和拒绝一定时间窗口内的重复交易。任何在窗口内重复的具有相同CC信息(卡号和有效期)和金额的交易都将被拒绝。
第一次交易将成功。
>>> result = cc.authorize(amount='3.00', card_num='4007000000027', ... exp_date='0530', invoice_num='123') >>> result.response 'approved'
重复交易将失败,并显示适当的消息。
>>> result2 = cc.authorize(amount='3.00', card_num='4007000000027', ... exp_date='0530', invoice_num='123') >>> result2.response 'error' >>> result2.response_reason 'A duplicate transaction has been submitted.'
可以通过包括唯一的invoice_num字段来解除类似交易的别名。
>>> result3 = cc.authorize(amount='3.00', card_num='4007000000027', ... exp_date='0530', invoice_num='124') >>> result3.response 'approved'
默认窗口大小为120秒,但可以通过将duplicate_window传递给交易方法来提供任何其他值(包括0)。
>>> cc.captureAuthorized(trans_id=result.trans_id).response 'approved'>>> cc.captureAuthorized(trans_id=result.trans_id).response_reason 'This transaction has already been captured.'>>> cc.captureAuthorized(trans_id=result.trans_id, duplicate_window=0 ... ).response 'approved'
但如果在重复窗口内取消相同的交易,则取消不会报告错误。
>>> cc.void(trans_id=result.trans_id).response 'approved'>>> cc.void(trans_id=result.trans_id).response 'approved'
行项目
订单的详细列表可以包含在授权数据中,作为序列的序列。
>>> result = cc.authorize(amount='2.98', card_num='4007000000027', ... exp_date='0530', ... line_items=[ ... # id name description qty unit price tax ... ('1', 'G-1000', 'Gadget', '1', '1.99', 'Y'), ... ('2', 'A-150', 'Accessory','1', '0.99', 'Y'), ... ]) >>> result.response 'approved'
结果将有一个card_type属性。
>>> result.card_type == VISA True
MD5哈希安全功能
Authorize.Net提供通过MD5哈希验证交易响应。使用此功能所需的商家界面设置在“设置和配置文件”下,然后是“MD5哈希”。在提供的字段中输入“盐”值并提交表单。然后您可以将salt参数传递给CcProcessor构造函数以启用响应验证。
警告:此功能正确工作,“amount”字段的格式非常重要。字段必须按货币的“规范”方式格式化。对于美元,这意味着没有前导零和两个(仅两个)小数位。如果请求中的金额格式不正确,哈希将不匹配,交易将引发异常。
如果您想启用哈希检查,请为 CcProcessor 构造函数提供一个 salt 值。如果使用错误的盐值,或者交易中给出的哈希值与真实哈希值不匹配,将引发异常。
>>> cc = CcProcessor(server=SERVER_NAME, login=LOGIN, key=KEY, ... salt='wrong') >>> result = cc.authorize(amount='10.00', card_num='4007000000027', ... exp_date='0530') Traceback (most recent call last): ... ValueError: MD5 hash is not valid (trans_id = ...)
错误检查
在进行授权操作时,如果不传递金额字符串,将引发异常。这是为了避免由于浮点数表示问题而错误地收取金额。
>>> cc.authorize(amount=5.00, number='4007000000027', expiration='0530') Traceback (most recent call last): ... ValueError: amount must be a string
项目详情
zc.authorizedotnet-1.3.1.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cc0f748803830a6fb0c2d05e000234effc7ae1ececae6058ae9303b6c2f8c6b7 |
|
MD5 | 76790713031b6d193af19e68ab73794c |
|
BLAKE2b-256 | 271d3d68bc12ac2783405f00fbc0ac9deb67fd8857e7418c289023b87cdc20fe |