2017-02-17 20 views
2

私は、外部api(支払いゲートウェイ)にデータを送信するのに成功したajaxコードを作成しました。外部apiからデータを取得

問題は、「ありがとう」コンテナを表示する前に支払いをして「支払い待ち」ボタンを表示した後にデータを取得する方法です。

以下

Ajaxのポストデータのための私のコードです:ここでは

$.ajax({ 
 
      url: 'creating_bill.php', 
 
      data: { 
 
       paid_amount : JSON.stringify(jumlah_semua), 
 
       email : emel, 
 
       mobile : telefon, 
 
       name : nama 
 
      }, 
 
      type: "POST", 
 
      dataType: "json", 
 
      success: function (data) { 
 
       confirm('Terima Kasih ! Sila buat pembayaran dengan segera.'); 
 
       console.log(data)    
 
       window.open(data.url, '_blank'); 
 
       
 
       setTimeout(function() 
 
       { 
 
        window.location = 'index.html'; 
 
       },10000); 
 
      }, 
 
      async: false, 
 
      error: function(data) { 
 
       handleRequestError(data); 
 
      } 
 
     }) 
 
}

は、支払い完了のためのAPIドキュメントのリンクです:BillPlz doc

しかし、私はどのようにその仕事は考えています。どのように私はデータを投稿し、同じajaxリクエストでデータを取得できますか?

基本的に私のシステムプロセスはこのようなものです。お客様がウェブサイト

  • お客様は、彼らが
  • お客様を購入したいという項目を追加訪れ

    1. お客様は
    2. システムを支払うために支払いゲートウェイの請求書にリダイレクト
    3. 支払いゲートウェイを介して項目を確認して支払うことを決定顧客が支払いを完了するのを待っている間に、私のウェブサイトで「待っている」というメッセージを表示します。
    4. お客様が支払いを完了した後、お客様のウェブサイトに戻り、「お支払いいただきありがとうございます」というメッセージが表示されます。

    上記のコードは、私が顧客データを支払いゲートウェイapiに投稿するために使用するコードです。私の問題は、顧客が支払いを完了するのを待っている間に「待つ」メッセージを表示し、支払いが完了したときに「ありがとうございました」というメッセージを表示する方法です。

  • 答えて

    2

    したがって、ユーザーが請求書の支払いを完了したかどうかを確認するために別途リクエストを行う必要があります。

    • は、法案が
    • それは1秒(またはいくつかの他の間隔)で再び自分自身を呼び出して支払われていない場合は法案が
    • を支払われているかどうかを確認するための要求を送信します。基本的には、関数を作成します法案は、それは「ありがとう」のメッセージを示して支払ってインデックスにリダイレクトする(またはあなたが後にやりたいものは何でも)

    またasync: falseを削除した場合、要求の実行中にブロックブラウザいるので、おそらく良いアイデアです。

    あなたのコードは、の線に沿って次のようになります。だから、confirm後、あなたが「待機中」のメッセージが、その後、コードがゲートウェイページを開き、中に請求書のステータスを確認するためにタイムアウトを設定し表示する必要があります

    function checkBillStatus() { 
        $.ajax({ 
        ... 
        // Compose the ajax request to check the bill status 
        ... 
        success: function (data) { 
         // Here you need to check if the bill is paid 
         if (data.isBillPaid) { 
         console.log('Remove waiting for the payment message'); 
         console.log('Show thank you for the payment message'); 
         // Payment is done, redirecting to index 
         setTimeout(function() { 
          window.location = 'index.html'; 
         },10000); 
         } else { 
         // Repeat the request after a while 
         setTimeout(checkBillStatus, 1000); 
         } 
        } 
        }); 
    } 
    
    $.ajax({ 
        ... 
        success: function (data) { 
        confirm('Terima Kasih ! Sila buat pembayaran dengan segera.'); 
        console.log('Add waiting for the payment message'); 
        console.log('User confirmed the payment, redirecting to gateway'); 
        window.open(data.url, '_blank'); 
    
        setTimeout(checkBillStatus, 1000); 
        }, 
        async: true, 
        ... 
    }); 
    

    1秒。 checkBillStatus関数自体が請求書のステータスチェックを行い、支払われていない場合は、タイムアウトを設定して、請求ステータスを1秒以内に再度チェックします。そして、法案が支払われるまで続きます。表示されている場合は、「ありがとうございました」というメッセージが表示され、インデックスにリダイレクトされます。

    開いているウィンドウを閉じるには、ゲートウェイを使用する必要があります。

    +0

    本当にわかりません。 apiからGETデータを取得する別のAjaxリクエストを作成する必要がありますか?顧客は最初に支払う必要があるので。 –

    +0

    お客様は何を支払う必要がありますか?私はあなたが顧客が支払った直後に「待っている」メッセージを表示する必要があると思った。 – jetpackpony

    +0

    ああ、私が「ありがとう」メッセージを表示する前に顧客はまず請求書を支払う必要がある。 「お待ちください」というメッセージが支払いページに表示されます。 –

    関連する問題