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

快应用 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 技术弟。

Tags

vivo developer

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