单笔转账到支付宝账户接口 有人集成过不?里面要求: 公钥证书方式下,开发者发送给开放平台网关请求参数中,需携带应用公钥证书SN(app_cert_sn)、支付宝根证书SN(alipay_root_cert_sn),若不携带这两个参数,网关会拒绝请求。SN值是通过解析X.509证书文件中签发机构名称(name)以及内置序列号(serialNumber),将二者拼接后的字符串计算MD5值获取,可参考开放平台SDK源码中AlipaySignature.getCertSN实现app_cert_sn的提取。
SN值怎么搞,你们有node.js版的不?支付宝平台只有java,php版本的,看不懂哎。
几年前写过一个,你看看是不是你要的 https://github.com/zy445566/alipay-request-node
我也碰到这个问题,但是阿里云只有java有自带的sdk,找了半天没办法 最后使用python实现了一套生成sn的脚本 把下下来的脚本丢进去生成,最后可以正确返回了
前几天刚好碰到过这个问题,alipay 官方 sdk 没有公钥证书的实现,从理解概念到实现调了我几乎两天……
SN 里面的 serialNumber 很容易获取,但 name 是最难搞的,其实参考 Java sdk,搜索关键字 getX500PrincipalName,就能搜到 RFC2253 的说明,要照着规范写实现。
大致是:
解析证书获得的签发机构(issuer)字段, 由 Common Name(CN)/ Organizational Unit(OU)等几个字段组成, 拼成这样一个字段:CN=${CN},OU=${OU},O=${O},C=${C}; 是要
找的 name 了
其他的把 name 和 serialNumber 拼接 md5 等就简单了,参考 java 实现吧
有个很重要的问题是 nodejs 解析阿里云公钥证书的库有很多坑,列举几个可以慢慢去尝试 https://www.npmjs.com/package/cert-info https://github.com/Southern/node-x509 https://www.npmjs.com/package/x509 https://www.npmjs.com/package/pkijs https://www.npmjs.com/package/@fidm/x509 几乎每一种库我都试过了,有的像 pkijs 要配合 asn1js 库去使用,非常难用,最后个人是用了 [@fidm/x509 ](https://www.npmjs.com/package/@fidm/x509) 这个库,供参考
var AlipaySdk = require(‘alipay-sdk’).default var config = require(rootDir + ‘/configs’) var fs = require(‘fs’)
const alipaySdk = new AlipaySdk({ appId: config.alipay.appid, privateKey: fs.readFileSync(rootDir + ‘alipay_private_key.pem’, ‘ascii’) })
module.exports = alipaySdk
然后具体代码里执行: yield alipaySdk.exec(‘alipay.fund.trans.toaccount.transfer’, params)
最后有成功实现的吗,使用公钥证书加密方式