1

我有一个支付页面,它首先调用 axios 来获取所需的 HPP 模型数据。然后我调用 Hpp 函数打开托管页面,但需要单击 2 次才能完成操作。我曾尝试直接从 hpp 函数中放置代码,但同样的事情发生了。任何帮助表示赞赏。

paymentFunction(){  
  const data = {
      //my passed data
  };

  const response = axios ({
    url: "Myserverapitogetmodeldata",
    data: data,
    method: "POST"
  })  

  //open the hosted page
  this.hppFunction(response.data.id);

}

  hppFunction(i) {
$.getJSON("serverapimodeldata" + i, function (
  jsonFromRequestEndpoint
) {
  debugger;
  window.RealexHpp.setHppUrl("realexpaymentsapi");
  window.RealexHpp.lightbox.init(
    "payButtonId",
    "responseUrl",
    jsonFromRequestEndpoint
  );
});

}

 <MDBBtn id="payButtonId" onClick={() =>this.paymentFunction()}>Pay Now</MDBBtn>

如果我用 onClick={this.paymentFunction()} 调用初始函数,这可行,但它正在使用 onchange 发布到 Db 并在每次输入字符时发布

4

1 回答 1

0

这好像是

window.RealexHpp.lightbox.init(
  "payButtonId",
  "responseUrl",
  jsonFromRequestEndpoint
);

应该在单击按钮之前调用,因为它设置了按钮。目前,您的第一次点击正在设置按钮,而您的第二次点击正在执行付款。

请参阅此示例,其中RealexHpp.lightbox.init在页面加载时调用该方法。

编辑:您的 axios 调用也不在等待响应,它只是继续。你可以试试:

axios({
  url: "Myserverapitogetmodeldata",
  data: data,
  method: "POST"
})
.then(response => {
  //open the hosted page
  this.hppFunction(response.data.id);
});  

看看它是否能解决你的问题。

于 2020-10-06T09:18:19.733 回答