2013-04-14 2 views
2

Я тестирую Stripe на своем сайте, но не могу пройти через «попытку», показанную ниже. В принципе, я никогда не вижу «ТЕСТ» после «попытки».Не пытайтесь работать со стрипом

Я делаю что-то неправильно здесь?

try { 
$charge = Stripe_Charge::create(array(
    "amount" => 50, // amount in cents, again 
    "currency" => "usd", 
    "customer" => $customer->id, 
    "card" => $token, 
    "description" => $email)); 
echo "TEST1"; 
} catch (Stripe_CardError $e) { 
    // Since it's a decline, Stripe_CardError will be caught 
    $body = $e->getJsonBody(); 
    $err = $body['error']; 
    echo 'Status is:' . $e->getHttpStatus() . "\n"; 
    echo 'Type is:' . $err['type'] . "\n"; 
    echo 'Code is:' . $err['code'] . "\n"; 
    // param is '' in this case 
    echo 'Param is:' . $err['param'] . "\n"; 
    echo 'Message is:' . $err['message'] . "\n"; 
} 
echo "TEST"; 

Спасибо!

+0

Сообщения об ошибках? – sectus

+0

Это, вероятно, означает, что вы либо получаете фатальную ошибку, либо исключение, которое не относится к типу Stripe_CardError. Измените свой блок catch(), чтобы поймать все типы Exception и var_dump() your $ e – periklis

+0

Ни попытка, ни catch не возвращают любые значения, отобранные в них. Я обновляю сообщение с полным кодом. – samyb8

ответ

4

Невероятно, что вы получаете еще одну ошибку - если бы вы были, вы бы увидели исключение исключенной ошибки. При этом вы должны, как предположил периклис, также ловить другие типы исключений.

Скорее всего происходит то, что Stripe_CardError был брошен и пойман, но из-за того, что вы не повторяете ничего в выводе, он терпит неудачу. Попробуйте это:

} catch (Stripe_CardError $e) { 
    // Since it's a decline, Stripe_CardError will be caught 
    $body = $e->getJsonBody(); 
    $err = $body['error']; 

    echo 'Status is:' . $e->getHttpStatus() . "\n"; 
    echo 'Type is:' . $err['type'] . "\n"; 
    echo 'Code is:' . $err['code'] . "\n"; 
    // param is '' in this case 
    echo 'Param is:' . $err['param'] . "\n"; 
    echo 'Message is:' . $err['message'] . "\n"; 
} catch (Exception $e) { 
    echo $e->getMessage(); 
} catch (ErrorException $e) { 
    echo $e->getMessage(); 
} 

EDIT 4/16/13 - Вы указали в комментариях, что вы даже не видя ваше эхо в заявлении попробовать. Таким образом, либо a) ваши инструкции эха скрыты от представления, либо b) блок кода до его сбоя. Однако, поскольку вы не поймаете Stripe_CardError, это должен быть другой тип исключения. Теперь я предполагаю, что существует проблема с одной из переменных, которые вы передаете в функцию Stripe ... либо не объявлена, либо пытается получить доступ к объекту не-объекта.

Добавить другие выписки и посмотреть, есть ли у вас что-либо. Единственный способ, которым вы не могли добраться до своего последнего утверждения эха, - это то, что бросается неперехваченное исключение ... Вы просто не видите его.

Это выстрел в темноте, но возможно ли, что ваша среда php имеет отчет об исключительных ситуациях, подавленный или обработанный каким-либо другим способом, что не очевидно? Иногда производственная среда настроена так, чтобы игнорировать или регистрировать исключения, а не показывать их пользователю. Проверьте это, потому что, и если вы этого не видите, его поймают в другом месте и заносят в журнал или скрывают от просмотра.

Попробуйте вставить это где-то ПЕРЕД вашей попытке поймать:

ini_set('error_reporting', E_ALL); 
+0

Зачем это терпеть неудачу? Вы поймаете ошибку, ничего не делаете, а затем скрипт должен продолжить ... – Nanne

+0

То же самое, «ТЕСТ» Я эхо после того, как улов не печатает. И ни одна из ошибок не печатается, на самом деле ничего из улова не печатается. – samyb8

+0

@Nanne: Вы правы, мозг пердит. Хорошо поймал – Codasaurus

1

Я знаю, что это поздний ответ, но я получаю точно такой же вопрос. Я пробовал эхом после каждой строки кода, и эхо остановилось после того, как попытка была предпринята, у меня было мое «количество», равное 10 CENTS (тупо), где должно было быть 10 EURO (1000), полоса не должна допускать таких небольшие расходы, он работал, как только я увеличил сумму до 1000 центов.

$charge = Stripe_Charge::create(array(
    "amount" => 50, // amount in cents, again <<THIS IS WHAT CAUSED MY ISSUE!! 
    "currency" => "usd", 
    "customer" => $customer->id, 
    "card" => $token, 
    "description" => $email)); 

 Смежные вопросы

  • Нет связанных вопросов^_^