Authorize.net网关设置

时间:2013-12-18 20:47:01

标签: payment-gateway authorize.net

  1. 您好我正在从authorize.net设置付款表单 - 我已经在开发人员中心工作了两天,试图弄清楚我在哪里可以找到文档,其中包含我需要的api调用的明确示例制作。 我已经查看了网站上的PDF和其他内容,但没有任何内容可以为文档提供示例,我正在寻找像FB api示例一样的文档,我可以看到api调用,这是关于唯一的我找到了http://developer.authorize.net/guides/DPM/wwhelp/wwhimpl/js/html/wwhelp.htm

  2. Authorize.net使用md5哈希进行交易响应 - 我知道在商家帐户中设置值的位置,但我应该设置哪些值? (例如,我应该md5(“some-random-words”)并将该值粘贴到商家帐户设置中?)

  3. 这是我的第一个支付网关设置,所以请耐心等待这个问题的任何不明确部分。 感谢

1 个答案:

答案 0 :(得分:4)

不用担心,我们一度都是新人。

看看你的评论,看起来你不需要帮助1.以上和2我有一些建议。 您在帐户中输入的哈希值实际上只是一个密码

您确实希望尽可能使用MD5哈希安全功能。它可能看起来很复杂,而documentation并没有让您感到困惑,但不要低估电子商务网站上的几层安全性。

你真的需要阅读我链接到的所有文档才能获得重点。特别是这一个:

  

请注意,MD5哈希值最长可达20个字符,包括大写和小写字母,数字,空格和标点符号。更复杂的价值会更安全。

事实证明,您无法输入超过20个字符的值。但是,当您提交时,他们不会验证您的输入,如果他们超过20个字符,则会导致截止密码...而且您永远不会知道,因为您认为他们接受了您的32个字母秘密

接下来,要注意他们做的两种类型的哈希。在文档中,他们给出了两者的例子:

  

MD5哈希是通过组合多个值创建的。

     

对于SIM,这些值用于创建MD5哈希   确切的顺序:

     
      
  1. MD5哈希值,由商家在帐户的设置中分配。
  2.   
  3. API登录ID (x_login)。
  4.   
  5. 我们分配给交易的交易ID号(x_trans_id)。
  6.   
  7. 费用的金额(x_amount)。
  8.         

    对于Silent Post,这些值用于创建MD5哈希   这个确切的顺序:

         
        
    1. MD5哈希值,由商家在帐户的设置中分配。
    2.   
    3. 我们分配给交易的交易ID号(x_trans_id)。
    4.   
    5. 费用的金额(x_amount)。
    6.         

      然后使用生成的字符串生成MD5哈希。

这是我刚刚编写的一个PHP方法,它将为您检查哈希值。这将检查auth.net提供的API和Silent Post哈希值。传递给它的数据来自它们发送给你的监听器的$ _POST数据。

$their_hash == x_MD5_Hash

$trans_id == x_trans_id

$amount == x_amount

private function _is_authnet($their_hash, $trans_id, $amount) {
    // Defined earlier in the class
    $login_id = AUTHORIZENET_API_LOGIN_ID;
    $private_value = AUTHORIZENET_SECRET;

    // Generate two hashes, one for API responses and one for
    // Silent Post messages
    $our_hash_api = md5($private_value . $trans_id . $amount);
    $our_hash_sp  = md5($private_value . $login_id . $trans_id . $amount);

    // Always make the hashes you're comparing uppercase for consistency
    $their_hash = strtoupper($their_hash);

    // Compare our two hashes
    if (strcmp(strtoupper($our_hash_api), $their_hash) === 0) {
        // Match
        return true;
    }
    else if (strcmp(strtoupper($our_hash_sp), $their_hash) === 0) {
        // Match
        return true;
    }

    // No match, it's likely a fake. Recommended to log
    // this event or send an alert of some kind.
    return false;
}

我知道答案是迟到的,你肯定会继续前进。但希望也许有一天这会帮助那些遇到同样麻烦的人。