接收角度分量内的POST数据

时间:2018-12-25 23:17:56

标签: angular payment-gateway

我将Angular 7中集成了支付网关。

付款网关需要像下面这样输入数据

requestParameter : MerchantId||CollaboratorID||Encrypted_string

我尝试使用ngForm提交表单,如下所示,但我的请求未发布到付款网关url,并且在响应中未找到“ http://localhost:4200/direcPayment/”的错误404和付款网关的会话过期消息。就像请求中出现任何错误一样,您会收到会话过期消息。

<form  (ngSubmit)="onSubmit()" method="POST" mt-3>

在代码的后面,我根据需要传递参数,并按如下所示进行http.post调用。单击OnSubmit后,我用加密的字符串调用了formSubmit

formSubmit( encryptedString) {
const formData = new FormData();
formData.append( 'requestParameter', encryptedString);

this.http.post('direcPayment/', formData, httpFormDataOptions)
    .subscribe((resposne) => {
      console.log(resposne);
    });

}

我在标题下面添加的“ httpFormDataOptions”内部

const httpFormDataOptions = {
  headers: new HttpHeaders(),
};
httpFormDataOptions.headers.append('Access-Control-Allow-Origin', '*');
httpFormDataOptions.headers.append('Access-Control-Allow-Methods', 'DELETE, POST, GET, OPTIONS');
httpFormDataOptions.headers.append('Access-Control-Allow-Headers', 'Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With');

/ direcPayment引用了我的Proxy.config.json文件,如下所示

{
  "/direcPayment": {
  "target": "PaymentGatewayURL",
  "secure": true,
  "pathRewrite": {"^/direcPayment" : ""},
  "changeOrigin": true
  },
}

所以目前我使用ngNoForm并使用action属性提交表单。

所以我想问两个问题

  1. 使用httpClient POST方法将表单提交到付款网关链接

  2. 付款网关说,如果付款成功/失败,那么它们将以加密格式的POST数据重定向到成功/失败URL,那么如何接收数据到成角度的特定URL?如果有人在两种情况下都使用httpClient调用或ngNoForm

  3. 来调用我的角度URL,则有什么方法可以接收数据

谢谢。

3 个答案:

答案 0 :(得分:0)

您的代码:

Jan

因此帖子数据将提交到Jan = s.Tickets.Where(x => x.SellDate.Value.Month == this.Jan.Month && x.SellDate.Value.Year == TmpYear.Year).Select(e => (int?)e.Points).Sum() ?? 0 ,您应该在此处放置付款网关的网址

答案 1 :(得分:0)

假设您的应用程序具有服务器端),则可能应该从后端处理整个事务。

如果您根本没有后端,那么我没有任何建议。我想不出任何安全的方法来完全在客户端上做到这一点。

答案 2 :(得分:0)

您应该定义一个 API Post 端点,该端点将接收付款有效负载响应并将重定向到您所需的前端页面。

.NET 示例是:

[HttpPost("api/payment-done"]
public IActionResult PaymentDone([FromBody] PaymentPayload request)
{
   //do stuff with payload
   return Redirect("http://your-website-page");
}