【发布时间】:2017-12-19 23:12:07
【问题描述】:
我正在将 Paypal Express Checkout 与服务器端 REST 集成到我的 codeigniter 网站中。 根据 Paypal 文档,我在结帐页面中添加了以下内容:
<script src="https://www.paypalobjects.com/api/checkout.js"></script>
<script>
var CREATE_PAYMENT_URL = 'https://#######/paypal/create';
var EXECUTE_PAYMENT_URL = 'https://######/paypal/execute';
paypal.Button.render({
env: 'production', // Or 'sandbox'
commit: true, // Show a 'Pay Now' button
payment: function() {
return paypal.request.post(CREATE_PAYMENT_URL).then(function(data) {
return data.id;
});
},
onAuthorize: function(data) {
return paypal.request.post(EXECUTE_PAYMENT_URL, {
paymentID: data.paymentID,
payerID: data.payerID
}).then(function() {
// The payment is complete!
// You can now show a confirmation message to the customer
});
}
}, '#paypal-button');
</script>
一切正常,但是,当我打开 codeigniter CSRF 保护时,checkout.js 使用 CREATE_PAYMENT_URL 对我的服务器进行的调用被拒绝,因为缺少 CSRF 令牌。我对 JavaScript 知之甚少,我需要一些帮助才能将令牌传递给 checkout.js,Paypal 的文档没有帮助。
我尝试过的:
在 codeigniter 配置上关闭 CSRF 有效! Paypal express checkout 完美运行,但这不是一个选项,CSRF 安全必须开启。 从 codeignter config 中的 CSRF 检查中排除 URI 再次完美运行,但我不满意。必须有一种方法可以使用 CSRF 令牌保护对服务器的调用。 我希望我的问题很清楚,您可以提出一些解决方案。谢谢!
【问题讨论】:
-
如果您还没有,请务必查看此内容。看起来有一些不错的线索:stackoverflow.com/questions/7348383/…
标签: javascript php codeigniter paypal csrf-protection