簡體   English   中英

成功 PayPal 付款后,使 HTML 按鈕出現

[英]Make HTML button appear after successful PayPal payment

我正在編寫一個 web 應用程序,它具有 PayPal 按鈕、HTML 表單和 Z4C4AD5FCA2E7A3F74DBB1CED0038AA4 按鈕。 In my web application I am using HTML, CSS, JavaScript and Python Flask in the back-end.

首先,web 應用程序的用戶應該通過 PayPal 進行付款。 其次,付款成功后出現HTML提交按鈕,允許用戶提交HTML表格進行數據庫查詢。 第三,數據庫查詢結果顯示給用戶,HTML 按鈕應該消失。

我應該如何讓這個 HTML 按鈕正確出現和消失? 我試圖阻止我的 web 應用程序的用戶在不付費的情況下無法使我的 HTML 按鈕可見? 例如,用戶是否能夠通過注入 CSS 或 JavaScript 使 HTML 按鈕可見?

I made my first version of the web application in the following way below: Firstly the HTML button is hidden (CSS) and secondly when the PayPal payment is made the JavaScript function makeButtonVisible() makes the HTML button visible. 第三,當 Python Flask 再次呈現網站並顯示數據庫查詢結果時,HTML 按鈕消失。

CSS

#html-button {
    visibility: hidden;
}

JAVASCRIPT

var CREATE_PAYMENT_URL = 'http://127.0.0.1:5000/payment';
var EXECUTE_PAYMENT_URL = 'http://127.0.0.1:5000/execute';

paypal.Button.render(
  {
    env: 'sandbox', // Or 'sandbox'
    commit: true, // Show a 'Pay Now' button
    payment: function () {
      return paypal.request.post(CREATE_PAYMENT_URL).then(function (data) {
        return data.paymentID;
      });
    },

    onAuthorize: function (data) {
      return paypal.request
        .post(EXECUTE_PAYMENT_URL, { paymentID: data.paymentID, payerID: data.payerID })
        .then(function (res) {
          console.log(res.success);

          makeButtonVisible();

          // The payment is complete!
          // You can now show a confirmation message to the customer
        });
    },
  },
  '#paypal-button',
);

function makeButtonVisible() {
  document.getElementById('html-button').style.visibility = 'visible';
}

PYTHON FLASK

return render_template("index.html")

安全設計在服務器端捕獲付款,然后允許付款人繼續執行任何操作。

您需要兩條返回 JSON 的路線,一條用於“創建訂單”,一條用於“捕獲訂單”, 記錄在此處 您可以使用 Checkout-Python-SDK。

將您的兩條路由與以下前端 UI 配對以獲得批准: https://developer.paypal.com/demo/checkout/#/pattern/server

一旦捕獲成功(並在將成功 JSON 返回給您的客戶端之前記錄在您的服務器數據庫中),您可以通過多種方式繼續使用 JavaScript 來“取消隱藏”或顯示表單。 由於捕獲發生在服務器上,您將能夠使用該事實根據數據庫中存在的實際付款記錄驗證表單提交,否則將拒絕它。

如果可能的話,您還需要更新 URL 以便用戶可以刷新頁面或稍后返回,並且仍然能夠提交該付款的表單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM