Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新条带数据量_Javascript_Jquery_Stripe Payments - Fatal编程技术网

Javascript 更新条带数据量

Javascript 更新条带数据量,javascript,jquery,stripe-payments,Javascript,Jquery,Stripe Payments,我正在django网站上实现Stripe,除了一个部分外,其他一切都正常工作。在我的购物车中,用户可以更新更改总数的项目。除了在js脚本上设置数据量之外,其他一切都正常工作 当页面加载时,一切正常,但是如果客户更改了购物车,数据量不会更新。我有另一个显示总数的框,该金额可以更新 <!-- here is the script tag in HTML--> <script id="stripe-script" src="https://checkout.stripe.com/ch

我正在django网站上实现Stripe,除了一个部分外,其他一切都正常工作。在我的购物车中,用户可以更新更改总数的项目。除了在js脚本上设置数据量之外,其他一切都正常工作

当页面加载时,一切正常,但是如果客户更改了购物车,数据量不会更新。我有另一个显示总数的框,该金额可以更新

<!-- here is the script tag in HTML-->
<script
id="stripe-script"
src="https://checkout.stripe.com/checkout.js" 
class="stripe-button"
data-image="{% static 'img/marketplace.png' %}"
data-key="{{ STRIPE_PUBLIC_KEY }}"
data-name="Serendipity Artisan Blends"
data-description="Purchase Items"
data-amount="{{ cart_stripe_total }}">
</script>

事实证明,要获得条带支付的动态数据量,您必须使用而不是简单的签出。这段代码成功了

      <button class="btn btn-primary btn-lg" id="stripe-button">
        Checkout <span class="glyphicon glyphicon-shopping-cart"></span>
      </button>

      <script>
        $('#stripe-button').click(function(){
          var token = function(res){
            var $id = $('<input type=hidden name=stripeToken />').val(res.id);
            var $email = $('<input type=hidden name=stripeEmail />').val(res.email);
            $('form').append($id).append($email).submit();
          };

          var amount = $("#stripeAmount").val();
          StripeCheckout.open({
            key:         '{{ STRIPE_PUBLIC_KEY }}',
            amount:      amount,
            name:        'Serendipity Artisan Blends',
            image:       '{% static "img/marketplace.png" %}',
            description: 'Purchase Products',
            panelLabel:  'Checkout',
            token:       token
          });

          return false;
        });
      </script>

结账
$(“#条带按钮”)。单击(函数(){
变量标记=函数(res){
var$id=$('').val(res.id);
var$email=$('').val(res.email);
$('form').append($id).append($email.submit();
};
var金额=$(“#stripeAmount”).val();
StripeCheckout.open({
密钥:“{STRIPE\u PUBLIC\u key}}”,
金额:金额,,
名称:'Serendipity Artisan Blends',
图像:“{%static”img/marketplace.png“%}”,
说明:'购买产品',
panelLabel:“签出”,
令牌:令牌
});
返回false;
});

正如@awwester所说,您可以使用Stripe的定制结账。尽管如此,我还是通过jQuery找到了一种更简单的方法来实现这一点,只要在每次脚本增加数量时使用更改的变量重新安装脚本即可:

$("#stripe-form").html(
  '<input type="hidden" name="amount" value="' +
    totalCost.replace(".", "") +
    '" /><input type="hidden" name="currency" value="usd" /><script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="pk_test_123123123123" data-amount="' +
    totalCost.replace(".", "") +
    '" data-zip-code="true" data-currency="usd" data-billing-address="true" data-shipping-address="true" data-name="Company Name" data-description="Product Name" data-image="https://image" data-locale="auto"></script>'
);
$(“#条带形式”).html(
''
);

或者您可以在单击条带按钮之前使用以下代码;-)


这根本不安全,您可以在客户端手动更改金额以支付0。
$("#stripe-form").html(
  '<input type="hidden" name="amount" value="' +
    totalCost.replace(".", "") +
    '" /><input type="hidden" name="currency" value="usd" /><script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="pk_test_123123123123" data-amount="' +
    totalCost.replace(".", "") +
    '" data-zip-code="true" data-currency="usd" data-billing-address="true" data-shipping-address="true" data-name="Company Name" data-description="Product Name" data-image="https://image" data-locale="auto"></script>'
);
StripeCheckout.__app.configurations.button0.amount = 1234;

$('#stripe-button').click();