微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

条纹php集成错误:ReferenceError:未定义sessionId

如何解决条纹php集成错误:ReferenceError:未定义sessionId

我一直坚持将Stripe的预构建支付网关集成到我的项目中。

我正在编写非常简单的Eshop(无需登录/注册和购物车),只是一个简单的项目,其中包含表单和条纹结帐作为付款方式...

我一直在关注官方的Stripe文档,但是我很难找到一个答案来解决如何将其“简单的预构建结帐页面”实现到过程PHP的问题。

目前,我一直坚持要获取错误...所提供的代码是我从其官方文档中使用的代码“仍在获取错误ReferenceError:在devtools的控制台中未定义sessionId://

IDK还可以在不使用Slim / Laravel等PHP框架进行编码的情况下如何在服务器上配置端点... stripe提供的示例在配置端点时使用Slim框架....有什么想法吗?

<?PHP
//config PHP 

require_once("vendor/autoload.PHP");

// === SET UP STRIPE PAYMENT GATEWAY ===
$stripe = [
    "secret_key"      => "sk_test_4eC39HqLyjWDarjtT1zdp7dc","publishable_key" => "pk_test_TYooMQauvdEDq54NiTphI7jx",];

\Stripe\Stripe::setApiKey($stripe['secret_key']);
?>
<?PHP

//create-checkout-session.PHP

require_once '_includes/config.PHP';

// ?session_id={CHECKOUT_SESSION_ID} means the redirect will have the session ID set as a query param
$checkout_session = \Stripe\Checkout\Session::create([
    'success_url' => 'http://localhost:8888/Avanza---Eshop/success.PHP?session_id={CHECKOUT_SESSION_ID}','cancel_url' => 'http://localhost:8888/Avanza---Eshop/canceled.PHP','payment_method_types' => ['card'],//,'alipay'
    'mode' => 'payment','line_items' => [[
        'amount' => 2000,'currency' => 'usd','name' => 'mikina','quantity' => 1,]]
]);

header('Content-type: application/json');
echo json_encode(['sessionId' => $checkout_session['id']]);
<!--order.PHP actual page that will be displayed to users-->

<button style="width: 100px; height: 100px" id="checkout-button"></button>

            <script type="text/javascript">
                // Create an instance of the Stripe object with your publishable API key
                var stripe = Stripe('pk_test_51HjoRfIaBaXJG6udQspXdLRNwMesCriMwZoR7nGCF0hZtu2Zp9FUxCFWwVpwwU4BZs7fTxJtYorVTuoK1vqXp2Uw002r6qvmO7'); // removed for Stackoverflow post
                var checkoutButton = document.getElementById('checkout-button');

                checkoutButton.addEventListener('click',function() {
                    // Create a new Checkout Session using the server-side endpoint you
                    // created in step 3.
                    fetch('create-checkout-session.PHP',{
                        method: 'POST',})
                        .then(function(response) {
                            return response.json();
                        })
                        .then(function(session) {
                            return stripe.redirecttocheckout({ sessionId: sessionId});
                        })
                        .then(function(result) {
                            // If `redirecttocheckout` fails due to a browser or network
                            // error,you should display the localized error message to your
                            // customer using `error.message`.
                            if (result.error) {
                                alert(result.error.message);
                            }
                        })
                        .catch(function(error) {
                            console.error('Error:',error);
                        });
                });
            </script>

解决方法

我认为您需要将return stripe.redirectToCheckout({ sessionId: sessionId});替换为return stripe.redirectToCheckout({ sessionId: session.sessionId});

,

它对我有用。如果您看到更多错误或遇到任何问题,请在浏览器控制台的“网络”选项卡中搜索。

$(function() {
    var stripe = Stripe('<?= Config::STRIPE_PUB_KEY ?>'); // here write: pk_test_5...
    $(document).on('click','.buy_now_btn',function(e) {
        let id = $(this).attr('id');
        $(this).text('Please wait...');
        $.ajax({
            url: 'action.php',method: 'post',data: {
                id: id,stripe_payment_process: 1
            },dataType: 'json',success: function(response) {
                console.log(response);
                return stripe.redirectToCheckout({
                    sessionId: response.id
                });
            },})
    })
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。