3

Firebase 및 Stripe를 사용하여 Android 앱에서 신용 카드 결제를 처리하려고합니다. 내 클라이언트에서 Stripe 토큰을 검색했으며 Firebase Cloud Function에서 데이터베이스 트리거를 사용하여 새로운 주문이 게시 될 때 잡습니다. 여기 내 기능 코드입니다. 나는이 오류에 대한 모든 문서를 찾을 수 없습니다Firebase Cloud 기능에서 Stripe에 연결하는 중 오류가 발생했습니다.

Error: An error occurred with our connection to Stripe at Error._Error (/user_code/node_modules/stripe/lib/Error.js:12:17) at Error.Constructor (/user_code/node_modules/stripe/lib/utils.js:120:13) at Error.Constructor (/user_code/node_modules/stripe/lib/utils.js:120:13) at ClientRequest. (/user_code/node_modules/stripe/lib/StripeResource.js:206:9) at emitOne (events.js:96:13) at ClientRequest.emit (events.js:188:7) at TLSSocket.socketErrorListener (_http_client.js:309:9) at emitOne (events.js:96:13) at TLSSocket.emit (events.js:188:7) at connectErrorNT (net.js:1021:8) at _combinedTickCallback (internal/process/next_tick.js:80:11) at process._tickDomainCallback (internal/process/next_tick.js:128:9)

:

const stripe = require('stripe')('sk_test_XXXXXXXXXXXXXXXXXXXXXXXX'); 

return admin.database() 
    .ref() 
    .child('orders') 
    .child(userId) 
    .child(orderId) 
    .child('token') 
    .once('value') 
    .then(snapshot => { 
     return snapshot.val(); 
    }) 
    .then(token => { 

     const amount = order.amount; 
     console.log('Amount:', amount); 
     console.log('token:', token.id); 

     const idempotency_key = orderId; 
     const source = token.id; 
     const currency = 'usd'; 
     const charge = {amount, currency, source}; 

     return stripe.charges.create(charge, { idempotency_key }); 
    }) 
    .then(charge => { 
     console.log('Success:', charge); 
     // If the result is successful, write it back to the database 
     return event.data.adminRef.set(charge); 
    }, error => { 
     console.log('Error:', error); 

     return; 
    } 
); 

enter code here 

이 다음과 같은 오류가 발생합니다. 그리고 나는 내가 생각할 수있는 모든 것을 시도했다. 모든 변수에는 유효한 데이터가 들어 있습니다.

답변

4

이와 같은 문제의 가장 큰 원인은 코드와 아무 관련이 없습니다. 사용자가 가입 한 Firebase plan과 관련이 있습니다.

완전 무료 계층 인 "스파크 플랜"(그리고 대부분의 사람들이 시작하기 시작 함)은 Google의 HTTPS 서비스를 제외하고는 아웃 바운드 네트워킹 연결을 허용하지 않습니다.

개발 및 테스트의 경우에도 "블레이즈 계획"을 제안합니다. 네트워크 연결을 허용합니다. 사용 가격이 나열되어 있지만 (처리 및 네트워크 연결 모두) Info 단추는 이러한 가격이 책정되기 전에 free usage level each month이 있음을 나타내며 일반적으로 해당 수준은 개발 및 테스트를 수행하기에 충분합니다.

+0

정말 고마워요. –

+0

언제든지 실패한 청구 요청을 캡처하는 방법을 알고 계십니까? 좋은 카드를 사용할 때까지 위의 코드로 모든 것이 작동합니다. 거절 된 카드를 사용하면 흐름은 하단 오류 섹션으로 계속 진행되지만 오류 변수는 비어 있습니다. 나는 실패한 요금 객체를 반환 할 것이라고 생각했다. –

+0

스트라이프 자체에 대해서는 아무것도 모른다. 미안하다. {: 귀하가 별도의 타겟이 된 질문으로 게시하여 귀하에게 가장 잘 맞는 것 같군요. – Prisoner

관련 문제