Node.js 앱에서 Stripe 결제를 사용하여 WhatsApp 사용자에게 제품을 판매하려고 합니다.
스트라이프 확장 프로그램(stripe/firestore-stripe-paids@0.3.3)을 설치하고 설명서의 지침을 따랐습니다.
const docRef = DB 대기 .collection('고객') .doc(현재사용자.uid) .collection('checkout_sessions') .추가하다({ 가격: 'price_1GqIC8HYgolSxxxxxxxxx', 성공_URL: window.location.origin, cancel_url: window.location.origin, }); // 확장이 CheckoutSession을 첨부할 때까지 기다립니다. docRef.onSnapshot((스냅) => { const { 오류, URL } = snap.data(); if (오류) { // 클라이언트에 오류를 표시하고 Firebase 콘솔에서 클라우드 함수 로그를 확인합니다. Alert(`오류가 발생했습니다: ${error.message}`); } 만약 (URL) { // Stripe Checkout URL이 있으므로 리디렉션하겠습니다. 창.위치.할당(url); } });
클라우드 콘솔에 다음 오류가 표시됩니다.
❗️[오류]: [maxxxxxxxxxA] 문서에 대한 Checkout 세션을 생성하지 못했습니다. 제공된 식별자에 해당 사용자 레코드가 없습니다.
Firebase 인증에서 userId를 사용해야 한다는 것을 알았지만, 함수(백엔드 서버)에서 서비스를 실행하고 있기 때문에 인증에 클라이언트/사용자가 없습니다.
(개별) 스트라이프 결제 링크를 만드는 다른 방법이 있나요? 클라이언트 없이 Firebase 인증을 사용할 수 있는 방법이 있나요?
미리 감사드립니다.
인증을 사용해 보았습니다.
"firebase/auth"에서 { getAuth } 가져오기;; const 인증 = getAuth(); const user = auth.currentUser;
하지만 다음 오류가 발생합니다. FirebaseError: Firebase: 소스를 통해 호스팅에 배포하지 않을 때 옵션을 제공해야 합니다. (앱/옵션 없음)
저는 이것을 시도했습니다: https://stackoverflow.com/a/74732162/21612440
and getTypeError: 정의되지 않은 'getProvider' 속성을 읽을 수 없습니다('getProvider' 읽기)
클라우드 기능(원칙적으로)은 현재 인증된 사용자의 컨텍스트 없이 실행됩니다. 따라서 클라우드 기능에서는 각 요청이 다른 사용자로부터 올 수 있으므로
auth.currentUser
는 거의 의미가 없습니다.그러나 여기에서 원하는 UID를 Firestore 데이터베이스에 전달할 수 있습니다
.doc(currentUser.uid)
. 따라서 다른 (안전한) 방법으로 관련 UID를 확인할 수 있는 경우 해당 값을 전달하면 Stripe 확장 프로그램이해당사용자를 위해 이를 처리합니다.