2

从表面上看,这个设置似乎很简单,但是当我尝试在我的登台服务器上执行测试事务时,我得到:

Uncaught Error: You did not set a valid publishable key. Call Stripe.setPublishableKey() with your publishable key.

对此有点困惑,因为我认为我是。在我得到的模板上:

<form action="" class="form" method="POST" data-stripe-key="{{ STRIPE_PUBLIC_KEY }}" data-replace-closest=".subscribe-form" >
            {% csrf_token %}
            {{ form.stripe_token }}
            {{ form.plan }}
            <button type="submit" class="btn"><span>Sign Up</span>
            </button>

</form> 

在同一个模板下面是我的.js:

        <script type="text/javascript">
          Stripe.setPublishableKey('{{ my_pk }}');
        </script>
        <script src="https://checkout.stripe.com/v2/checkout.js"></script>
        <script>
            $(document).ready(function(){
                $('body').on("click", '.change-card, button[type=submit]', function(e) {
                    e.preventDefault();
                    var $form = $(this).closest("form"),
                        token = function(res) {                        
                            $form.find("input[name=stripe_token]").val(res.id);
                            $form.trigger("submit");
                        };

                    StripeCheckout.open({
                        key:         $form.data("stripe-key"),
                        currency:    "usd", 
                        name:        'Subscription plan',
                        panelLabel:  'Subscribe',
                        token:       token
                    });

                    return false;
                });
            });
        </script>

在 settings.py 我只有

STRIPE_PUBLIC_KEY = '{{ my_pk }}'
STRIPE_SECRET_KEY = '{{ my_sk }}'

在 heroku 环境变量上设置为

heroku config:add STRIPE_PUBLIC_KEY=my_pk STRIPE_SECRET_KEY=my_sk --remote staging

我已经尝试在 javascript 中对 pk 进行硬编码,我尝试将它作为 STRIPE_PUBLIC_KEY 传递,无论哪种方式我都在控制台中得到“未设置可发布密钥”。Heroku 环境是否存在导致这种情况的原因?我在某处有 .js 语法错误吗?谢谢

4

0 回答 0