>  기사  >  PHP 프레임워크  >  Laravel 개발: Laravel Cashier 및 Authorize.net을 사용하여 구독 결제를 처리하는 방법은 무엇입니까?

Laravel 개발: Laravel Cashier 및 Authorize.net을 사용하여 구독 결제를 처리하는 방법은 무엇입니까?

王林
王林원래의
2023-06-13 19:15:411286검색

전자상거래의 지속적인 발전과 함께 구독 결제 모델이 점점 더 대중화되고 있습니다. Laravel Cashier는 구독 관리 및 지불 수집을 매우 간단하게 만드는 Laravel 프레임워크 기반의 지불 도구입니다. 이 글에서는 Laravel 애플리케이션에서 Authorize.net과 함께 Laravel Cashier를 사용하여 구독 결제를 처리하는 방법을 설명합니다.

  1. Laravel Cashier 설치

시작하기 전에 Laravel 프레임워크와 Composer 패키지 관리자를 설치했는지 확인해야 합니다. Laravel Cashier를 설치하려면 터미널에 다음 명령을 입력하세요:

composer require laravel/cashier

성공적으로 설치되면 Cashier용 마이그레이션 테이블을 생성해야 합니다. 터미널에서 다음 명령을 실행할 수 있습니다:

php artisan migrate

그러면 결제 관련 계산원 테이블에 필요한 데이터베이스 마이그레이션 파일이 생성됩니다.

  1. Authorize.net API 구성

Authorize.net을 사용하여 결제를 처리하기 전에 서비스를 설치하고 API 자격 증명(API 로그인 ID 및 거래 키)을 얻어야 합니다.

다음 단계를 통해 이러한 작업을 수행할 수 있습니다:

  • 계정을 등록하려면 https://www.authorize.net/으로 이동하세요.
  • 로그인한 후 왼쪽 메뉴에서 "계정"을 선택한 다음 "설정"을 선택하세요. "
  • "보안 설정"에서 "API 자격 증명 및 키"를 선택하세요
  • "새 거래 키"를 클릭하고, 필수 정보를 입력한 후 "제출"을 클릭하세요
  • API 로그인 ID와 거래 키가 팝업 창. 사본을 만들어 안전한 곳에 보관하시기 바랍니다.
  1. Laravel Cashier 구성

시작하기 전에 cashier.php 파일의 매개변수를 구성해야 합니다. 파일은 다음 명령을 사용하여 config 폴더에 생성할 수 있습니다:

php artisan vendor:publish --tag="cashier-config"

다음으로, .env 파일에서 Authorize.net API 관련 매개변수를 설정해야 합니다:

CASHIER_ENV=production
CASHIER_CURRENCY=usd
AUTHORIZE_API_LOGIN_ID=YOUR_API_LOGIN_ID
AUTHORIZE_TRANSACTION_KEY=YOUR_TRANSACTION_KEY
  1. 구독 계획 생성

Laravel을 사용하는 경우 계산원 및 승인. net이 구독 결제를 처리하려면 먼저 구독 계획을 만들어야 합니다. 구독 계획은 다음 명령을 사용하여 생성할 수 있습니다:

php artisan make:model Plan -m

이 명령은 앱 폴더에 계획 모델을 생성하고 이에 대한 마이그레이션 테이블을 생성합니다. 이제 편집을 위해 마이그레이션 파일을 열고 필요한 필드를 추가할 수 있습니다. 다음은 참고용 예시입니다.

Schema::create('plans', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->string('name');
    $table->string('stripe_id');
    $table->string('authorizenet_id');
    $table->integer('price');
    $table->string('interval');
    $table->integer('interval_count');
    $table->integer('trial_period_days')->nullable();
    $table->timestamps();
});

migration 파일을 실행한 후 데이터베이스에 테이블을 생성해야 합니다. 터미널에서 다음 명령을 실행하세요.

php artisan migrate

다음으로 Plan 모델에서 필요한 속성과 메서드를 정의해야 합니다. 예는 다음과 같습니다.

use LaravelCashierSubscription;

class Plan extends Model
{
    public function subscriptions()
    {
        return $this->hasMany(Subscription::class);
    }

    public function getPrice()
    {
        return $this->price / 100;
    }

    public function getFormattedPrice()
    {
        return number_format($this->getPrice(), 2);
    }

    public function authorizeNetPlan()
    {
        return AuthorizeNet_Subscription::create([
            'name'                   => $this->name,
            'intervalLength'         => $this->interval_count,
            'intervalUnit'           => $this->interval,
            'startDate'              => date('Y-m-d'),
            'totalOccurrences'       => '9999',
            'trialOccurrences'       => '0',
            'amount'                 => $this->price,
            'trialAmount'            => '0.00',
            'creditCardCardNumber'   => '',
            'creditCardExpirationDate' => '',
            'creditCardCardCode' => ''
        ]);
    }
}

authorizeNetPlan 메서드는 Authorize.net 구독 계획을 생성하고 관련 정보를 반환합니다. authorizeNetPlan方法将创建Authorize.net订阅计划并返回相关的信息。

  1. 处理订阅付款

一旦订阅计划已经创建,现在就可以向订阅者发送订阅链接。接下来,订阅者可以使用Link点击链接进行订阅付款。

在创建订阅时,需要设置订阅计划和用户相关信息。

以下是一个示例控制器方法:

public function subscribe(Request $request, Plan $plan)
{
    $user = $request->user();
    
    $subscription = $user->newSubscription('default', $plan->stripe_id)->create($request->stripeToken);

    $authorizeSubscription = $plan->authorizeNetPlan();

    $subscription->authorize_net_id = $authorizeSubscription->getSubscriptionId();
    $subscription->save();

    return redirect()->route('home')->with('success', 'Subscription successful');
}

在该示例中,我们使用newSubscription方法为用户创建新的订阅。注意,$request->stripeToken是使用Stripe Checkout生成的令牌。getUserPlan方法在Plan模型中定义,用于获取当前用户的订阅计划。

在创建订阅后,我们将创建的Authorize.net订阅计划的ID保存到Subscription模型中。

  1. 处理取消订阅

当用户想要取消订阅时,需要执行以下操作:

public function cancel(Request $request)
{
    $user = $request->user();

    $subscription = $user->subscription('default');

    $authorizeSubscription = AuthorizeNet_Subscription::cancel($subscription->authorize_net_id);
    
    $subscription->cancel();
    
    return redirect()->route('home')->with('success', 'Subscription cancelled.');
}

在该示例中,我们使用cancel

    구독 결제 처리

    구독 계획이 생성되면 이제 구독자에게 구독 링크를 보낼 차례입니다. 다음으로 구독자는 링크를 사용하여 링크를 클릭하여 구독 비용을 지불할 수 있습니다.

    🎜구독을 생성할 때 구독 요금제와 사용자 관련 정보를 설정해야 합니다. 🎜🎜다음은 컨트롤러 메서드의 예입니다. 🎜rrreee🎜이 예에서는 newSubscription 메서드를 사용하여 사용자에 대한 새 구독을 생성합니다. $request->stripeToken은 Stripe Checkout을 사용하여 생성된 토큰입니다. getUserPlan 메소드는 플랜 모델에 정의되어 있으며 현재 사용자의 구독 플랜을 얻는 데 사용됩니다. 🎜🎜구독을 생성한 후 생성된 Authorize.net 구독 계획의 ID를 구독 모델에 저장합니다. 🎜
      🎜구독 취소 처리🎜🎜🎜사용자가 구독을 취소하려면 다음 작업을 수행해야 합니다. 🎜rrreee🎜이 예에서는 취소를 사용합니다. 사용자 Laravel Cashier 구독 계획을 취소하고 Authorize.net에서 제공하는 방법을 사용하여 구독 계획을 취소하는 방법입니다. 🎜🎜요약🎜🎜Laravel Cashier와 Authorize.net을 사용하면 구독 결제를 쉽게 처리할 수 있습니다. 위의 단계에 따라 빠르게 설정하고 구현하세요. Laravel Cashier는 편리한 결제 도구를 제공합니다. 변화하는 시장 요구 사항을 충족하기 위해 이러한 새로운 모델을 구현해 보는 것은 어떨까요? 🎜

위 내용은 Laravel 개발: Laravel Cashier 및 Authorize.net을 사용하여 구독 결제를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.