更新 Stripe 数据量

Posted

技术标签:

【中文标题】更新 Stripe 数据量【英文标题】:Update Stripe data-amount 【发布时间】:2015-03-16 22:55:33 【问题描述】:

我正在将 Stripe 实施到一个 django 网站中,除了一个部分之外,一切都在工作。在我的购物车中,用户可以更新更改总数的项目。除了在Stripe Checkout 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>

然后我尝试更新的javascript是这样的:

function updateTotal(amount) 
    /* update the total in the cart in both the table cell and
        in the stripe button data-amount */
    var totalStr = shoppingTotalCell.text().replace('$', ''),
        originalTotal = parseFloat(totalStr),
        newTotal = originalTotal + amount,
        newTotalStripe = newTotal * 100,
        newTotalStr = newTotal.toFixed(2),
        script = $('#stripe-script');

    shoppingTotalCell.text('$' + newTotalStr);

    console.log(script.data("amount"));
    // this returns the correct original amount

    script.data("amount", newTotalStripe);

    console.log(script.data("amount"));
    /* this returns the updated amount, however the HTML data-amount 
        attribute does not update. */
  

【问题讨论】:

【参考方案1】:

事实证明,要获得条带支付的动态数据金额,您必须使用 Custom Checkout 而不是 Simple Checkout。这段代码成功了。

      <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>

【讨论】:

【参考方案2】:

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

StripeCheckout.__app.configurations.button0.amount = 1234;

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

【讨论】:

这根本不安全,您可以在客户端手动更改金额以支付0。【参考方案3】:

正如@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>'
);

【讨论】:

以上是关于更新 Stripe 数据量的主要内容,如果未能解决你的问题,请参考以下文章

大数据Apache Druid:Druid数据的全量更新

oracle基于3种方法的大数据量插入更新

MERGE INTO 解决大数据量 10w 更新缓慢的问题

Oracle 批量上传或更新操作(百万数据量也挺快7秒左右)

PHP处理大数据量老用户头像更新的操作

oracle视图如何计算当天数据量