微信支払い署名エラーphp


先着コード
//$params       
 static public function getSign($params)
    {
        $arr = [];
        //         
        foreach ($params as $k => $v){
            $arr[$k] = $v;
        }
        ksort($arr);
        $stringA = urldecode(http_build_query($arr));

        $stringSignTemp=$stringA."&key=".self::KEY;
        //md5   
        $sign = strtoupper(md5($stringSignTemp));
        return $sign;
    }

レポートの署名が間違っている場合
  • パラメータがそろっているかどうかを確認する
  • 署名中にksort
  • がソートされたかどうか
  • urldecode
  • を復号するかどうか
  • 支払鍵が正しいかどうか.mmpの最後の穴は、ドキュメントの1つ1つのアルファベットをよく見なければならないことを注意してください.私が間違っているのは、統一的に注文した署名appidが小文字で、ウィジェットに署名するときにappIdの「I」が大文字であるからです.

  • 以下は公式に与えられた失敗の原因である.
    1)微信のオンライン署名ツールを使用して、署名がプログラム生成と一致しているかどうかを検査するhttps://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1署名ツールはGoogleで開きます.
    MD 5,XMLを選択し,要求パラメータxmlを入れると署名を検証できる.
    2)微信のオンライン署名ツールと一致している場合は,プログラムに誤りがないことを示し,API鍵の誤り(他人によって変更されたり,記憶を間違えたりした)と判断する.
    商家プラットフォームのアカウント情報でAPI鍵(アカウント設定-セキュリティ設定-APIセキュリティ)を変更し、15分後に有効
    2.1)統一注文用はA商戸号であり、A商戸号が商戸プラットフォームに登録してkeyを設置しなければならない.
    2.2)統一注文要求パラメータのtotal_feeパラメータのタイプはintタイプです.
    3)微信のオンライン署名ツールと一致しない場合は、プログラムにエラーがあることを示し、よくあるエラーは次のようになります.
    3.1)符号化の問題は、すべてutf-8であることを確保する.もし中国語があれば、まず中国語を英語に変えて署名し直して、署名が間違っているかどうかを見て、英語が間違っていなければ中国語が間違っていないならば、基本的にはコードの問題に違いない.
    3.2)メッセージ中のフィールドの大文字と小文字は文書中と完全に一致する
    4)統一注文と振り替え支払い署名タイプは一致する必要がある.
    5)パラメータの種類と形式、長さの制限は完全に文書の要求に合う必要がある