Stripe, PHP, 구독 - 빠른 시작 설명서

[원본: 2020년 10월 7일]
[업데이트 날짜: 2020년 10월 19일]
[업데이트 날짜: 2020년 10월 21일]
우선 줄무늬가 강하다고 할게요.그들은 당신에게 던진 모든 것을 처리할 수 있는 튼튼하고 유연한 구독api를 구축했습니다.그러나 이런 유연성은 복잡성을 가져올 수밖에 없다.그들의 문서는 매우 좋고 개발자에 대한 지지도 매우 좋으나, 나는 이러한 빠른 안내서를 찾아서 내가 입문하는 것을 돕기를 매우 기쁘게 생각한다.
그 다음으로 Stripe팀은 업데이트된 프레임워크를 위해 플러그인, 예를 들어 Flatter, 심지어 Flatter 웹을 개발했는데 모두 심각하게 정체되었다.이것은 PHP로 모든 것을 구축하고 REST api를 통해 필요한 내용을 Flatter 클라이언트에 공개해야 한다는 것을 의미한다.
갱신: 그래서 나는 발표하기 전에 우리가 판매세를 고려하지 않았다는 것을 깨달았다.과거에 Stripe를 사용하여 직접 구매를 할 때, 우리는 단지 시스템에서 영수증을 관리하여, Stripe가 세금과 소계를 전문적으로 처리하는 것이 아니라 총 금액만 처리하도록 했다.매력 있어.그러나 나를 낙담하게 한 것은 구독이 그렇지 않다는 것이다.요컨대, 우리는 지금 우리가 판매하고자 하는 모든 지역의 세율을 입력해야 한다.
https://stripe.com/docs/billing/taxes/tax-rates
따라서, 각 지역/주/국가의 세율을 stripe dashboard에 수동으로 추가하거나,api를 통해 코드를 작성해서api를 통해 세율 id를 우리 시스템의 지역과 연결시킨 후, 우리는 구독을 만들 때, 그룹의 세율 id를 구독에 적용할 수 있습니다.구독에 직접 세율을 적용할 수 없습니다.이것은 우리의 발차기 시간이다.비록 Stripe의 기능은 강하지만, 단지 간단한 매달 구독 서비스를 정상적으로 일하게 하는 것만으로는 이렇게 많은 노력을 할 가치가 없다.
따라서 다음과 같은 목표를 달성해야 합니다.
  • 제품 목록 및 각 제품의 가격 등급을 획득하여 고객에게 제시
  • 고객이 신용 카드
  • 로 결제 방식을 추가할 수 있음
  • 고객을 위해 스트라이프 고객 계좌를 만들고 신용카드를 연결한다.
  • 제품, 가격, 결제 방법 수집 및 구독 작성
  • 고객에게 구독을 취소하게 하는 것은 우리의 특정한 용례에서 다음 갱신 날짜까지 이 계획을 보류하고 이 계획이 끝날 때까지 보류한다는 것을 의미한다.
  • 고객이 제품에 대한 계획을 변경할 수 있도록 지원
  • 고객이 구독에서 사용하는 결제 방식을 변경할 수 있도록 함
  • 고객이 현재 구독을 볼 수 있도록 함
  • 고객이 구독과 관련된 모든 청구서를 볼 수 있도록 함
  • 자체 데이터베이스에서 구독 추적
  • 우리 시작합시다!
    첫걸음
    Stripe Dashboard에서 제품과 가격을 작성합니다.이것은 매우 간단해서 코드가 아니기 때문에 세부 사항을 건너뛰었다.
    두 번째 단계.
    제품 및 가격 목록을 보려면 다음과 같이 하십시오.
    $products = \Stripe\Product::all([]);
    
    foreach($products as $product){
      $product->prices = \Stripe\Price::all(['product'=>$product->id])->data;
    }
    
    세 번째.
    고객 계정을 만듭니다.
    $customer = \Stripe\Customer::create(([
            'email' => '[email protected]',
            'description' => 'Valued Customer',
            'name' => 'Ed Ward'
    ]));
    $stripe_customer_id = $customer->id;
    
    네 번째 단계.
    결제 방법을 만들고 SetupIntent를 생성하여 고객을 결제 방법과 연결하고 카드를 확인합니다.카드와off 세션의 사용 상황을 확인하기 위해 confirm true를 선택했습니다. 시험 기간이 있기 때문에 첫 번째 지불은 오프라인입니다.
    $pmt_method = \Stripe\PaymentMethod::create([
         'type'=>'card',
         'card'=> [
             'number' => '4242424242424242',
             'exp_month' => 2,
             'exp_year'=> 2022,
             'cvc' => '343',
             ]
    ]);
    
    $intent = \Stripe\SetupIntent::create([
          'payment_method_types'=>['card'],
          'payment_method' => $pmt_method->id,
          'customer' => $stripe_customer_id,
          'description' => 'Associate cc with cust for subscription',
          'confirm' => true,
          'usage' => "off_session"
    ]);
    
    다섯 번째.
    우리는 현재 지불 방식, 고객, 제품, 가격이 생겼다.실제로 당신이 구독한 것은 가격이 아니라 제품입니다.우리 지금부터 시작합시다.
    $stripe_sub = \Stripe\Subscription::create([
           'customer' => $stripe_customer_id,
           'default_payment_method' => $pmt_method->id,
           'items' => [
                ['price' => $price_id]
                ]
    ]);
    $subscription_id = $stripe_sub->id;
    $subscription_item_id = $stripe_sub->items->data[0]->id;
    
    여섯 번째.
    고객은 구독을 취소할 수 있을 것이다.처음에 나는 구독 삭제를 사용하려고 시도했지만, 이것은 즉각적인 것이지, 우리가 원하는 것이 아니다.다음 방법은 현재 지불 기한을 먼저 운행하고 구독에서 지불 방식을 삭제하는 것입니다.
    주의: 구독 설정은 시간대 종료 시 취소, 시간대 종료, 현재 날짜 시간 설정 취소, 진짜 (우리) 로 설정 취소, 상태는 활성 상태입니다.이 상태에서\u period end의 cancel 을false로 변경하여 구독을 재개할 수 있습니다.가입 취소 날짜가 지나면 상태는 스트라이프에 따라 취소됨으로 변경되고 종료 날짜 시간을 설정합니다.구독이 취소됨 상태이면 변경할 수 없습니다. 사용자가 구독을 다시 시작하려면 새 구독을 만들어야 합니다.
    그것은 구독을 삭제하지 않고 사용자가 나중에 계속 구독할 수 있도록 합니다.
    \Stripe\Subscription::update($subscription_id,
          ["cancel_at_period_end" => true, 
          "default_payment_method" => ""
    ]);
    
    일곱 번째.
    계획을 바꾸다. 같은 제품이지만 다른 가격 id를 의미한다. 이것도 업데이트가 될 것이다.구독 항목 id를 자신의 데이터베이스에 저장하면 도움이 됩니다. 이것은 기본적으로 프로젝트의 가격 id를 대체하기 때문입니다.
    \Stripe\Subscription::update($subscription_id,
          [
           'items' => [
            [   'id' => $subscription_item_id,
                'price' => $data->price_id
            ]
          ]
    ]);
    
    여덟 번째.
    활성 상태의 가입에 대한 결제 방법을 변경합니다.기본적으로 4단계를 반복한 다음 다음과 같이 가입을 업데이트합니다.
    \Stripe\Subscription::update($subscription_id,
           [
            'default_payment_method' => $new_payment_method_id
    ]);
    
    아홉 번째.
    고객은 현재 구독을 볼 수 있어야 합니다.
    \Stripe\Subscription::all([
                'customer'=> $stripe_customer_id
            ]);
    
    열 번째.
    고객은 구독과 관련된 모든 지불된 영수증을 볼 수 있어야 한다.
    $invoices = \Stripe\Invoice::all(['subscription'=> $subscription_id])->data;
    
    11번.
    일단 내가 최종적으로 이 기능을 실현하면 나의 구독표는 내가 필요로 하는 정보를 처리하거나 간결하게 저장하고 싶은 정보, 예를 들어 구독 항목 id와 닉네임을 처리하기 위해 여러 번 바뀌었다.일단 먼지가 가라앉으면 이것이 바로 책상의 모습이다.
    CREATE TABLE `subscription` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `customer_id` varchar(45) NOT NULL,
      `subscription_id` varchar(45) NOT NULL,
      `price_id` varchar(45) NOT NULL,
      `item_id` varchar(45) NOT NULL,
      `product_id` varchar(45) NOT NULL,
      `default_payment_method` varchar(45) DEFAULT NULL,
      `nickname` varchar(245) DEFAULT NULL,
      `description` varchar(245) DEFAULT NULL,
      `active` tinyint(1) DEFAULT NULL,
      `amount` int(11) DEFAULT NULL,
      `currency` varchar(5) DEFAULT NULL,
      `frequency` varchar(45) DEFAULT NULL,
      `period_start` datetime DEFAULT NULL,
      `period_end` datetime DEFAULT NULL,
      `canceled_at` datetime DEFAULT NULL,
      `meta_stripe` json DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
    
    한 사람한테 도움이 됐으면 좋겠어요!

    좋은 웹페이지 즐겨찾기