如何将我的Laravel App的Sqlite数据库中的值传递到.js文件,以允许Paypal Checkout按钮起作用?

拉拉卡托:

我会先说,我相信可能会有更简单或更好的方法来执行此操作,因此,如果您知道一个可以随意评论和解释您的方法的话。

但是对于我的应用程序,有些事情无法更改:

  • 解决方案必须与Laravel一起使用
  • 解决方案必须与Paypal Checkout配合使用
  • 最好是不能轻易绕开解决方案(例如,不希望人们能够轻易改变所处理产品的价格。因此,我希望信息来自服务器端数据库或控制器等)。

现在,我的设置如下:

在Laravel视图中:

@push('scripts')
<script src="https://www.paypal.com/sdk/js?client-id=CLIENT_ID_HERE"></script>
<script src="{{ asset('js/paypalbutton.js') }}" type="text/javascript"></script>
@endpush

//LOTS OF STUFF HERE
//|Further Down|
//|            |
//v            v

<div class="show-price">
      {{'$' . $offering['price']}}  //This will display the price for current item from mysql
</div>

<div class="click-to-purchase">
     <div id="paypal-button-container" load="paypalbutton(this)">
     </div>
</div>

在laravel项目目录中名为paypalbutton.js的.js文件中:

$(document).ready(function paypalbutton(){

paypal.Buttons({
createOrder: function(data, actions) {
return actions.order.create({
    purchase_units: [{
        amount: {
            value: '0.01'
                }
            }]
        });
    },
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
    alert('Transaction completed by ' + details.payer.name.given_name);
        });
    }
}).render('#paypal-button-container'); // Display payment options on your web page


});

这可以在页面上显示贝宝按钮,并且可以处理付款,效果很好,问题是,我需要将信息从sqlite数据库传递到javascript文件,并提供诸如交易金额之类的信息。

理想情况下,我只是将每条信息的变量保存在.js文件的顶部,并在运行时使用正确的值对其进行初始化。

艾哈迈德·阿图伊(Ahmed Atoui):

你可以通过全局js变量来做到这一点:

@push('scripts')
<script>
let amount ='{{$amount}}'
</script>
<script src="https://www.paypal.com/sdk/js?client-id=CLIENT_ID_HERE"></script>
<script src="{{ asset('js/paypalbutton.js') }}" type="text/javascript"></script>
@endpush

并在您的js文件中:

    $(document).ready(function paypalbutton(){

paypal.Buttons({
createOrder: function(data, actions) {
return actions.order.create({
    purchase_units: [{
        amount: {
            value: amount 
                }
            }]
        });
    },
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
    alert('Transaction completed by ' + details.payer.name.given_name);
        });
    }
}).render('#paypal-button-container'); // Display payment options on your web page


});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章