gpt4 book ai didi

javascript - Stripe API 状态 200 OK 未创建事件

转载 作者:行者123 更新时间:2023-11-30 15:03:25 25 4
gpt4 key购买 nike

我正在使用带测试 key 的 Stripe API。我已将付款表格成功发布到 Stripe API 端点,但是没有创建任何事件。当我检查 Stripe 事件/日志时,我能够在我提交的测试付款的日志选项卡下看到一条 200 - Ok 成功消息,但是事件选项卡仍然是空的。似乎无法弄清楚这一点。我的代码如下。

这是我用于处理付款的 php:

function wpay_stripe_process_payment() {
if(isset($_POST['action']) && $_POST['action'] == 'stripe' && wp_verify_nonce($_POST['stripe_nonce'], 'stripe-nonce')) {

global $stripe_options;

// load the stripe libraries
require_once(STRIPE_BASE_DIR . '/lib/Stripe.php');

// retrieve the token generated by stripe.js
$token = $_POST['stripeToken'];

// check if we are using test mode
if(isset($stripe_options['test_mode']) && $stripe_options['test_mode']) {
$secret_key = $stripe_options['test_secret_key'];
} else {
$secret_key = $stripe_options['live_secret_key'];
}

// attempt to charge the customer's card
try {
Stripe::setApiKey($secret_key);
$charge = Stripe_Charge::create(array(
'amount' => 1000, // $10
'currency' => 'usd',
'card' => $token
)
);


// redirect on successful payment
$redirect = add_query_arg('payment', 'paid', $_POST['redirect']);

} catch (Exception $e) {
// redirect on failed payment
$redirect = add_query_arg('payment', 'failed', $_POST['redirect']);
}

// redirect back to our previous page with the added query variable
wp_redirect($redirect); exit;
}
}
add_action('wpay_stripe_process_payment');

这是我发送付款信息的js:

Stripe.setPublishableKey(stripe_vars.publishable_key);

function stripeResponseHandler(status, response) {
if (response.error) {
// show errors returned by Stripe
jQuery(".payment-errors").html(response.error.message);
// re-enable the submit button
jQuery('#stripe-submit').attr("disabled", false);
} else {
var form$ = jQuery("#stripe-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();
}
}
jQuery(document).ready(function($) {
$("#stripe-payment-form").submit(function(event) {
// disable the submit button to prevent repeated clicks
$('#stripe-submit').attr("disabled", "disabled");

// send the card details to Stripe
Stripe.createToken({
number: $('.card-number').val(),
cvc: $('.card-cvc').val(),
exp_month: $('.card-expiry-month').val(),
exp_year: $('.card-expiry-year').val()
}, stripeResponseHandler);

// prevent the form from submitting with the default action
return false;
});
});

JSON 响应:

{
"id": "tok_1B12dQG6oQhg3oEDNlZLFORy",
"object": "token",
"card": {
"id": "card_1B12dQG6oQhg3oEDIQa4fiCe",
"object": "card",
"address_city": null,
"address_country": null,
"address_line1": null,
"address_line1_check": null,
"address_line2": null,
"address_state": null,
"address_zip": null,
"address_zip_check": null,
"brand": "Visa",
"country": "US",
"cvc_check": "unchecked",
"dynamic_last4": null,
"exp_month": 4,
"exp_year": 2018,
"funding": "credit",
"last4": "4242",
"metadata": {
},
"name": null,
"tokenization_method": null
},
"client_ip": "187.232.128.105",
"created": 1505177536,
"livemode": false,
"type": "card",
"used": false
}

最佳答案

在我看来,根据 Stripe 文档:https://stripe.com/docs/charges,您似乎没有为您的 token 提供正确的 key 。

这个:

$charge = Stripe_Charge::create(array(
'amount' => 1000, // $10
'currency' => 'usd',
'card' => $token // I think the key here needs to be "source"
));

应该是这样的:

$charge = Stripe_Charge::create(array(
'amount' => 1000, // $10
'currency' => 'usd',
'source' => $token
));

对我来说,我使用的是他们提供的 Stripe PHP 库,而不是:

Stripe_Charge::create(...);

我正在使用:

\Stripe\Charge::create(...);

但实际上我认为问题可能在于您在收费时需要使用“资源”,而不是“卡”。

关于javascript - Stripe API 状态 200 OK 未创建事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46163256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com