【问题标题】:Send http request in Ionic with Angular http使用 Angular http 在 Ionic 中发送 http 请求
【发布时间】:2017-11-07 22:05:46
【问题描述】:

我有一个 ionic 应用程序,我正尝试将我的 Stripe 令牌发送到以进行付款处理。当我使用curl 将请求发送到node 服务器时,它正在接收请求。但是,当我尝试通过 Angular 的 http 模块发送请求时,它根本没有注册。所有这些目前都在本地进行测试,所以这可能是问题的一部分?

HTML

<button (click)="testPost()" ion-button full>TEST POST</button>

cart.ts

...
import {Http, Headers, RequestOptions} from '@angular/http';
import { Stripe } from '@ionic-native/stripe';

@Component({
 selector: 'page-cart',
 templateUrl: 'cart.html',
})
export class Cart {

  constructor(
    ...
    private http: Http,
    private stripe: Stripe
    ) {
      //
    });    
  }

  testPost() {
    var headers = new Headers();
    headers.append("Accept", 'application/json');
    headers.append('Content-Type', 'application/json' );
    let options = new RequestOptions({ headers: headers });

    let postParams = {
      body: {
        token: 'axqrexample123tokenbasdflkjo3',
        amount: 225
      }
    }

    this.http.post("http://11.1.1.7:3100/charge", postParams, options)
      .subscribe(data => {
        console.log(data['_body']);
       }, error => {
        console.log(error);// Error getting the data
      });  
  }

}

节点服务器

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var stripe = require("stripe")("sk_test_abcTAdefgn1oDexamplex");

app.use(bodyParser.json());

app.post('/charge', function (req, res) {

  var token = req.body.token;
  var amount = req.body.amount;
  stripe.charges.create({
    amount: amount,
    currency: "usd",
    source: token, // obtained with Stripe.js 
    description: "Charge for jones@example.com"
  }, function(err, charge) {
    // asynchronously called
  });
  res.send('Hello World!')
});


app.listen(3100, function () {
  console.log('Example app listening on port 3100!')
})

【问题讨论】:

    标签: angularjs node.js ionic-framework localhost stripe-payments


    【解决方案1】:

    我认为您需要在订阅请求之前映射请求

    this.http.post("http://11.1.1.7:3100/charge", postParams, options)
          .map(res => res.json())
          .subscribe(data => {
            console.log(data['_body']);
           }, error => {
            console.log(error);// Error getting the data
          });
    

    另外,导入rxjs

    import 'rxjs/Rx';
    

    【讨论】:

      【解决方案2】:

      我会在stripe.charges.create 回调中尝试这个,看看会发生什么:

      }, function(err, charge) {
        if (err) throw err;
      
        console.log('Charge ID:', charge.id); 
      
        res.send('Hello World!');
      });
      

      【讨论】:

      • 错误消息来自cart.ts,它不会发出请求...它没有到达节点服务器。节点服务器本身功能正确。
      • 错误信息是什么?您的帖子未包含错误消息。
      猜你喜欢
      • 2018-09-11
      • 2018-11-24
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 2018-04-15
      • 2016-11-13
      • 2018-10-03
      相关资源
      最近更新 更多