更新记录
1.3.0(2021-04-01)
优化了安卓端支宝付授权回调数据的方法.
1.2(2019-11-22)
新增,对支付宝,预付款授权订单返回的结果处理。
1.1(2019-08-29)
优化了,IOS 呼起支付宝回调的方法
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 11.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | 适用版本区间:9 - 14 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
支付宝 android 和 ios 授权登录插件
一、实例化插件
const plug=uni.requireNativePlugin("Html5app-AlipayAuth");
二. Andrid 版本使用说明:
因为本插件与官方提供的内置支付宝支付功能有冲突,所以本插件包含了支付功能在里面,使用本插件,
就不能再勾选官方提供的支付宝支付功能了,不如打包会发生冲突错误。
本插件使用的支宝版SDK版本: alipaySdk-15.6.4-20190624155522
1. 支付功能 介绍
plug.Payment({"orderInfo":""},ret=>{
});
需要服务器端生成一个 orderInfo 订单字符串内容,用于调起支付宝支付功能, 跟官方提供的一样。
app_id=2015052600090779&biz_content=%7B%22timeout_express%22%3A%2230m%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22total_amount%22%3A%220.01%22%2C%22subject%22%3A%221%22%2C%22body%22%3A%22%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%22%2C%22out_trade_no%22%3A%22IQJZSRC1YMQB5HU%22%7D&charset=utf-8&format=json&method=alipay.trade.app.pay¬ify_url=http%3A%2F%2Fdomain.merchant.com%2Fpayment_notify&sign_type=RSA2×tamp=2016-08-25%2020%3A26%3A31&version=1.0&sign=cYmuUnKi5QdBsoZEAbMXVMmRWjsuUj%2By48A2DvWAVVBuYkiBj13CFDHu2vZQvmOfkjE0YqCUQE04kqm9Xg3tIX8tPeIGIFtsIyp%2FM45w1ZsDOiduBbduGfRo1XRsvAyVAv2hCrBLLrDI5Vi7uZZ77Lo5J0PpUUWwyQGt0M4cj8g%3D
获取订单信息: 参考支付宝APP支付文档
I. 成功支付 回调数据
{ "msg":"支付成功",
"code":"9000",
"retsult": {
"code": "10000",
"msg": "Success",
"app_id": "201801240205xxxx",
"auth_app_id": "201801240205xxxx",
"charset": "UTF-8",
"timestamp": "2019-08-03 04:37:03",
"out_trade_no": "1564778212978",
"total_amount": "0.10",
"trade_no": "2019080322001476520543070119",
"seller_id": "2088221737128735",
"sign": "d9eccndF62qqCywTzCgapWOQky3HG2Uzwdx+lBvfJ4sVvVUClHMmmkh388PvlcoYLuzty94OYby3ZAgl6g9dYRhvUQ61hZq1dGHEaXcN+yMIaZCEsrJSWpI942neGisp5383IJM80nJC0Hu9SuIsQPR2qfg2BVbMuYNBcGS77RqedxlT6X+4VZU+DQ2YtTBNiqBLmyxr98LiQKBCFXYtVhCFy+hRe5EhwDT3+YU89Zbe+sLsBYNLMsf6VPqkuBOKbFqzBIPcsTQBD93o3I63/SPVMgIl7BcIta3WcaKi83P42xd9zz0wo19oIEtFIKsj3E78Uui41bgXThVnZYDXVw==",
"sign_type": "RSA2"
}
}
II. 其他原因 回调数据
{"msg":"支付操作已取消","retult":"",code:"6001"}
2. H5 网页支付宝支付转化成 APP原生模式支付,该功能是限于在安卓中使用。
plug.h5Pay({"url":"https://m.taobao.com"},ret=>{});
可以打开任何含有支付宝支付功能的H5 网页,当点击支付宝支付会栏截H5跳转到支付宝,而直接在本APP 调起原生的支付宝支付框。
3. 支付宝授权登录
plug.login({"appid":"201801240205xxx"},ret=>{
});
参数: appid 是你支付宝的应用ID, 填写之后,点击跳转到支付宝授权页面。
I. 授权成功 回调参数
{
"msg": "授权成功",
"result": {
"auth_code": "c984f507191845cb99896324b67cZF52",
"scope": "auth_user",
"state": "init",
"result_code": "SUCCESS",
"app_id": "201903216361xxxx"
},
"code": 0
}
II. 取消授权
{
"msg": "用户取消授权",
"result": "",
"code": 1
}
三、 IOS 版本介绍
I. 为了兼顾一些 虚拟物品的APP 也可以使用支付宝授权登录功能,ios 版本是简结版不包含支付功能,从而避免被苹果审核查到有支付宝相关SDK而不能上架问题。
II. 如果有需要支付宝支付功能的,还需勾选官方提供的支付宝支付选项,使用官方提供的API。
IOS支付宝授权与uniapp官方自带的支付宝支付功能有文件冲突,如果要使用支付宝支付功能,需要下载一个替换文件放在插件目录下,然后和插件一起打包。
1. IOS 授权登录说明:
I .需要在配置 manifest.json 文件中,配置 urlschemes , 名称自己,自定义随便写,这里主要是接收支付宝授权返回的相关信息使用。
/* ios打包配置 */
"ios" : {
"urltypes":[
{
"urlschemes":["alipaydemo123"]
}
]
}
II .授权调用方法
plug.login({"appid":"201801240205xxx","urlscheme":"alipaydemo123"},ret=>{
});
调起支付宝授权,多了一个 urlscheme 参数,填写的名称 和 配置文件中的一样, 返回的数据跟Android一样。
III. 授权成功 回调参数
{
"msg": "授权成功",
"result": {
"auth_code": "c984f507191845cb99896324b67cZF52",
"scope": "auth_user",
"state": "init",
"result_code": "SUCCESS",
"app_id": "201903216361xxxx"
},
"code": 0
}
IIII. 取消授权
{
"msg": "用户取消授权",
"result": "",
"code": 1
}
4. 授权成功后,获得 auth_code 临时凭证, 通过它提交到服务器上,再通过支付宝的相关 API 接口 来获得你想到的数据。
I. 例如获得会员用户信息
PHP 就可以这样写
$aop = new \AopClient();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId =self::APPID;
$aop->rsaPrivateKey = self::RSA_PRIVATE_KEY;
$aop->alipayrsaPublicKey=self::ALIPAY_RSA_PUBLIC_KEY;
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset='UTF-8';
$aop->format='json';
$request = new AlipaySystemOauthTokenRequest();
$request->setGrantType("authorization_code");
$request->setCode($auth_code); //临时凭证
$result = $aop->execute($request);
$accessToken=$result->alipay_system_oauth_token_response->access_token;
$request01 = new AlipayUserInfoShareRequest(); //查询会员信息
$result01 = $aop->execute ($request01,$accessToken);
II 详细的介绍,请查看支付宝文档介绍
Android 示例,扫一扫下载安装体验