最近编写微信企业付款到银行卡
总是返回如下信息:
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[参数错误,请检查参数]]></return_msg>
<result_code><![CDATA[FAIL]]></result_code>
<err_code><![CDATA[SYSTEMERROR]]></err_code>
<err_code_des><![CDATA[解密真实姓名或银行卡号出错]]></err_code_des>
<mch_id><![CDATA[XXXXXXXX]]></mch_id>
</xml>调用公钥接口也成功返回公钥值PublicKey
开发环境  WIN2003SERVER  .NET 4.0 C# 。
加密部分代码:
public string RSAEncrypt(string PublicKey, string EncryptString)
                {
                    PublicKey = @"<RSAKeyValue><Modulus>"+PublickKey+"</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
                    byte[] P;
                    byte[] C;
                    string R;
                    System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider();
                    rsa.FromXmlString(PublicKey);
                    P = (new UnicodeEncoding()).GetBytes(EncryptString);
                    C = rsa.Encrypt(PlainTextBArray, false);
                    R = Convert.ToBase64String(C);
                    return Result;
                }有调试通过的朋友吗?希望赐教,不胜感激。

解决方案 »

  1.   

    我也遇到类似的问题,最终确认结果就是转化psk8格式的pem文件时,保存到文件中的格式问题,请确保是utf8-无bom格式,最终提交成功
      

  2.   

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <xml>
        <err_code>SYSTEMERROR</err_code>
        <err_code_des>解密真实姓名或银行卡号出错</err_code_des>
        <result_code>FAIL</result_code>
        <return_code>SUCCESS</return_code>
        <return_msg>参数错误,请检查参数</return_msg>
        <mch_id>1444739402</mch_id>
    </xml>
      

  3.   

    用md5接口吧,因为java的rsa和c#的rsa不是一个标准。
    java的rsa加密结果始终固定,不做动态填充,c#的做动态填充,每次加密结果都在变化。
    所以,java的rsa私钥加密我真的不知道和md5有什么区别。算了不聊这个,就跟你说,c#和java的rsa是对接不上的。
    解决方案有:
    1、用java、php等其他软件写个中间件,c#调用。
    2、java服务器端更换加密方式,变为动态。
    3、换md5接口。
      

  4.   

    我用这里分享的代码解决了这个问题:http://download.csdn.net/download/u013595289/10187992
    我发现是Base64 编码的问题,用Java自带的Base64的编码会有这个问题,这个代码里面的Base64应该是修改过的,换成这个Base64接口就成功了!
      

  5.   

    我也遇到了同样的问题,java的,  那个填充方式 RSA/ECB/OAEPWITHSHA1ANDMGF1PADDING 改成这个,测试通过
      

  6.   

    楼主,C#版本同样遇到这个问题,解密真实姓名或银行卡号出错。问题估计就是在RSA加密的地方,楼主有没有解决?
      

  7.   

    https://download.csdn.net/download/u011010407/10344226#comment