2017-04-26 29 views
1

這個問題是專門針對正方形電子商務api。Squareup API,如何正確處理信用卡錯誤並向用戶顯示

希望這個問題能夠達到一個廣場的開發團隊。

我建立了自己的網站嵌入的付款形式,我不知道如何處理信用卡相關的錯誤。 明確地說。

當信用卡充電終止時拋出的異常。它返回這樣的事情

Array ([0] => stdClass Object ([category] => PAYMENT_METHOD_ERROR [code] => VERIFY_AVS_FAILURE [detail] => Postal code check failed.)) 

我想要做的是看錯誤並確定錯誤是客戶控制之外的東西的結果。

例如,如果錯誤是API錯誤的話,我只是想表明一個通用的消息,告訴用戶稍後再試。而如果錯誤是因爲用戶錯誤地鍵入了他們的郵政編碼。我想特別告訴用戶更正他們的郵政編碼。

所以我發現這個鏈接 https://docs.connect.squareup.com/api/connect/v2/?q=error#type-errorcode

它爲我的錯誤分類的列表。它還顯示特定錯誤代碼的列表。

但我的問題是, 哪一類或代碼列表是最終用戶錯誤的結果?

現在我有一個switch case語句,如果以下任何顯示在[code]字段中,我將向用戶顯示相關錯誤,其他任何內容都只會顯示一般錯誤。

這是做這件事的正確方法嗎?

CARD_EXPIRED  
INVALID_EXPIRATION 
INVALID_EXPIRATION_YEAR 
INVALID_EXPIRATION_DATE 
UNSUPPORTED_CARD_BRAND 
INVALID_CARD 
CARD_DECLINED 
VERIFY_CVV_FAILURE 
VERIFY_AVS_FAILURE 
CARD_DECLINED_CALL_ISSUER 
+0

請仔細閱讀[爲什麼要求的「最佳實踐」壞事問題?](https://meta.stackexchange.com/questions/142353/why-is-asking-一個問題在最佳實踐一個壞事/ 243450),然後再試圖提出更多以意見爲基礎的問題,因爲他們沒有一個商定的答案而邀請討論性討論。 –

回答

1

它取決於您決定向用戶顯示哪些錯誤。一般來說,開發人員可能只是傳遞錯誤消息,或者顯示所有錯誤的一般錯誤。

你怎麼設置它似乎很好,雖然當我想到user error我只是想着忘記一些東西,沒有過期的信用卡。

0

我向用戶顯示任何錯誤字符串或字符串都在響應中。可能有多個錯誤。這裏是我的PHP代碼:



    try { 
     $result = $transaction_api->charge($access_token, $location_id, $request_body); 

    } catch (\SquareConnect\ApiException $e) { 
     $response = $e->getResponseBody(); 
     $error_string = ""; 
     foreach($response->errors as &$error) { 
      $error_string .= $error->detail . "<br>"; 
     } 
     // Return to the credit card form, passing $error_string as a $_POST value 
     // so it can be displayed. I did that by putting a <form> here containing 
     // $error_string and anything else that needs to be passed back as 
     // "hidden" POST data followed by javascript to submit the form. 
     exit(); // since the credit card was rejected. 
    } 
    // if you get here, there were no errors; go ahead and record the approved payment.