|
|
1 ano atrás | |
|---|---|---|
| .. | ||
| ets | 1 ano atrás | |
| lib | 1 ano atrás | |
| src | 1 ano atrás | |
| BuildProfile.d.ets | 1 ano atrás | |
| Index.d.ets | 1 ano atrás | |
| LICENSE | 1 ano atrás | |
| README.md | 1 ano atrás | |
| ResourceTable.txt | 1 ano atrás | |
| changelog.md | 1 ano atrás | |
| obfuscation.txt | 1 ano atrás | |
| oh-package.json5 | 1 ano atrás | |
https://opendocs.alipay.com/common/02kiq3
12
12
ohpm install @cashier_alipay/cashiersdk
如果还没有接入过支付宝其他版本SDK,请参考文档: https://opendocs.alipay.com/open/204/105051?pathHash=b91b9616&ref=api 进行服务端接入
唤起支付宝 APP, 需要在项目 entry 中的 module.json5 中增加如下配置
"module": {
...
"querySchemes": [
"https"
],
未安装支付宝 APP 是跳转 H5 支付,已安装支付宝 APP 会直接跳转 APP 支付 通过 router 跳转或者通过 navigation 跳转,只针对未安装支付宝 APP 时跳转 H5 的方式有差异
默认方式,H5通过router进行跳转
// orderInfo 由服务端生成 // 第二个参数 控制是否展示支付宝loading new Pay().pay(orderInfo, true).then((result) => { let message = `resultStatus: ${result.get('resultStatus')} memo: ${result.get('memo')} result: ${result.get('result')}`; console.log(message); }).catch((error: BusinessError) => { console.log(error.message); });使用navigator进行跳转
步骤一:通过调用payWithNav方法 - 第三个参数由sdk回调传入H5页面名称和需要传入到H5页面的参数,开发者自行进行nav跳转 - 第四个参数必传 ,传入 NavPathStack 实例 new Pay().payWithNav(orderInfo, true, (name: string, params: Object) => { this.pageInfos.pushPathByName(name, params); }, this.pageInfos).then((result) => { let message = `resultStatus: ${result.get('resultStatus')} memo: ${result.get('memo')} result: ${result.get('result')}`; console.log(message); }).catch((error: BusinessError) => { console.log(error.message); }); 步骤二: 在你的navigation的navDestination builder中配置对应页面 Navigation(this.pageInfos)... .navDestination(this.PagesMap) ... @Builder PagesMap(name: string, navPageIntent: Map<string, Object>) { if (name === 'alipay/cashier/H5Page') { // name 固定为这个,当然如果你的项目支持动态import的话可以使用回调中的name,二者值一致 AlipayH5Page({ navPageIntent: navPageIntent }) } }
使用navigator进行跳转,使用系统路由表
new Pay().payWithNav(orderInfo, true, undefined, this.pageInfos).then((result) => {
let message =
`resultStatus: ${result.get('resultStatus')} memo: ${result.get('memo')} result: ${result.get('result')}`;
console.log(message);
}).catch((error: BusinessError) => {
console.log(error.message);
});
// 在你的H5容器中拦截url加载
Web({
src: 'https://xxx/xx',
controller: this.webviewController,
})
...
.onLoadIntercept((event) => {
let data = event.data;
let url = data.getRequestUrl();
if (!(url.startsWith("http") || url.startsWith("https"))) {
return false;
}
console.log(`alipay: url: ${url}`);
let result = new Pay().payInterceptorWithUrl(url, true, (result) => {
let resultCode = result.get("resultCode");
let returnUrl = result.get("returnUrl");
console.log(`resultCode: ${resultCode}, returnUrl: ${returnUrl}`);
// 如果url不为空,建议商户跳转到对应url,当然也可自行处理
this.webviewController.loadUrl(returnUrl);
});
return result;
})
Log.setupLogCallback((log) => {
hilog.info(0x00, "sdk_demo", log);
});
以下文档顶部的zip包就是demo https://alidocs.dingtalk.com/i/nodes/qnYMoO1rWxrkmoj2IOpZR6yaJ47Z3je9?iframeQuery=utm_source%3Dportal%26utm_medium%3Dportal_recent&rnd=0.2928087218087806
系统弹出唤端确认框,用户点击取消是否有回调?
没有回调,系统并未给出回调,sdk无法感知
现在跳转H5是以什么方式?
使用.pay()接口,以router为默认跳转方式
使用.payWithNav() 接口,以navigator为默认跳转方式。已支持系统路由表,其中第三个参数可不传
请根据自己的应用框架选用合适的方式。唤端的情况下,两个接口表现一致,无任何区别
是否支持auth?
不支持,如果要接入auth能力,请参考 极简版 SDK 调用方法
开放平台上目前还不能直接申请鸿蒙app,有什么办法接入吗?
可以先使用Android或者iOS的项目来申请,再在鸿蒙上进行接入
服务端是否需要改造?
目前来看不需要。附支付产品文档:https://opendocs.alipay.com/open/204/105051?pathHash=b91b9616&ref=api
遇到错误怎么排查
过滤alipay_sdk日志,查看错误信息。目前99%都是订单串传入错误,请多检查订单串,是否和android传入到支付宝sdk中的一致。
订单串用android验证之后不可以支付,再反馈问题
是否支持商家扣款 - 独立签约(免密签约)、芝麻信用等?
sdk不提供此项能力,请参考开放平台文档,生成对应唤端链接,进行唤端。附独立签约文档:https://opendocs.alipay.com/open/08ayiq?pathHash=a2d4e097
如何唤端请参考鸿蒙官方文档 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/uiability-startup-adjust-V5
如何判断支付宝是否安装
华为文档 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/canopenlink-V5
对应支付宝scheme:'alipays://'
升级sdk版本到15.8.27后,无法打开支付宝app进行支付
- 请确认entry模块的module.json5是否配置了"querySchemes": ["alipays"]
- 请确认安装的支付宝版本是否>=10.6.50
`10. 升级sdk版本到15.8.29后,无法打开支付宝app进行支付
- 请确认entry模块的module.json5是否配置了"querySchemes": ["https"]
- 不再需要配置 "querySchemes": ["alipays"],除非你需要非 sdk 场景打开支付宝