如何从Klarna支付授权回调响应中获取authorization_token
1. 从JS授权回调中直接提取token
Klarna Payments的authorize方法在授权成功后,会返回包含authorization_token的响应对象,你可以直接在回调函数里访问这个字段:
// 基于你已初始化的klarnaPayments实例 klarnaPayments.authorize({ payment_method_category: 'pay_later' // 替换为你的实际支付方式类别 }, function(response) { if (response.approved) { // 提取authorization_token const authToken = response.authorization_token; // 输出到控制台(用于验证) console.log('Authorization Token:', authToken); // 这里执行后续业务逻辑 } else { console.error('授权失败:', response.error); } });
2. 将token传递到后端PHP(用于后续流程)
如果后续需要用PHP处理该token(比如创建正式订单),可以用以下两种方式传递:
方式一:隐藏表单提交
<!-- 页面中添加表单 --> <form id="klarnaSubmitForm" action="your_process_page.php" method="POST"> <input type="hidden" name="authorization_token" id="authTokenInput"> <button type="submit">确认完成支付</button> </form>
在JS回调中赋值并提交:
if (response.approved) { const authToken = response.authorization_token; document.getElementById('authTokenInput').value = authToken; // 可选择自动提交,或让用户手动点击按钮 document.getElementById('klarnaSubmitForm').submit(); }
PHP接收代码:
<?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { $authToken = $_POST['authorization_token']; // 后续用此token调用Klarna订单创建API等操作 echo '收到的授权Token:' . $authToken; } ?>
方式二:AJAX异步传递
if (response.approved) { const authToken = response.authorization_token; fetch('your_process_page.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: `authorization_token=${encodeURIComponent(authToken)}` }) .then(res => res.text()) .then(data => { console.log('后端处理结果:', data); // 如跳转支付成功页面等后续操作 }) .catch(err => console.error('Token传递失败:', err)); }
PHP接收逻辑和方式一一致。
3. 注意事项
- 仅在
response.approved为true时提取token,避免处理授权失败的无效数据 - 传递token时用
encodeURIComponent编码,防止特殊字符导致的参数异常 - 后端接收后需验证token有效性,再执行订单创建等核心操作
内容的提问来源于stack exchange,提问作者Ria
相关产品推荐
相关产品推荐

