sharik709 / laravel-authorizenet
此包允许Laravel应用程序轻松使用authorizenet API。
Requires
- authorizenet/authorizenet: dev-master#ef297d3e2d7c1092ddabd2c376eb485aac1aa66c
Requires (Dev)
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-29 05:28:16 UTC
README
此包是基于官方authorizenet包构建的。它是 authorizenet/authorizenet。
使用方法
创建Authorize.net客户资料
$user->anet()->createCustomerProfile();
将信用卡信息保存在数据库中存在风险,并且您还必须遵守PCI标准才能在数据库中保存信用卡信息。小型企业不希望有PCI的麻烦。
小型企业只想向客户收费然后结束。为了解决这个问题,Authorize.net提供了acceptjs。这将允许您直接将信用卡详情发送到Authorize.net,然后它们会发送一些称为不透明数据的数据。您需要从不透明数据中提交两个值 'DataValue' 和 'DataDescriptor'。
为了向客户收费,您应该首先通过上述函数在Authorize.net上创建他们的资料。
这样,Authorize.net会将所有卡片和银行详情保存在客户资料中。
稍后,您可以使用客户资料ID获取付款和其他详情。此包允许您简单地调用 $user->anet()->createCustomerProfile() 并准备就绪。
创建付款资料
$user->anet()->createPaymentProfile([ 'dataValue' => $opaqueData->dataValue, 'dataDescriptor' => $opaqueData->dataDescriptor ], [ 'last_4' => 1234, 'brand' => 'VISA', 'type' => 'card' ])
付款资料是一种解决在数据库中存储信用卡和银行详情问题的方法。
为了在数据库中保存信用卡或银行详情,您需要遵守PCI标准。对于小型企业来说,这并不是理想的做法。因此,您可以使用付款资料,它是为信用卡或银行生成的唯一ID。您可以将它存储在您的数据库中,并对其信用卡或银行账户进行收费。
为了创建付款资料,您需要设置一个表单。用户将在其中提供卡或银行详情。Authorize.net提供了Accept.js,它将表单中的数据发送到Authorize.net,一旦验证通过,Authorize.net将发送 $opaqueData。然后需要将其发送到您的服务器并处理付款资料的创建。
成功创建付款资料后,您将获得付款资料ID。您可以使用此ID对创建此付款资料的卡或银行账户进行收费,并且您可以无限次地重复使用它,只要它引用有效的信用卡或银行账户。
获取付款资料(获取添加的卡和银行账户)
$paymentMethods = $user->anet()->getPaymentMethods();
这将允许您获取您创建的所有付款方式或付款资料。
要仅获取卡片,您可以使用。
$paymentCards = $user->anet()->getPaymentCardProfiles();
要仅获取银行,您可以使用。
$paymentBanks = $user->anet()->getPaymentBankProfiles();
对付款资料进行收费(收费卡片或银行)
// Amount in cents $user->anet()->charge(19000, $paymentProfileId]);
用户可以使用付款资料进行收费。
付款资料是信用卡或银行的唯一ID。请参阅上面的付款资料。
大多数人更喜欢以分的形式保存收费金额。因此,您需要传递要收费的分数,例如 1000 分等于 $10。
退款交易
$user->anet()->refund($amount_in_cents, $refsTransId, $payment_profile_id);
$amount_in_cents 是退款金额。
$refsTransId 您在向用户收费时获得此ID
$payment_profile_id 请参阅上面的信息了解更多关于付款资料ID的详细信息。基本上,在这里它意味着对给定的付款资料ID进行退款
开发中
我在生产环境中使用此代码,但请在将其用于生产之前确保它做您期望的事情。
可用方法
$user->anet()->charge(1200, $paymentProfile); // $12
它将在Authorize.net上创建客户资料
$user->anet()->createCustomerProfile();
它将返回Authorize.net的客户资料ID
$user->anet()->getCustomerProfileId();
$user->anet()->getPaymentProfiles();
$user->anet()->createPaymentProfile();
卡片收费
// $user is your laravel user model $response = $user ->anet() ->card() ->setNumbers(4111111111111111) ->setCVV(111) ->setNameOnCard('John Doe') ->setExpMonth(4) ->setExpYear(42) ->setAmountInCents(1000) // $10 ->charge();
交易方法
当您成功运行 $user->anet()->charge($amount, $paymentProfile) 时,您将获得以下方法:
-
getTransactionResponse
- getResponseCode
- setResponseCode
- getRawResponseCode
- setRawResponseCode
- getAuthCode
- setAuthCode
- getAvsResultCode
- setAvsResultCode
- getCvvResultCode
- setCvvResultCode
- getCavvResultCode
- setCavvResultCode
- getTransId
- setTransId
- getRefTransID
- setRefTransID
- getTransHash
- setTransHash
- getTestRequest
- setTestRequest
- getAccountNumber
- setAccountNumber
- getEntryMode
- setEntryMode
- getAccountType
- setAccountType
- getSplitTenderId
- setSplitTenderId
- getPrePaidCard
- setPrePaidCard
- addToMessages
- issetMessages
- unsetMessages
- getMessages
- setMessages
- addToErrors
- issetErrors
- unsetErrors
- getErrors
- setErrors
- addToSplitTenderPayments
- issetSplitTenderPayments
- unsetSplitTenderPayments
- getSplitTenderPayments
- setSplitTenderPayments
- addToUserFields
- issetUserFields
- unsetUserFields
- getUserFields
- setUserFields
- getShipTo
- setShipTo
- getSecureAcceptance
- setSecureAcceptance
- getEmvResponse
- setEmvResponse
- getTransHashSha2
- setTransHashSha2
- getProfile
- setProfile
- getNetworkTransId
- setNetworkTransId
- jsonSerialize
- set
-
getProfileResponse
-
getRefId
-
getMessages
-
getSessionToken
周期性支付或订阅
您可以使用以下任何一种方法来获取订阅类的实例,该实例允许您管理订阅。它们都是相同的,因为想要确保它们适合您的环境上下文。
$user->anet()->subs(); $user->anet()->subscription(); $user->anet()->recurring();
您可以通过以下方法创建、更新、取消和获取订阅:
1. 创建订阅
$response = $user->anet()->subs()->create([ 'name' => 'Sample Subscription', 'startDate' => '2022-03-12', 'totalOccurrences' => 12, 'trialOccurrences' => 1, 'intervalLength' => 30, 'intervalLengthUnit' => 'days', 'amountInDollars' => 10, // $10 'trialAmountInDollars' => 0, // $0 'cardNumber' => 4111111111111111, 'cardExpiry' => '2038-12', 'invoiceNumber' => 1232434243, 'subscriptionDescription' => 'Some services will be provided some how.', 'customerFirstName' => 'john', 'customerLastName' => 'doe' ]);
$response 将为您提供订阅 ID 以及有关订阅的必要详细信息。
2. 更新订阅
$response = $user->anet()->subs()->update($subscriptionId, [ 'cardNumber' => 4111111111111111, 'cardExpiry' => '2022-12' ]);
3. 取消订阅
$response = $user->anet()->subs()->cancel($subscriptionId);
4. 获取一个订阅
$response = $user->anet()->subs()->get($subscriptionId);
5. 获取带有筛选器的所有订阅
$options = [ 'orderBy' => 'id', 'orderDescending' => false, 'limit' => 300, // Default is 1000 'offset' => 2, // Default is 1 'searchType' => 'subscriptionActive', // subscriptionActive, subscriptionInactive. Default is subscriptionActive ]; $response = $user->anet()->subs()->getList($options);
如果您不想使用筛选器,则不要传递任何选项数组。它将使用默认设置并给出您的列表。
6. 获取订阅的状态
$response = $user->anet()->subs()->getStatus($subscriptionId);
许可证
MIT
安装步骤
步骤 1
执行 composer require sharik709/laravel-authorizenet
步骤 2
如果您正在使用 laravel 5.5 或更高版本,则不需要注册服务提供程序。如果您正在使用 5.4 或更低版本,则需要在您的 config/app.php 中的 providers 数组中注册服务提供程序。
ANet/AuthorizeNetServiceProvider::class
步骤 3
在您的 .env 文件中,您需要定义以下键
AUTHORIZE_NET_LOGIN_ID=
AUTHORIZE_NET_CLIENT_KEY=
AUTHORIZE_NET_TRANSACTION_KEY=
您可以从 authorize.net 的沙箱或实时帐户中获取上述信息。最好在您的 .env.example 文件中也定义上述键
步骤 4
此包需要一张表来存储卡片配置文件 ID 和其他信息。因此,您需要运行迁移以迁移此包的表。
php artisan migrate
步骤 5
为了使 anet() 方法在您的用户模型上可用,您需要将 ANet\Traits\ANetPayments 特性添加到您的模型中。
use ANet\Traits\ANetPayments; class User extends Model { use ANetPayments; }