2015-02-09 56 views
0

我做了一些測試與條紋支付與流星,如何重定向到成功頁面條紋的成功與流星JS

我收到付款成功開通去條紋從我的服務器後,

我是流星方法中這樣做,

,但我需要

  1. 顯示支付處理視覺給用戶,然後在支付成功
  2. 返回一個成功的支付對象返回)給客戶端(這是我能做的,然後渲染各種信息

我怎麼能做到這兩個成功的模板?

提交事件

Template.step4.events({ 
    'submit #insertpaymentInfo':function(e){ 
     e.preventDefault(); 
     Stripe.setPublishableKey('PUBLISHABLEKEY'); 
     var $form = $('#insertpaymentInfo'); 
     $form.find('button').prop('disabled', true); 
     Stripe.card.createToken($form, callbackStripe); 

    } 
}); 

從標記處收到

function callbackStripe(status, response){ 
    var $form = $('#insertpaymentInfo'); 
    console.log("hi 1") 
    if (response.error) { 
    $form.find('.payment-errors').text(response.error.message); 
    $form.find('button').prop('disabled', false); 
    } else { 

    var token = response.id; 

    //TODO build an array of relevant data that needs to be sent to the server 
    //Token on its own only sent for testing 

    Meteor.call('processPayment',token); 
    } 
} 

這裏後,我的流星方法服務器端

Meteor.methods({ 
    'processPayment':function(stripeToken){ 
     console.log("stripe token = "+ stripeToken); 
     check(stripeToken,String); 
     console.log("payment and order can be processed and created"); 
     var Stripe = StripeAPI('TESTKEY'); 

     Stripe.charges.create({ 
     amount: 1000, // amount in cents, again 
     currency: "usd", 
     card: stripeToken, 
     description: "[email protected]" 
     }, function (err, res) { 
     console.log(err, res); 
    }); 
} 
}); 
+0

任何不使用[Atmosphere]上的[strip packages]之一(https://atmospherejs.com/?q=stripe)的原因,例如, Meteorhacks之一? – 2015-02-09 03:59:25

回答

1

您可以處理所有這些條紋服務器回調在同一個父模板中使用一個反應變量來顯示不同的子模板。

Template.step4.created = function(){ 
    this.state = new ReactiveVar("editing"); 
} 

<template name="step4"> 
    {{#if state "editing"}} 
    {{> payment_form}} 
    {{/if}} 
    {{#if state "processing"}} 
    {{> processing}} 
    {{/if}} 
    {{#if state "success"}} 
    {{> success}} 
    {{/if}} 
</template> 

Template.step4.helpers({ 
    state: function(param){ 
    return Template.instance().state.get() === param; 
    } 
}); 

Template.step4.events({ 
    'submit #insertpaymentInfo':function(e, template){ 
    e.preventDefault(); 
    Stripe.setPublishableKey('PUBLISHABLEKEY'); 
    var $form = $('#insertpaymentInfo'); 
    $form.find('button').prop('disabled', true); 
    template.state.set("processing"); 
    Stripe.card.createToken($form, function(err, res){ 
     if (error){ 
     template.state.set("editing"); 
     // error handle as you did above 
     } else { 
     template.state.set("success"); 
     // show info via response object 
     } 
    }); 
    } 
}); 
+0

嘿,非常感謝,這幫助了我很多,我相信我會從現在開始使用reactiveVars。 – molleman 2015-02-09 15:17:19

相關問題