Magic and Stripe: Pt로 유료 회원 사이트를 만듭니다.3노드 서버

세 번째 부분은 유료 회원 사이트와 마술, 줄무늬 시리즈를 구축하는 것이다.계속하기 전에 다음을 읽어야 합니다.

  • 스트라이프와 마법을 설정합니다.

  • .

  • 서버
    현재 우리는 클라이언트가 어떻게 구축되었는지, 그리고 클라이언트가 어떻게 작동하는지 알고 있으며, 서버 사이드 코드 server.js 를 알고 있습니다.
    다음은 서버와 클라이언트의 원활한 협업에 필요한 주요 기능입니다.
  • 검증MagicdidToken가 반환한 신분검증 영패loginWithMagicLink().
  • 고객의 지불 주기를 추적하기 위해 스트라이프PaymentIntent를 생성합니다.
  • Stripe Customer를 만들면 고객을 일치하는 PaymentIntent에 귀속시키고 고객이 성공적으로 지불했는지 추적할 수 있습니다.
  • 사용자가 평생 고급 콘텐츠에 액세스하는 고객인지 확인합니다.

  • 인증 토큰(didToken)
    앞에서 말한 바와 같이 사용자가 전자 우편 링크를 클릭하여 로그인할 때, 우리는 didToken 라는 서버 포트에 /login 를 보내서 이를 검증할 수 있도록 할 것입니다.무효나 형식이 잘못된 영패를 계속 피하기 전에 먼저 검증하는 것이 좋다DID Token.
    우리는 매직didToken 방법으로 검증했다validate.didToken가 유효하면 200 상태 코드를 클라이언트에게 보냅니다.
    /* File: server.js */
    
    // Import, then initiate Magic instance for server-side methods
    const { Magic } = require("@magic-sdk/admin");
    const magic = new Magic(process.env.MAGIC_SECRET_KEY);
    
    // Route to validate the user's DID token
    app.post("/login", async (req, res) => {
      try {
        const didToken = req.headers.authorization.substr(7);
        await magic.token.validate(didToken);
        res.status(200).json({ authenticated: true });
      } catch (error) {
        res.status(500).json({ error: error.message });
      }
    });
    

    스트라이프 결제 의도 및 스트라이프 고객 작성
    사용자가 Google의 고급 콘텐츠에 대한 평생 접근 허가증을 구매하기로 결정하면 Google은 이를 고객으로 간주합니다.고객의 결제 주기를 추적하려면 /create-payment-intentserver.js라는 새 서버 엔드포인트를 추가해야 합니다.
  • 고객의 이메일 주소로 고객을 만듭니다.
  • 고객에 대한 링크를 만듭니다PaymentIntent.
  • PaymentIntent는 실패한 결제 시도를 추적하여 고객이 한 번만 비용을 받도록 합니다.
    /* File: server.js */
    
    // Import & initiate Stripe instance
    const  stripe = require("stripe")(process.env.STRIPE_SECRET_KEY);
    
    // Add the user to your list of customers
    // Then create a PaymentIntent to track the customer's payment cycle
    app.post("/create-payment-intent", async (req, res) => {
      const { email } = req.body;
    
      const paymentIntent = await stripe.customers
        .create({
          email,
        })
        .then((customer) =>
          stripe.paymentIntents
            .create({
              amount: 50000, // Replace this constant with the price of your service
              currency: "usd",
              customer: customer.id,
            })
            .catch((error) => console.log("error: ", error))
        );
    
      res.send({
        clientSecret: paymentIntent.client_secret,
        customer: paymentIntent.customer,
      });
    });
    
    보시다시피 우리는 고객에게 500달러의 평생 방문비를 받아서 우리의 훌륭한 고급 내용을 얻을 것입니다.😎

    고객 정보 업데이트
    결제가 완료되면 클라이언트는 /update-customer에 요청하여 metadata{ lifetimeAccess: true }에 고객 정보를 업데이트합니다.우리는 특별한 용례가 있기 때문이다.고객에게 일회성 비용을 받습니다. 이 메타데이터를 설정하면 고객이 지불했는지 확인하는 데 도움이 될 것입니다.
    /* File: server.js */
    
    // Update the customer's info to reflect that they've
    // paid for lifetime access to your Premium Content
    app.post("/update-customer", async (req, res) => {
      const { customerID } = req.body;
    
      const customer = await stripe.customers.update(customerID, {
        metadata: { lifetimeAccess: true },
      });
    
      res.send({
        customer,
      });
    });
    

    유료 고객 확인
    현재 사용자는 비용을 성공적으로 지불했기 때문에 프리미엄 콘텐츠 페이지를 방문할 수 있을 것이다.사용자가 권한을 부여받았는지 확인하기 위해서, 우리는 /validate-customer 단점을 사용할 것입니다.사용자의 이메일 주소가 필요하며 해당 이메일을 소유한 고객 목록을 반환해야 합니다.
    고객은 평생 액세스를 한 번만 구매하는 것이 이상적입니다.이렇게 되면 stripe.customers.list() 되돌아오는 목록에는 시종일관 비용을 지불하는 고객이 있을 것이다.
    그러나 사고는 실제로 발생할 것이다.🤷🏻‍♀️
    사용자가 평생 방문을 두 번 구매하는 것을 방지하기 위해서, 나는 SignUp 구성 요소에 논리를 추가하여 등록을 시도한 사용자가 평생 방문한 스트라이프 고객인지 확인하는 것을 권장합니다.해당하는 경우 고급 컨텐트 페이지로 보냅니다.그렇지 않으면, 그들은 계속 지불 페이지로 들어갈 수 있다.
    /* File: server.js */
    
    // Collect the customer's information to help validate
    // that they've paid for lifetime access
    app.post("/validate-customer", async (req, res) => {
      const { email } = req.body;
    
      const customer = await stripe.customers.list({
        limit: 1,
        email,
      });
    
      res.send({
        customer: customer.data,
      });
    });
    

    테스트 통합
    자, 이제 유료 회원 응용 프로그램이 클라이언트와 서버 쪽에서 작동하는 원리를 알았으니 한번 테스트해 봅시다!다음은 테스트를 제안하는 몇 가지 사용자 경험 절차입니다.
  • 프리미엄 콘텐츠 페이지에 등록하고 평생 방문 비용을 지불한다.
  • 유료 고객으로 로그인하고 고급 콘텐츠 페이지에 액세스합니다.
  • 다양한 이메일을 사용하여 무보수 고객으로 로그인하고 Premium 콘텐츠 페이지에 액세스합니다.
  • 겸사겸사 한마디 하자면, 당신은 이 테스트 카드 번호로 지불할 수 있습니다: 4242 4242 4242 4242
    다음
    예!너는 지금 유료 회원 사이트가 하나 생겼다.이 시리즈를 읽고 Heroku에 응용 프로그램을 배치하는 방법을 알아보세요.

    좋은 웹페이지 즐겨찾기