2017-12-19 5 views
0

참조 :스트라이프를 사용하여 Bitcoin 및 USD 지불을 수락하는 방법?

https://stripe.com/docs/sources/bitcoin


질문 : 나는 스트라이프를 사용하여 내 코드에 비트 코인 지불을 통합하기 위해 노력하고

. 그런 다음 그 결과를 통과

stripe.createSource({ 
    type: 'bitcoin', 
    amount: 1000, 
    currency: 'usd', 
    owner: { 
    email: '[email protected]', 
    }, 
}).then(function(result) { 
    // handle result.error or result.source 
}); 

:

워드 프로세서에 대한 이해에서

, 나는에 (이 경우 이메일 및 금액) 피드에게 데이터를 제출에 새 양식을 작성하여 소스 객체를 생성한다 서버가 Source 객체를 충전합니다. 유일한 문제 : 결과를 서버에 전달하는 방법을 알 수 없습니다. 새 처리기를 생성해야합니까?

var handler = StripeCheckout.configure({ 
     key: 'key', 
     locale: 'auto', 
     name: 'website', 
     description: 'Secure Payment', 
     token: function(token) { 
     $('#stripeToken').val(token.id); 
     $("#stripeEmail").val(token.email); 
     $('form').submit(); 
     }          
    }); 

나는 분실했습니다.

여기는 현재 USD 지급에 완벽하게 작동하는 코드입니다.


MY CODE :

클라이언트 측 (payment.ejs)

<% include partials/header %> 
<div class="background"> 
    <div class="message"> 
     <div class="paymentBlock"> 
      <h1 class="title">TITLE</h1> 

      <form class="paymentForm" action="/payment/charge" method="POST"> 
       <input id="inputAmount" class="amountInput" name="amount" type="number/> 
       <input type="hidden" id="stripeToken" name="stripeToken" /> 
       <input type="hidden" id="stripeEmail" name="stripeEmail"/> 
       <button type="submit" class="btn btn-success" id="paymentButton" >Submit Payment</button> 
      </form> 
     </div> 
    </div> 
</div> 

<script src="https://checkout.stripe.com/checkout.js"></script> 

<script> 

    var handler = StripeCheckout.configure({ 
     key: 'key', 
     locale: 'auto', 
     name: 'website', 
     description: 'Secure Payment', 
     token: function(token) { 
     $('#stripeToken').val(token.id); 
     $("#stripeEmail").val(token.email); 
     $('form').submit(); 
     }          
    }); 

    $('#paymentButton').on('click', function(e) { 
     e.preventDefault(); 

     $('#error_explanation').html(''); 

     var amount = $('#inputAmount').val(); 
     amount = amount.replace(/\$/g, '').replace(/\,/g, ''); 

     amount = parseFloat(amount); 

     if (isNaN(amount)) { 
     $('#error_explanation').html('<p>Please enter a valid amount in USD ($).</p>'); 
     } 
     else if (amount < 1.00) { 
     $('#error_explanation').html('<p>Payment amount must be at least $1.</p>'); 
     } 
     else { 
     amount = amount * 100; 
     handler.open({ 
      amount: Math.round(amount) 
     }) 
     } 
    }); 
    // Close Checkout on page navigation 
    $(window).on('popstate', function() { 
     handler.close(); 
    }); 
</script> 

<% include partials/indexScripts %> 

서버 측 (payment.js)

router.post("/", (req, res) => { 

    var amount = req.body.amount; 
    var object; 
    var ARef = admin.database().ref("ref"); 
    var ARefList; 
    amount = amount * 100; 

    var object = { 
     amount: amount, 
     email: email, 
     inversedTimeStamp: now 
    } 

    stripe.customers.create({ 
     email: req.body.stripeEmail, 
     source: req.body.stripeToken 
    }) 
    .then(customer => 
     stripe.charges.create({ 
      amount: amount, 
      description: "desc", 
      currency: "usd", 
      customer: customer.id 
     }) 
    ) 
    .then(charge => 
     ARef.transaction(function(dbAmount){ 
      if (!dbAmount) { 
       dbAmount = 0; 
      } 
      dbAmount = dbAmount + amount/100; 
      return dbAmount; 
     }) 
    ) 
    .then(() => 
     ARef.push(object) 
    ) 
    .then (() => 
     ARefList.push(object) 
    ) 
    .then(() => 
     res.render("received",{amount:amount/100}) 
    ); 
}); 
+1

질문 섹션 질문이 포함되어 있지 않습니다! "고투"를 정의하십시오. 이것은 무의미한 문장만큼이나 막연합니다. 우리는 당신의 상황에 대해 어떤 것도 추론 할 수 없습니다. 위의 코드에 어떤 문제가 있습니까? https://stackoverflow.com/help/how-to-ask를보고 질문을 명확히하십시오. – ADyson

+1

프런트 엔드를 구축하는 데있어 HTML은 중요하지 않습니다. API에 어려움을 겪고 있거나 질문에 집중해야하는 부분이 있다면 관련없는 정보는 포함하지 마십시오 –

+0

명확하지 않은 점은 무엇입니까? –

답변

1

는에서 "pksk321"에 감사드립니다 이걸 도와 준 freenode IRC#stripe!

분명히, 모든이 필요했던 것은과 같이, 핸들러에 bitcoin: true을 추가했다 : 클라이언트 측

var handler = StripeCheckout.configure({ 
     key: 'key', 
     locale: 'auto', 
     name: 'website', 
     description: 'Secure Payment', 
     bitcoin: true, 
     token: function(token) { 
     $('#stripeToken').val(token.id); 
     $("#stripeEmail").val(token.email); 
     $('form').submit(); 
     }          
    }); 
관련 문제