如何获得Flask的贝宝智能支付按钮响应

时间:2020-07-22 01:59:52

标签: javascript python flask paypal

我正在尝试在Flask项目中设置Paypal付款。我正在从Paypal复制智能付款按钮代码,并将其粘贴到模板中。付款流程有效的购买响应详细信息位于javascript中。如何将响应返回到我的Flask应用,以便确认付款?

这在我的模板中:

<div id="paypal-button-container"></div>
    <script src="https://www.paypal.com/sdk/js?client-id=fake&currency=USD" data-sdk-integration-source="button-factory"></script>
    <script>
      paypal.Buttons({
          style: {
              shape: 'pill',
              color: 'gold',
              layout: 'vertical',
              label: 'paypal',
              
          },
          //method: 'POST',
          createOrder: function(data, actions) {
              return actions.order.create({
                  purchase_units: [{
                      amount: {
                          value: '10'
                      }
                  }]
              });
          },
          onApprove: function(data, actions) {
              return actions.order.capture().then(function(details) {
                    // Show a success message to the buyer
                   // window.write('Transaction completed by ' + details.payer.name.given_name + '!');
                  console.log("success");
                  return details;
              })
          }
              }).render('#paypal-button-container');

</script>

和应用代码:

@app.route('/upgrade/<username>', methods=['GET','POST'])
@login_required
def upgrade(username):
    user = User.query.filter_by(username=username).first()
    result = request.get_json()
    flash(result)
    return render_template('upgrade.html', user=user)  

Flash消息返回空dict。

1 个答案:

答案 0 :(得分:0)

Flask是一个服务器框架,因此您应该使用以下前端UI:https://developer.paypal.com/demo/checkout/#/pattern/server

并使用服务器上的两条相应路由对其进行解析,一条用于“设置交易”,另一条用于“捕获交易”,记录在这里:https://developer.paypal.com/docs/checkout/reference/server-integration/

您可以在这些调用中使用Checkout-Python-SDK。