感谢这位大神在Github上开源了这款插件https://github.com/charleyw/cordova-plugin-alipay 本插件在此基础上做了些许修改(从服务端获取签名,调用支付宝),如果使用者使用客服端生成签名,请参考上方GitHub地址
- 由于原插件采用客户端签名,不适用于我们的产品,所以改成从服务端获取签名
- 默认使用自动安装的方法
- 去除了对URL Scheme的依赖
- iOS
- Android
cordova plugin add https://github.com/wangxiaochuan366/cordova_alipay.git --variable PARTNER_ID=[你的商户PID可以在账户中查询] --variable SELLER_ACCOUNT=[你的商户支付宝帐号] --variable PRIVATE_KEY=[你生成的private key]
注意:PRIVATE_KEY的值是生成的私钥的内容,要求是PKCS格式,需要去掉——-BEGIN PRIVAT KEY——-和——-END PRIVATE KEY——-,以及空格和换行。关于私钥的说明详见下面关于私钥部分
window.alipay.pay(下单后从服务端返回的sign等信息, function(successResults){alert(successResults)}, function(errorResults){alert(errorResults)});
注意:由于使用的客服端生成签名,所以在调用pay方法之前,先ajax从服务端获取签名,然后在获取的签名放在pay方法里,然后会调出支付宝
successResults
和errorResults
分别是成功和失败之后支付宝SDK返回的结果,类似如下内容
// 成功
{
resultStatus: "9000",
memo: "",
result: "partner=\"XXXX\"&seller_id=\"XXXX\"&out_trade_no=\"XXXXX\"..."
}
// 用户取消
{
memo: "用户中途取消",
resultStatus: "6001",
result: ""
}
- resultStatus的含义请参照这个官方文档:客户端返回码
- memo:一般是一些纯中文的解释,出错的时候会有内容。
- result: 是所有支付请求参数的拼接起来的字符串。
这里用的私钥一定是PKCS格式的,详细生成步骤请参照官方文档:RSA私钥及公钥生成
文档中描述的这一步:OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
会将生成的私钥打印到屏幕上,记得复制下来。