nodejs 支付宝支付求助 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Ccc99

nodejs 支付宝支付求助

  •  
  •   Ccc99 May 15, 2017 5565 views
    This topic created in 3269 days ago, the information mentioned may be changed or developed.

    最近被卡在签名验证上了,好烦,不知道哪里错了,服务器加密出来的数据和支付宝工具加密的完全不一样,有没有 V 友已经集成过支付宝支付,求个 demo 例子。项目很急,微信已经搞定了就差支付宝了。万分感谢!!!

    17 replies    2017-05-16 11:16:15 +08:00
    fds
        1
    fds  
       May 15, 2017
    ……公司有保密协议呀,不能随便贴代码。签名不就是 crypto.createSign("RSA-SHA256") 么。你把你代码贴出来俺看看好咯。
    fds
        2
    fds  
       May 15, 2017
    你说的是验证签名?不是生成签名?验证签名用的是
    const verify = crypto.createVerify("RSA-SHA256")
    verify.update(strValues)
    return verify.verify(appInfo.public, Buffer.from(strSign, "base64"))
    返回的是布尔值表示签名是否正确。strValues 是参数按顺序拼成的字符串,strSign 是支付宝给的签名。
    Ccc99
        3
    Ccc99  
    OP
       May 15, 2017   1
    @fds
    生成我贴下代码
    const privateKey =
    `-----BEGIN EC PRIVATE KEY-----
    MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCZUqn6UL7/PIM0m4r4gZhDNWy6narKRfwZGpmOX3CPxvVFWMu7qmJsRRm7o3Di82YE7y9smwertorEtrptjZNPh+7vkVKGX8njC/IlfJhKWKViYFNlGzCmtXVbA7+bP9GE+62f6PAu1wEmPP8lQd6to6yxNKAnqt1UMagx25KGQaVrhYbuk9ACPb9MzA2VszZwSHEYJ+5g+VKLNikxmvbh6XoUWNmo2+ROYxyFb00v7rYaucxY284p3vUUS4qu40bUPcZ3jIY/S7VSe+CGEjhtrf+jF3zTrjtZj3CXLJs1M3xWnmqW5GEArRMWxIZqmWupWwJ4iswULhS3QjfUdLbvAgMBAAECggEAeqXGtScsci4s4sNeGsZIT9MHxAxl1+K99DL0DRDJkSndf/i1GM0GaIeqOxBWOCXuQRo4fI9TRogCX7OwU/yBj4g0mU1Nj5JGhCpFLLmLdUWOHrDhZSqn82OKmiDYgE8/wjo1vIpwv3dcQwNeMqaLg6k/do2bY7/pxvTmD+QORPgyctVcv+DaQVKbjYuwjpFmPiy62Ro2zj7aoL8R4M3o9JJ7sBk0XH7afBi6dvasIb+Jn0RUX2PgfFw857Lv6QeBIWiUpVgJe138SE09P5Oeo3dR8ioNmbNsHXTjeKTeAN/coawV9o/TsbB7lYTncjFu3x5NIRWEn3Cd0dLD2i2sqQKBgQDseqagDq6r/vtdJyP9B5N10evHgvOdmcxaCFTrcLc5cYvwSf/gGzLNegVrzbuEL8osJPM/DWZxhMMOn+b32uiAyJXFNhneswyPOapZDmgnnYYYHqSyfe5p9/g/GVjmbsDXmp/JQXqKMrb5OvkJDkhDeR00Zi6fmYeXTNYBoOCmswKBgQCl+rsSOyYUzQIMW9+EdLPV2knO9FuA3r5VXdoul4P8tm/KTdFMdhLiETMNeY718rNz5hxSVjb/5JdsajUU72+DwwkEvNtXNUAzTfRc7Rro407PuWbGJ/qwtCK4a6oyMhkPMI1lcD4ZbE1RYpKhWV0A09JfxNTtFgbS4PVuJy/s1QKBgQCUq59p7REfjNSXAe58O3EXl3w2GDv0jyaMS8SnqFtov9wMm1lEmZTc3aPe3J7RQgJGsoxCzbfkEmVXImxg0r1tia2vKI4nFkYFHWndR1Nv5HbTXyCIHufuszjc4qCjbmnKoqlmK8ZQcAXctpiues4vrUsREFSrfihilKnOqEfURQKBgD2Yc84LN1Gm1ujBO4zLRmXJcXSlCEQl5VqGzs5Vmjyxc4EPKeoHM3DD0z9f6ibp36DWN5Jyvkxuh6dLLtHLHYY3XeRtNbUCZQXlGxdVQpRErt21vycwdP8Yin4ILowcPWJ+sSqA4frLT1Ixk5rfL/17nmm+AQrPDs85frtXPZjVAoGBAKTUJrfQs6PrWfUbr0n+oHLa7Fll/z2zrpJvM68cwg6mF734C0lJe5UJ9zSg00DhwrnDr+aKZ1z+ZPZfI4tbD4GyKPwi5PtvQjqlVssTQV+1tOr+hSrbF8Gm+I6inKvYJW1UYR5DxAu/lpSTdONgGZuM6O3VA6/GDF911+ub5iah
    -----END EC PRIVATE KEY-----`;
    var sign = crypto.createSign('RSA-SHA256');
    sign.update(str);
    var signstr = sign.sign(privateKey, 'Base64');
    我加密出来的和工具的就是不一样,私钥的格式错了么
    former
        4
    former  
       May 15, 2017
    可以通过支付宝的签名验证工具来比对啊,验证工具里面会给出每一步的数据,你一步一步对比看看哪一步出问题了
    Ccc99
        5
    Ccc99  
    OP
       May 15, 2017
    @former 我就是加密出来和工具不一样,所以纠结。明天再看看,一个人做 2 个项目。很纠结。很烦
    fds
        6
    fds  
       May 15, 2017
    私钥我加的是 -----BEGIN RSA PRIVATE KEY----- 不是 EC
    排序对吗? biz_content: JSON.stringify({}) 对吗?算加密的时候不用 querystring.escape 值但生成 url 时要 escape。
    U7Q5tLAex2FI0o0g
        7
    U7Q5tLAex2FI0o0g  
       May 15, 2017
    @zoobop #3 把 key 都贴出来真的好吗 = =
    Jaylee
        9
    Jaylee  
       May 15, 2017
    @zoobop 如果有中文的话,你应该是少了一个编码参数,曾经我也遇到这样的问题。

    ```
    let verify = crypto.createVerify( "RSA-SHA1", 'utf8' );

    verify.update( signstr, "utf8" );
    ```
    Ccc99
        10
    Ccc99  
    OP
       May 15, 2017
    @littleylv 没事,还有公钥,到时候会替换下。
    Ccc99
        11
    Ccc99  
    OP
       May 15, 2017
    @Jaylee 嗯,明天上班再看看。不懂再问,感谢各位回答
    voocel
        12
    voocel  
       May 16, 2017 via Android
    为什么有关 node.js 的贴都是黑的
    Ccc99
        13
    Ccc99  
    OP
       May 16, 2017
    @voocel 节点 css
    Ccc99
        14
    Ccc99  
    OP
       May 16, 2017
    @fds 我把 key EC 改成 RSA 会提示 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
    fds
        15
    fds  
       May 16, 2017
    o 那还是保留不报错的把 XD 那只能是参数排序编码的问题咯
    Ccc99
        16
    Ccc99  
    OP
       May 16, 2017
    @fds 可以了。应该是加密的数据组装、编码的时候错了。现在可以了 感谢各位~
    Ccc99
        17
    Ccc99  
    OP
       May 16, 2017
    @fds 恩。刚刚重新写方法。可以啦
    About     Help     Advertise     Blog     API     FAQ     Solana     4873 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 54ms UTC 10:01 PVG 18:01 LAX 03:01 JFK 06:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86