Stripe Checkout 세션에서 장바구니 항목을 가져오는 방법

Stripe Checkout을 사용하여 고객에게 고품질의 체크아웃 페이지를 신속하게 제공할 수 있습니다.
고객은 결제 시 추가 항목을 추가하거나 권장 항목 수를 수정하거나 항목 수를 수정할 수 있습니다.



판매자의 경우 주문한 항목을 아는 것이 주문을 이행하는 데 매우 중요하므로 결제 세션을 완료한 후 주문한 항목 목록을 가져와야 합니다.
결제 세션을 완료한 후 주문한 항목 목록을 가져와야 합니다.

list_line_items API를 사용하여 주문한 항목 나열



node.js에서 다음 코드는 주문한 항목을 가져옵니다.

const items = await stripe.checkout.sessions.listLineItems(sessionId); // cs_xxxx


Checkout 세션 이벤트를 수신하기 위해 웹후크에서 주로 이 메서드를 사용합니다.

const stripe = require('stripe')('YOUR_SECRET_API_KEY');
const express = require('express');
const app = express();

// This is your Stripe CLI webhook secret for testing your endpoint locally.
const endpointSecret = "whsec_xxxxxxx";

app.post('/webhook', express.raw({type: 'application/json'}), async (request, response) => {
  const sig = request.headers['stripe-signature'];

  let event;

  try {
    event = stripe.webhooks.constructEvent(request.body, sig, endpointSecret);
  } catch (err) {
    response.status(400).send(`Webhook Error: ${(err as Error).message}`);
    return;
  }

  /**
   * Avoiding unrelated events.
   **/
  const data = event.data.object;
  if (
    event.type !== 'checkout.session.completed' &&
    event.type !== 'checkout.session.async_payment_succeeded'
  ) {
    return response.sendStatus(200);
  }

    if (data.payment_status === 'paid') {
    const { items } = await stripe.checkout.sessions.listLineItems(data.id);
    /**
     * TODO: fulfilling the order
     **/
  }

  // Return a 200 response to acknowledge receipt of the event
  response.send();
});

app.listen(4242, () => console.log('Running on port 4242'));



은행 송금이나 상품권과 같은 비동기 결제 방법을 지원하려면 checkout.session.async_payment_succeeded 이벤트도 처리하는 것을 잊지 마십시오.

감사 페이지에 주문한 항목 표시



성공 페이지의 URL 쿼리 문자열에서 세션 ID를 얻을 수 있습니다.

체크아웃 세션 생성

const session = await stripe.checkout.sessions.create({
  success_url: "http://yoursite.com/order/success?session_id={CHECKOUT_SESSION_ID}",
  // other options...,
});


항목을 가져오기 위해 새 API를 추가합니다.

app.get('/checkout/:session_id/line_items', async (req, res) => {
  const sessionId = req.params['session_id'];
  const items = await stripe.checkout.sessions.listLineItems(sessionId);
  res.status(200).json(items.data);
});


세션 ID 가져오기 및 백엔드 API 호출

const url = new URL(window.location);
const sessionId = url.searchParams.get('session_id');
fetch(`https://example.com/checkout/${sessionId}`)
  .then(data => data.json())
  .then(items => {
    console.log(items);
  });


다른 사용 사례



또한 세션에서 완료되지 않은 장바구니 항목을 가져올 수도 있습니다.
따라서 세션이 완료되기 전에 사이트를 떠나는 경우 세션 ID를 보유하고 있으면 세션을 복원할 수 있습니다.

스트라이프 체크아웃에 대해 자세히 알아보기





일본어판: https://qiita.com/hideokamoto/items/565e3fbba33885be726e

좋은 웹페이지 즐겨찾기