如何使用express和axios在浏览器上重定向和呈现从API响应对象获取的url

hwazgwia  于 2022-12-12  发布在  iOS
关注(0)|答案(1)|浏览(168)

我正在使用Paystack API和Axios构建一个支付网关,用于发出http请求。
我使用了他们的API文档并检查了他们的 Postman 集合,以了解如何编写代码。
代码在postman上工作,因为每当我发送post请求以用所需的参数初始化事务时,我都会得到一个响应对象,其中包含我需要的数据(本例中为URL)
问题是,我无法让我的应用程序重定向到浏览器上响应数据对象中包含的url,我在浏览器窗口上不断收到此错误
无法GET /paystack/未定义
已经查找了这个问题,尝试了一些可能的解决方案,从重构代码到使用异步等待,但是它不起作用(除了可能稍微提高响应速度)
这是密码
主计长

const { default: axios } = require("axios");

exports.postForm = async (req, res) => { 
  
    await axios({ 
       method: 'post', 
       url: 'https://api.paystack.co/transaction/initialize', 
       headers: { 
          'Authorization': secretKey, 
          'Content-Type': 'application/json', 
          'cache-control': 'no-cache' 
       }, 
       data: { 
          "email": req.body.email, 
          "amount": req.body.amount 
       }
    }) 
    .then((response) => { 
       res.status(302).redirect(response.data.authorizaton_url) // it is supposed to go to the url inside the data object
       console.log(response.data) 
    }) 
    .catch((error) => { 
       console.log(error); 
    }); 
 };

尝试将www.example.com字符串化response.data,但没有任何更改
路线

const express = require('express'); 
 const router = express.Router(); 
 const pay = require('../controllers/paymentController'); 
  
 router.get('/', pay.getForm); 
 router.post('/paystack/pay', pay.postForm);

附言-GET路径不会有帮助,除非我将用户重定向回我的应用程序以确认交易。使用另一个http库称为请求,工作,但它被弃用。

blpfk2vs

blpfk2vs1#

你可以在paystack上设置一个回调网址,在成功付款后重定向用户,你可以在后台检查。webhook url
如果这样做没有帮助,你可以考虑使用res.status(301).redirect(your auth url);

相关问题