Skip to content

產生檢查碼範例程式

以下提供產生檢查碼的範例程式碼

1. PHP

php
    function generate($arParameters = array(),$HashKey = '' ,$HashIV = '',$encType = 0) { 
            $sMacValue = '' ; 
            if(isset($arParameters)) 
            {    
                // arParameters為傳出的參數,並且做字母A-Z排序 
                unset($arParameters['CheckMacValue']);   
                uksort($arParameters, array('Funpoint_CheckMacValue','merchantSort')); 
                // 組合字串 
                $sMacValue = 'HashKey=' . $HashKey ; 
                foreach($arParameters as $key => $value) 
                { 
                    $sMacValue .= '&' . $key . '=' . $value ; 
                } 
                $sMacValue .= '&HashIV=' . $HashIV ;     
                // URL Encode編碼      
                $sMacValue = urlencode($sMacValue);  
                // 轉成小寫 
                $sMacValue = strtolower($sMacValue);         
                // 取代為與 dotNet 相符的字元 
                $sMacValue = str_replace('%2d', '-', $sMacValue); 
                $sMacValue = str_replace('%5f', '_', $sMacValue); 
                $sMacValue = str_replace('%2e', '.', $sMacValue); 
                $sMacValue = str_replace('%21', '!', $sMacValue); 
                $sMacValue = str_replace('%2a', '*', $sMacValue); 
                $sMacValue = str_replace('%28', '(', $sMacValue); 
                $sMacValue = str_replace('%29', ')', $sMacValue); 
                // 編碼 
                switch ($encType) { 
                    case Funpoint_EncryptType::ENC_SHA256: 
                        // SHA256 編碼 
                        $sMacValue = hash('sha256', $sMacValue); 
                    break; 
                    case Funpoint_EncryptType::ENC_MD5: 
                    default:
                    // MD5 編碼 
                            $sMacValue = md5($sMacValue); 
                    } 
                        $sMacValue = strtoupper($sMacValue); 
                }   
                    return $sMacValue ; 
            }

2. .Net

csharp
    <summary>
    /// 產生檢查碼。
    /// </summary>
    /// <param name="parameters"></param>
    /// <returns></returns>
    private string BuildCheckMacValue(string parameters, int encryptType = 0)
    {
            string szCheckMacValue = String.Empty;
            // 產生檢查碼。
            szCheckMacValue = String.Format("HashKey={0}{1}&HashIV={2}", this.HashKey, parameters, this.HashIV);
            szCheckMacValue = HttpUtility.UrlEncode(szCheckMacValue).ToLower();
            if (encryptType == 1)
                {
                szCheckMacValue = SHA256Encoder.Encrypt(szCheckMacValue);
                }
                else
                {
                szCheckMacValue = MD5Encoder.Encrypt(szCheckMacValue);
                }
                return szCheckMacValue;
    }