快应用第三方登录支付签名教程

快应用 Aug 27, 2020

本篇快应用教程,将如何创建第三方登录、支付签名做下说明;生成的签名可用于微信,微博、QQ 的分享、登录、以及支付。另外,也会对快应用登录、支付常见问题,做下解答。

一 已有 app 的 keystore 证书

如果已经在微信、微博后台注册应用,并拥有 app 的 keystore 证书,那么参见如下操作步骤即可:

  1. 快应用的包名需要和微信开放平台上所写的包名一致,快应用包名不允许和已发布的 app 包名一致
  2. 拿到注册到微信的 app 的 keystore 证书和密码
  3. 用下列命令,由 keystaore 文件生成 pkcs12 格式的密钥文件(过程中会提示输入密码)
keytool -importkeystore -srckeystore test.keystore
-destkeystore test.p12 -deststoretype PKCS12
  1. 用下列命令,通过 pksc12 文件生成 pem 签名(过程中会提示输入密码,pem 就是快应用的签名文件)
openssl pkcs12 -in test.p12 -nokeys -out
certificate.pem
  1. 用下列命令,生成 pem 私钥
openssl pkcs12 -in test.p12 -nocerts -nodes
-out private.pem
  1. 把步骤 4 和 5 生成的 private.pem 和 certificate.pem 放到 sign/release 目录下
  2. 也可以用快应用开发工具从“keystore 证书转 pem 证书”,成功后查看 sign/release 目录下是否生成 private.pem 和 certificate.pem

快应用第三方支付登陆签名教程

  1. 注意 manifest.json 中如果需要声明包名的接口,包名要和微信后台注册的包名一致

快应用第三方支付登陆签名教程

  1. manifest.json 里支付分享登陆接口,需要填 sign 的,这个签名填 certificate.pem 中的内容,是 base64 签名,填写到微信后台的是 MD5 签名,用快应用开发工具生成(如图最后一项)

快应用第三方支付登陆签名教程

  1. 如图是微信后台的包名签名信息

快应用第三方支付登陆签名教程

  1. 如图是 manifest.json 的微信支付接口声明的包名签名信息

快应用第三方支付登陆签名教程

二 只有快应用的 openssl 证书,没有 APP 的证书

  1. 快应用开发工具可以生成快应用的签名,选择“生成证书”

快应用第三方支付登陆签名教程

  1. 生成 MD5 签名:

(1)生成快快应用证书后,继续使用快应用开发工具,“由证书生成 MD5”

(2)或者,生成快快应用证书后,用命令生成 MD5 签名

openssl x509 -noout -fingerprint -md5
-inform pem -in certificate.pem

命令执行结果如下

MD5
Fingerprint=89:46:3A:61:77:E4:66:75:B5:A7:5B:4E:36:E8:62:FA

然后只需要把=号后面的字符串取出来,并且把:号去掉,得出如下字符串

FCEE9EA7F8B8684BBB75EC3DFAB994F8

  1. 在微信后台用快应用的包名注册应用,微信后台的应用签名填步骤 2 生成的 MD5 签名
  2. 注意 manifest.json 中快应用包名和需要声明包名的接口,包名要填微信后台注册的包名

快应用第三方支付登陆签名教程

  1. manifest 里支付分享登陆接口,需要填 sign 的,这个签名填 certificate.pem 中的内容,是 base64 签名
  2. 调试的时候,要把 sign/release 下的签名证书,复制到 sign/debug 文件夹下

快应用支付常见问题

  1. Q:网页支付和 app 支付优先级

如果 manifest 配置了两种支付所需的参数:
(1)且手机支持两种支付方式,默认使用 app 支付
(2)手机不支持 app 支付,默认使用网页支付

如果 manifest 只配置了一种支付参数,使用配置了参数的支付方式。

  1. Q:网页支付没有回调

网页支付,需要自行去回调地址接受微信支付的回调结果,或者通过微信提供的支付结果查询接口查询。

  1. Q:为什么有些帖子中描述 APP 方式接入需要创建 Android App?

创建 Android App 的方式也可以,只是比较麻烦。建议参见如上文章,不需要 Android App。APP 方式接入的关键在于:将公钥签名证书的 MD 5 注册到微信开放平台,微信官方提供了工具,用于获取 Android App 中签名 MD5,但是比较麻烦。建议使用 openssl 工具直接读取公钥中的 MD5。

  1. 如何确认微信支付成功?

APP 方式支付,支付成功会通过 success 回调,并带有 prepayid 。网页支付方式,支付成功是回调到服务器端的地址,所以这种情况下,success 回调只表示成功向微信发起了请求。如果需要接收这个支付结果,请在微信【统一下单】接口的请求参数里面带上 notify_url,参考微信支付文档

  1. 微信 APP 方式返回错误 1000,但是手机已经微信已经安装微信,这是什么原因?

这个问题有两种可能:

    1. manifest.json 文件中没有配置 app 支付的相关参数;
    1. 微信 APP 支付需要依赖手机厂商实现,该厂商未在该机型上实现微信 APP 支付,也会导致返回 1000,具体支持机型,请参考官方文档或者在微信/QQ 群咨询厂商人员,比如:vivo 技术弟。

vivo developer

快应用引擎、工具开发者、快应用生态拓展达人(vivo)。

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.