2015-01-18 18 views
6

Stripe'i bir django web sitesine yerleştiriyorum ve her şey bir parça dışında çalışıyor. Sepetimde, kullanıcılar toplamı değiştiren öğeleri güncelleyebilir. Stripe Checkout js komut dosyasında veri miktarını ayarlamak dışında her şey doğru şekilde çalışıyor.Güncelleştirme Şerit veri miktarı

Sayfa yüklendiğinde, her şey harika çalışıyor, ancak müşteri alışveriş sepetini değiştirirse, veri miktarı güncellenmez. Toplamı gösteren başka bir kutu var ve bu miktar güncellemeleri iyi.

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

Ve güncellemek için çalışır sonra benim javascript

şudur:

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. */ 
    } 

cevap

19

şerit ödeme için bir dinamik veri-miktarda olması çıkıyor, bunun yerine basit Checkout Custom Checkout kullanmak zorunda. Bu kod hile yaptı.

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

sizin için Şükürler! – sgrutman978