Я очень плохо знаком с интеграцией платежного шлюза.У меня проблема с обнаружением ошибок.Я видел их официальную документацию для отлова ошибок, но ничего не работает.Мой платеж работает нормально, и когда я ввожу правильную информационную полосу, он берет мой платеж и успешно перенаправляет на страницу успеха, но проблема возникает, когда я пытался с неверной информацией, она не дает мне никакой ошибки, просто показывает HTTP 500 error (в производственной среде).Когда я устанавливаю error_reporting (E_ALL), он показывает мне фактические ошибки, но я не могу отловить эти ошибки в Try Catch.
Вот мой контроллер
//check whether stripe token is not empty
if (!empty($_POST['stripeToken'])) {
$stripe = array(
"secret_key" => "secret key",
"publishable_key" => "public key"
);
\Stripe\Stripe::setApiKey($stripe['secret_key']);
//add customer to stripe
$customer = \Stripe\Customer::create(array(
'email' => $email,
'source' => $token
));
try {
$charge = \Stripe\Charge::create(array(
'customer' => $customer->id,
'amount' => $itemPrice * 100,
'currency' => $currency,
'description' => $itemNumber,
'metadata' => array(
'item_id' => $itemNumber
)
));
$chargeJson = $charge->jsonSerialize();
} catch (\Stripe\Error\Card $e) {
// Since it's a decline, \Stripe\Error\Card will be caught
$body = $e->getJsonBody();
$err = $body['error'];
print('Status is:' . $e->getHttpStatus() . "\n");
print('Type is:' . $err['type'] . "\n");
print('Code is:' . $err['code'] . "\n");
// param is '' in this case
print('Param is:' . $err['param'] . "\n");
print('Message is:' . $err['message'] . "\n");
} catch (\Stripe\Error\RateLimit $e) {
// Too many requests made to the API too quickly
} catch (\Stripe\Error\InvalidRequest $e) {
echo "I am this error";
$body = $e->getJsonBody();
$err = $body['error'];
print('Status is:' . $e->getHttpStatus() . "\n");
print('Type is:' . $err['type'] . "\n");
print('Code is:' . $err['code'] . "\n");
// param is '' in this case
print('Param is:' . $err['param'] . "\n");
print('Message is:' . $err['message'] . "\n");
} catch (\Stripe\Error\Authentication $e) {
// Authentication with Stripe's API failed
// (maybe you changed API keys recently)
} catch (\Stripe\Error\ApiConnection $e) {
// Network communication with Stripe failed
} catch (\Stripe\Error\Base $e) {
// Display a very generic error to the user, and maybe send
// yourself an email
} catch (Exception $e) {
// Something else happened, completely unrelated to Stripe
}
Вот ошибка, еслиЯ включаю сообщение об ошибке (E_ALL) Ошибка PHP .Согласно документации на Strip я должен отлавливать ошибки в блоке Try Catch, но я не могу их отследить.Он находится на локальном сервере, но на живом сервере он такой же.