【问题标题】:Squareup API, how to correctly handle Credit Card errors and show to userSquareup API,如何正确处理信用卡错误并向用户展示
【发布时间】:2017-09-23 05:40:06
【问题描述】:

这个问题专门针对Square电子商务api。

希望这个问题可以传达给 Square 的开发团队。

我正在为我的网站构建嵌入式支付表单,但我不确定如何处理与信用卡相关的错误。 具体来说。

当信用卡收费端点抛出异常时。它返回类似这样的内容

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

【问题讨论】:

标签: php square-connect


【解决方案1】:

我向用户显示响应中的任何错误字符串。错误可能不止一个。这是我的 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.

【讨论】:

  • 呃……别这样。大多数可能的错误不应向用户显示,因为它们与您的实现中的错误或 square api 本身有关。
【解决方案2】:

由您决定向您的用户显示哪些错误。一般来说,开发人员可能只是传递错误消息,或者为所有错误显示一个通用错误。

您的设置方式似乎很好,但当我想到 user error 时,我只想到输入错误的东西,而不是信用卡过期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-15
    • 2018-12-06
    • 2016-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    相关资源
    最近更新 更多