2013-08-01 12 views
23

Sto usando Stripe's checkout.js perché è molto semplice da configurare e utilizzare. C'è un modo per aggiungere coupon?Stripe checkout.js con coupon

<script src="https://checkout.stripe.com/v2/checkout.js" 
    class="stripe-button" 
    data-key="pk_test_czwzkTp2tactuLOEOqbMTRzG" 
    data-amount="2000" 
    data-name="Demo Site" 
    data-description="2 widgets ($20.00)" 
    data-image="/128x128.png"> 
</script> 
+0

possibile duplicato del [Apply Coupon Stripe] (http://stackoverflow.com/questions/18023369/apply-stripe-coupon) – Tarek

risposta

12

Stripe Checkout non supporta attualmente i coupon. Non è elencato nello documentation, né per il pulsante né per l'integrazione personalizzata.

Ci si potrebbe chiedere se ci sia qualche caratteristica segreta. Tuttavia, l'utilizzo di funzionalità non documentate, specialmente quando si tratta del processore di pagamento, è una cattiva idea. Punto.


Questo è lo Stack Overflow - continuiamo a scavare!

Attivare jsfiddle. Incolla il tuo codice nella sezione html. Apri gli strumenti per gli sviluppatori in modo da poter visualizzare le richieste di rete.

C'è un en.json, che è un file di stringhe internazionalizzato. Se c'è un input per i coupon, dovrebbe esserci un'etichetta che recita "Enter Coupon Code" o qualcosa di simile. Non c'è nessuno. (Certo, c'è la possibilità che Stripe abbia deciso di codificare in modo rigido questa particolare stringa, ma sembra improbabile).

https://checkout.stripe.com/v3/data/languages/en.json

Si può anche vedere che inner.js è utilizzato per alimentare il popup. Copia il codice sorgente in un elemento di bellezza js e scopri che non vi è alcuna menzione. In effetti, puoi vedere il codice che analizza le opzioni e nessuno di loro ha a che fare con i coupon.

"lib/optionParser": function(exports, require, module) { 
    (function() { 
     var BOOLEAN_OPTIONS, DEFAULTS, STRING_OPTIONS, URL_OPTIONS, extractValue, helpers, toBoolean, _; 
     _ = require("vendor/lodash"); 
     helpers = require("lib/helpers"); 
     DEFAULTS = { 
      currency: "usd", 
      allowRememberMe: true 
     }; 
     BOOLEAN_OPTIONS = ["billingAddress", "shippingAddress", "notrack", "nostyle", "allowRememberMe", "allowPhoneVerification", "zipCode", "trace", "alipayReusable", "bitcoin"]; 
     STRING_OPTIONS = ["key", "amount", "name", "description", "panelLabel", "currency", "email", "locale", "alipay"]; 
     URL_OPTIONS = ["url", "referrer", "image"]; 

Si può vedere come ciascuna delle opzioni qui allineare 12:59 con le opzioni disponibili per custom integration, che mappa per le opzioni per il pulsante (non vi resta che utilizzare i trattini invece di CamelCase)

A questo punto, è possibile continuare a scavare se si vuole convincere ulteriormente, ma mi piacerebbe raggiungere il supporto Stripe e fare una richiesta di funzionalità. Felice scavare!

7

Checkout crea solo il token. Il coupon viene applicato al cliente dopo che il token viene restituito al server e il cliente viene addebitato.

stripe.Customer.create(
    source=token, 
    plan="basic_monthly", 
    email="[email protected]", 
    coupon="coupon_ID" 
) 
1

Se volete passare un codice promozionale per il tuo back-end, si può semplicemente aggiungere un campo di input per esso all'interno della forma. Tuttavia, non modifica gli importi nel modulo a comparsa dalla striscia, a meno che non si desideri ottenere sofisticati e chiamare javascript aggiuntivi per verificare i parametri del codice coupon inserito e modificare i parametri dello script stripe.

È possibile includere tutti gli input necessari all'interno dei tag modulo a condizione che non vengano utilizzati da stripe.

<form action="/your-server-side-code" method="POST"> 
 
    Coupon Code: <input type="text" name="coupon_code"> 
 
    <br> 
 
    <script src="https://checkout.stripe.com/v2/checkout.js" class="stripe-button" data-key="pk_test_czwzkTp2tactuLOEOqbMTRzG" data-amount="2000" data-name="Demo Site" data-description="2 widgets ($20.00)" data-image="/128x128.png"> 
 
    </script> 
 
</form>

Problemi correlati