承接 sharik709/laravel-authorizenet 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

sharik709/laravel-authorizenet

Composer 安装命令:

composer require sharik709/laravel-authorizenet

包简介

This package allows laravel application to use authorizenet api easily.

README 文档

README

This package is built on top of official authorizenet package. Which is authorizenet/authorizenet.

Usage

Create Authorize.net customer profile

$user->anet()->createCustomerProfile();

Saving credit card information in database is a risk and also you have to be PCI complient in order to save credit card information in your database. Small business do not want the hassle of PCI.

Small Businesses just want to charge their customer and be done with it. To solve this problem authorize.net provides acceptjs. It will allow you to send credit card details directly to authorize.net and then they will send you some data called opaque data. You will need to submit two values from opaque data 'DataValue' and 'DataDescriptor'.

In order to charge a customer. You should first create their profile on authorize.net via above function.

That way authorize.net will keep all cards and banks details inside customer profile.

Later, you can use customer profile id to get payment and other details. This package allows you to simply call $user->anet()->createCustomerProfile() and you are ready to move.

Create Payment Profile

$user->anet()->createPaymentProfile([
    'dataValue' => $opaqueData->dataValue,
    'dataDescriptor' => $opaqueData->dataDescriptor
], [
    'last_4' => 1234,
    'brand'  => 'VISA',
    'type'   => 'card'
])

Payment Profile is a way to solve a problem with storing credit and bank details in database.

In order to save credit card or bank details in database you need to be PCI compliant. Which in case of small business not ideal to do. So, Instead of using actual card numbers and bank details you can use payment profiles it is a unique id generated for a credit card or bank. Which you can store in your database and charge credit card or bank account.

In order to create payment profile you need to setup a form. Where user will provide card or bank details. Authorize.net provides Accept.js which will take data from your form and send it to authorize.net and once validated authorize.net will send you $opaqueData which then needs to be sent to your server and process creation of a payment profile.

After creating a payment profile successfully. You will get Payment Profile ID. Which you can use to charge that card or bank account for which this payment profile is created and you can reuse it as many times as it referring to a valid credit card or bank account.

Get Payment Profiles (Get added Cards and Bank Accounts)

$paymentMethods = $user->anet()->getPaymentMethods();

It will allow you to get all payment methods or payment profiles created by you.

to only get card. You can use.

$paymentCards = $user->anet()->getPaymentCardProfiles();

to only get bank. You can use.

$paymentBanks = $user->anet()->getPaymentBankProfiles();

Charge a Payment Profile (Charge Card or Bank)

// Amount in cents 
$user->anet()->charge(19000, $paymentProfileId]);

User can be charged with Payment Profile.

Payment Profile is a unique id for a credit card or bank. Read about Payment Profile above.

Most people prefer saving charge amount in cents. So, You pass in the cents you want to charge like 1000 cents for $10

Refunding transaction

$user->anet()->refund($amount_in_cents, $refsTransId, $payment_profile_id);

$amount_in_cents it the refund amount.

$refsTransId You get this id when you charge a user

$payment_profile_id read above for more information on payment profile id. Basically, here it means refund to given payment profile id

Under Development

I'm using this code on production but please be sure. That it does what you expect before using it in production.

Available Methods

$user->anet()->charge(1200, $paymentProfile); // $12

It will create customer profile on authorizenet

$user->anet()->createCustomerProfile();

It will return authorizenet's customer profile id

$user->anet()->getCustomerProfileId();
$user->anet()->getPaymentProfiles();
$user->anet()->createPaymentProfile();

Card Charge

        // $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();

Transaction Methods

when you run $user->anet()->charge($amount, $paymentProfile) on successful request you will get following methods

  • 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

Recurring Payments or Subscriptions

You can use any of the following method to get instance of subscription class which allow you to manage subscriptions. They all are same, gave them different aliases because wanted to make sure it fits your env context.

    $user->anet()->subs();
    $user->anet()->subscription();
    $user->anet()->recurring();

You can create, update, cancel and get subscriptions via following methods

1. Create Subscription

$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 will give you subscription id and required details regarding the subscription.

2. Update Subscription

$response = $user->anet()->subs()->update($subscriptionId, [
    'cardNumber' => 4111111111111111,
    'cardExpiry' => '2022-12'
]);

3. Cancel Subscription

$response = $user->anet()->subs()->cancel($subscriptionId);

4. Get a Subscription

$response = $user->anet()->subs()->get($subscriptionId);

5. Get all subscriptions with filters

$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);

if you don't want to use filters don't pass any options array. It will use defaults and give you your list.

6. Get status of the subscription

$response = $user->anet()->subs()->getStatus($subscriptionId);

License

MIT

Steps to install

Step 1

do composer require composer require sharik709/laravel-authorizenet

Step 2

If you are using laravel 5.5 or above then you do not need to register service provider. If you are using 5.4 or less then you will need to register service provider in you config/app.php providers array.

ANet/AuthorizeNetServiceProvider::class

Step 3

in your .env file you will need to define following keys

AUTHORIZE_NET_LOGIN_ID=
AUTHORIZE_NET_CLIENT_KEY=
AUTHORIZE_NET_TRANSACTION_KEY=

you can obtain above information from authorize.net's sandbox or live account. It's best if you define above keys in your .env.example file as well

Step 4

This package requires a table to hold records for cards profile ids and other information. So, You will need to run migration to migrate this package's tables.

php artisan migrate

Step 5

To make anet() method available on your user model. You need to add ANet\Traits\ANetPayments trait to your model.

use ANet\Traits\ANetPayments;

class User extends Model {
    use ANetPayments;
}

sharik709/laravel-authorizenet 适用场景与选型建议

sharik709/laravel-authorizenet 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.14k 次下载、GitHub Stars 达 17, 最近一次更新时间为 2019 年 03 月 16 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 sharik709/laravel-authorizenet 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 sharik709/laravel-authorizenet 我们能提供哪些服务?
定制开发 / 二次开发

基于 sharik709/laravel-authorizenet 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 2.14k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 17
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 17
  • Watchers: 1
  • Forks: 8
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-03-16