从表面上看,这个设置似乎很简单,但是当我尝试在我的登台服务器上执行测试事务时,我得到:
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 语法错误吗?谢谢