Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 条带未接收到Firebase充电功能_Javascript_Firebase_Ionic Framework_Stripe Payments - Fatal编程技术网

Javascript 条带未接收到Firebase充电功能

Javascript 条带未接收到Firebase充电功能,javascript,firebase,ionic-framework,stripe-payments,Javascript,Firebase,Ionic Framework,Stripe Payments,我正在用ionic应用程序向信用卡收费。如果我检查Stripe网站,则仅成功创建令牌。本次收费不存在任何事件。当我检查Firebase时,一切似乎都正常工作(之前我收到错误消息“与Stripe的连接出现错误”,升级到付费版本Blaze后,该消息被消除) 我构建了以下代码,以便您可以看到事件的顺序 以下是事件的顺序: 1)在这里,我获取令牌并传递到PayByTripe功能: checkOut() { let alert = this.alertCtrl.create({ title:

我正在用ionic应用程序向信用卡收费。如果我检查Stripe网站,则仅成功创建令牌。本次收费不存在任何事件。当我检查Firebase时,一切似乎都正常工作(之前我收到错误消息“与Stripe的连接出现错误”,升级到付费版本Blaze后,该消息被消除)

我构建了以下代码,以便您可以看到事件的顺序

以下是事件的顺序:

1)在这里,我获取令牌并传递到
PayByTripe
功能:

checkOut() {
  let alert = this.alertCtrl.create({
    title: 'card information',
    cssClass:'alert-css',
    inputs: [{
      name: 'cardNumber',
      placeholder: 'card number',
    },
    {
      name: 'expMonth',
      placeholder: 'expMonth',
    },
    {
      name: 'expYear',
      placeholder: 'expYear',
    },
    {
      name: 'cvc',
      placeholder: 'cvc',
    }],
    buttons: [{
      text: 'Cancel',
      role: 'cancel',
      handler: data => {
        console.log('Cancel clicked');
      }
    },
    {
      text: 'PAY',
      handler: data => {
        this.stripe.setPublishableKey('pk_test_abcdef1BC');
        let card = {
          number: data.cardNumber,
          expMonth: data.expMonth,
          expYear: data.expYear,
          cvc: data.cvc
        };
        this.stripe.createCardToken(card)
        .then(token => {
          this.goodsData.payByStripe(this.totalMoniesPlusTaxAndCharge,this.userEmail,token);
            let alert = this.alertCtrl.create({
              title: 'Charged',
              cssClass:'alert-css',
              subTitle: 'Successful Charge!',
              buttons: ['Dismiss']
            });
            alert.present();
          }, error => {
            this.loading.dismiss();
            let alert = this.alertCtrl.create({
              title: 'ERROR',
              cssClass:'alert-css',
              subTitle: JSON.stringify(error),
              buttons: ['Dismiss']
            });
            alert.present();
          })
        .catch(error => console.log(JSON.stringify(error)) );
      }
    }]
  });
  alert.present();
} 
2)在这里,我将费用推给Firebase,由云功能处理:

payByStripe(amount,email,token): firebase.database.Reference {
  return firebase.database().ref('/stripe_customers/charges/').push({
    amount:amount,
    email:email,
    token:token
  });
}
3)以下是云功能正在做的事情:

const functions = require('firebase-functions'),
      admin = require('firebase-admin'),
      logging = require('@google-cloud/logging')();

admin.initializeApp(functions.config().firebase);

const stripe = require('stripe')(functions.config().stripe.token),
      currency = functions.config().stripe.currency || 'USD';

// [START chargecustomer]
// Charge the Stripe customer whenever an amount is written to the Realtime database
exports.createStripeCharge = functions.database.ref('/stripe_customers/charges/').onWrite(event => {
  const val = event.data.val();
  // This onWrite will trigger whenever anything is written to the path, so
  // noop if the charge was deleted, errored out, or the Stripe API returned a result (id exists) 
  if (val === null || val.id || val.error) return null;
  // Look up the Stripe customer id written in createStripeCustomer

    // Create a charge using the pushId as the idempotency key, protecting against double charges 
    const amount = val.amount;
    const email = val.email;
    const token = val.token;

    stripe.charges.create({
      amount: amount,
      currency: "usd",
      source: token,
      description: "Charge for " + email
    }).then(response => {
      // If the result is successful, write it back to the database
      return event.data.adminRef.set(response);
    }, error => {
      // We want to capture errors and render them in a user-friendly way, while
      // still logging an exception with Stackdriver
      return event.data.adminRef.child('error').set(userFacingMessage(error)).then(() => {
        return reportError(error, {user: event.params.userId});
      });
    });
});
// [END chargecustomer]]

我很确定这是一个特定于Firebase的错误,因此如果原因不清楚,您可能希望联系他们-尽管其他具有更多Firebase经验的人可能会为您提供更有用的答案