2

ここからクレジットカード決済にPaypal PHP Rest API を使用しています。デモデータで無事支払いできました。ユーザーがクレジット カードの支払いでエラーに直面した場合、プログラムによる方法ではなく、ユーザー フレンドリーな方法でそれをリアルタイムで表示する方法が必要です。

Paypal 開発者サイトから、返されたエラー オブジェクトの形式を見つけましたが、その使用方法がわかりません。

私のコードは次のとおりです。

try {
    $payment->create($apiContext);


} catch (PayPal\Exception\PPConnectionException $ex) {

echo "Exception: " . $ex->getMessage() . PHP_EOL;
    var_dump($ex->getData());

}

間違ったデータを意図的に入力すると、次のエラー メッセージが表示されました。

        Exception: Got Http response code 400 when accessing 
    https://api.sandbox.paypal.com/v1/payments/payment.

        string '{"name":"VALIDATION_ERROR","details":

    [{"field":"payer.funding_instruments[0].credit_card",
    "issue":"Invalid expiration (cannot be in the past)"},

    {"field":"payer.funding_instruments[0].credit_card.number",
    "issue":"Value is invalid"},{"field":
    "payer.funding_instruments[0].credit_card.cvv2",
    "issue":"Length is invalid (must be 3 or 4, 
    depending on card type)"}],"message":"Invalid request 
    - see details","information_link":
    "https://developer.paypal.com/webapps
/developer/docs/api/#VALIDATION_ERROR","debug_id":
"bdcc'... (length=523)

では、前述の Paypal 開発者サイトで述べられているエラー オブジェクトを取得するにはどうすればよいでしょうか。また、それを使用して技術者以外の人にエラーを表示する方法はありますか?

4

1 に答える 1

3

返されるエラーは JSON 形式です。json_decodePHPでデコードするために使用できます:

$error_object = json_decode($ex->getData());
switch ($error_object->name)
{
    case 'VALIDATION_ERROR':
        echo "Payment failed due to invalid Credit Card details:\n";
        foreach ($error_object->details as $e)
        {
            echo "\t" . $e->field . "\n\t" . $e->issue . "\n\n";
        }
        break;
}

必要なケースをスイッチに追加します。$e->fieldまた、独自のセンスを追加したり、 andを解析して$e->issue好きなものを表示したりできます。

于 2014-04-30T21:45:24.233 に答える