Jak přesměrovat uživatele na externí stránky, ale požadavek POST

0

Otázka

Jak přesměrovat uživatele na externí stránky, ale požadavek POST,který je lepší používat backend-asp.net základní web api nebo frontend - angular?

Já jsem pracoval s platební brány. Pro potvrzení 3D secure musím přesměrování na nové url.

Doktoři tvrdí, že použití takového formuláře,

<form
  id="pa-form"
  method="post"
  action="https://test.sagepay.com/mpitools/accesscontroler?action=pareq"
>
  <input
    type="hidden"
    name="PaReq"
    value="eJxVUstugzAQvPcrEB+AHwTiRBtHaXMIqlrRJlJ7tYzVoIIhBgL5+9oJNK1PM+PV7HrWsB7Kwjsr0+SVXvkkwP6aP8DhaJTa7pXsjOLwoppGfCkvz1Y+xSQO53GIWcgYwTHDM59DunlXJw6jD7c2AQE0UWtg5FHoloOQp8fklc8WdIExoJFCqUyy5SSibL5geDyAbjJoUSqe7g5GnFXRir4yRXasijwTgK53IKtOt+bCGY0BTQQ6U/C+7wM3fC0ugayC7huQkwHdZ0o7hxprM+QZT98SfaBVHX0878PPbBeJ4YI2eggZXgFyFZCJVnGKKSGEhh4mSzpfEgboqoMoXX8eR/Z5Nwi167C563852IyN0nIafmKghrrSylZQQL8YMtVIvnfbSMXFe0kT29ZJgO7PeNq5oGXrInUZX5Hzy20qNMQ3Q0cAuVo0rg+Ni7bo3wf4AWyps7I="
  />
  <input
    type="hidden"
    name="TermUrl"
    value="http://localhost:4200/payment"
  />
  <input type="hidden" name="MD" value="FAD0DBBA-FC72-2D9A-F09F-D4D6FFFCB2CD" />
</form>

// in index.html  
<script>document.addEventListener("DOMContentLoaded",function(){var b=document.getElementById("pa-form");b&&b.submit()})</script>

Ale snažil jsem se touto formou v úhlové. Mám Cannot POST / odpověď.

Tak jsem hledat o tom někdo řekl angular is not able to handle third-party responses. Tak Jak to mohu udělat? Jak to udělat výše uvedený formulář s asp .net jádro nebo úhlové.

Nejsem jasné, Co mám dělat?

Prosím, veď mě. Jak mohu použít asp .net jádro a úhlové

1

Nejlepší odpověď

2

Stručný přehled: S single-page aplikace(Angular), by neměla zvládnout třetích stran reakci na straně klienta, pokud jste přesměrování uživatele. Protože pokaždé, když aplikace přesměruje na třetí stranu, všechny souvislosti je ztracena a po příchodu zpět, Úhlové aplikace bude mít bootstrapped znovu.

Řešení: Z hlediska architektury, můžete použít následující přístup:

  1. Získejte všechny brány související klíče jako PaReq, TermUrl atd, když uživatel klikne na tlačítko zaplatit nyní na svých webových stránkách (HttpClient žádost může volat vaše backend API získat brány configs). Příklad:

       {
          keys: [
            {
              name: "PaReq",
              value: "eJxVUstugzAQvPcrEB+AHwTiRBtHaXMIqlrRJ",
            },
            //... Rest of the keys
          ],
        };
    
  2. Vytvořit dynamický formulář po získání gateway config

    let f = document.createElement("form");
    f.setAttribute("method", "post");
    f.setAttribute(
      "action",
      "https://test.sagepay.com/mpitools/accesscontroler?action=pareq"
    ); //Your action URL
    
    //create hidden input elements
    config.keys.forEach((item) => {
      let i = document.createElement("input");
      i.type = "hidden";
      i.name = item.name;
      i.value = item.value;
      f.appendChild(i); //Add it to the form
    });
    
    document.body.appendChild(f);//Add the form to the body
    f.submit(); //Submit it immediately
    
  3. Nyní bude uživatel přesměrován na platební bránu. Platební brány požádat o callback URL které jsou k předání výsledku platby pro váš backend. Vytvořit API (řekněme api/callback) to by zvládnout platební odpověď od brány.

  4. Konečně v api/callback můžete ukládat odpovědi v databázi a na základě platby úspěch/selhání, přesměruje uživatele zpět do vaší Angular aplikace s platební id jako parametr. https://youapp.com/payment/123456/success

Tady máme trasy definované v Úhlové aplikaci s názvem payment to trvá 2 parametrů trasy

    path: 'payment/:paymentId/:result'
2021-11-23 04:47:53

Děkuji moc. To je skvělá odpověď
hanushic

@hanushic Rád, že to pomohlo
Pankaj Sati

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................