从表面上看,这个设置似乎很简单但是当我尝试在我的登台服务器上执行测试事务时,我得到了:
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 }}'
on heroku环境变量设置为
heroku config:add STRIPE_PUBLIC_KEY=my_pk STRIPE_SECRET_KEY=my_sk --remote staging
我已尝试在javascript中对pk进行硬编码,我已尝试将其作为STRIPE_PUBLIC_KEY传递,无论哪种方式,我都会在控制台中“没有设置可发布的密钥”。有没有关于Heroku环境引起这种情况的事情?在某处我有.js语法错误吗?感谢