条带:没有这样的标记..在测试模式中存在类似的对象,但是使用实时模式密钥来发出此请求

Jul*_*ien 21 php credit-card stripe-payments

在实时模式下使用Stripe时,我收到此PHP错误:

没有这样的令牌tok_fgfhn ..测试模式中存在类似的对象,但是使用了实时模式密钥来发出此请求

Stripe测试模式下一切都运行良好,而且我已切换到实时API密钥.

我创建了一个这样的新客户:

$token  = $_POST['stripeToken'];
    $email  = $_POST['email'];

$customer = \Stripe\Customer::create(array(
      'email' => $email,
      'card'  => $token
    ));

    //charge for user ads
    $charge = \Stripe\Charge::create(array(
      'customer' => $customer->id,
      'amount'   => $amount,
      'currency' => 'eur'
    ));
Run Code Online (Sandbox Code Playgroud)

我等了好几个小时但是我仍然遇到这个错误.我该如何解决?

Jak*_* T. 8

这听起来像是在试图向您的测试帐户中存在的客户收取费用,而不是在您的真实帐户中.确保您使用实时密钥创建新客户并使用其令牌创建费用.


dev*_*Xen 5

查看使用测试公共 API 密钥检索令牌的 javascript。将其更改为您的实时公共 API 密钥。

它应该是这样的

Stripe.setPublishableKey('pk_test_axEdfdasdfasfsadfsad');
Run Code Online (Sandbox Code Playgroud)


小智 5

您的 Stripe 帐户中将有两个不同的密钥。请确保您已将两个测试密钥替换为实时密钥:

实时密钥:sk_live_00000000000000000000000

实时发布密钥:pk_live_00000000000000000000000

1-密钥将替换您所有收费的 php 脚本

  \Stripe\Stripe::setApiKey("sk_live_00000000000000000000");
Run Code Online (Sandbox Code Playgroud)

2- 发布密钥将替换您验证付款表单的 .JS 文件中的内容,该文件还会在成功验证后创建令牌。它可能会调用 stripe.js 或您需要找到此文件的其他名称,它将具有您需要从测试到实时替换的发布密钥:

 Stripe.setPublishableKey('pk_live_0000000000000'); //this would be publish key

            function stripeResponseHandler(status, response) { //token function
                if (response.error) {
                    // re-enable the submit button
                    $('.submit-button').removeAttr("disabled");
                    // show hidden div
                    document.getElementById('a_x200').style.display = 'block';
                    // show the errors on the form
                    $(".payment-errors").html(response.error.message);
                } else {
                    var form$ = $("#payment-form");
                    // token contains id, last4, and card type
                    var token = response['id'];
                    // insert the token into the form so it gets submitted to the server
                    form$.append("<input type='hidden' name='stripeToken' value='" + token + "' />");
                    // and submit
                    form$.get(0).submit();
                }
            }
Run Code Online (Sandbox Code Playgroud)