目录

1. 功能说明

钱包提供的Huawei Pay线上支付有三种对接方式,分别是:

1)APP支付:商户通过在移动端应用APP集成SDK接口形式接入;

2)手机网页支付(WAP支付):手机WAP支付产品是提供给商户的移动终端客户端或网页用来支付的产品,采用手机网页(包括WAP、WEB手机网页网)方式实现无卡支付的产品;

3)H5支付:商户H5接口通过JS形式接入。

主要提供接口包含查询Huawei Pay状态和调起支付两个接口。

2. 使用场景介绍

Huawei Pay线上支付是手机端的在线支付方式,可以根据需要采用对应的支付方式接入,之后根据目录选择需要的接入方式。

商户使用Huawei Pay线上支付可以和银联对接生成订单,商户把订单信息传给华为钱包,由钱包调起银联插件完成支付,SDK接口和JS接口会直接返回结果给调用方,而WAP调用方式是银联服务器将支付结果通知第三方服务器,第三方WAP页面到第三方服务器查询支付结果。

3. 开发指南

3.1系统对接流程图

                                             

3.2 APP支付

3.2.1接口定义

查询钱包状态,返回0表示支持Huawei Pay线上支付

原型

Int   getStatus(String  event , IHwResultCallBack  callback)

功能

用于查询是否支持Huawei Pay线上支付

返回值

0 为成功,其他值为失败(用于判断是否正确执行了该操作)

参考调用

HwOpenSdkTask.getStatus(String  event, IHwResultCallBack  callback)

 

拉起Huawei Pay线上支付

原型

startHuawei Pay(Map <String,Object>params,   IHwResultCallBack  callback)

功能

用于拉起Huawei Pay线上支付

返回值

0 为成功,其他值为失败

参考调用

HwOpenSdkTask.   startHuawei Pay (Map <String,Object>params,IHwResultCallBack  callback)

 

3.2.2入参说明

函数getStatus入参

名称

类型

描述

可选

event

String

“ONLINEPAY”

M

callback

IHwResultCallBack

Callback中提供onResult回调方法,里面有错误码和错误码描述等信息

M

 

函数startHuawei Pay入参

名称

类型

描述

可选

params

Map <String,Object>

钱包服务器定义的payInfo,根据文档中的参数通过key,value的形式传入map中

M

callback

IHwResultCallBack

Callback中提供onResult回调方法,里面有错误码和错误码描述等信息

M


Map <String,Object>params对象说明(入参需要使用AES方式加密)

名称

类型

描述

可选

orderInfo

String

银联订单号

M

seType

String

银联生产环境server mode(“04”)

M

mode

String

银联支付方式 (“00”)

M

isStartUnionPay

String

是否使用StartUnionPay接口拉起Huawei Pay,用来区分华为IAP收银台调用 (“true”)

M

 

3.2.3 IHwResultCallBack回调说明

int resultCode说明

错误码

含义

说明

getStatus

startHuawei Pay

0

成功

获取状态成功或者支付成功

使用

使用

2

不支持Huawei Pay

管理台机型未配置

使用

不使用

银联插件未安装

使用

不使用

3

条件不满足

具体错误见下表中errorCode

使用errorCode(10001~10004)

使用errorCode

(10004,10006)

4

支付不成功

具体错误见下表中errorCode(10007~10008)

不使用

使用

5

查询支付结果失败

具体错误透传。Bundle中通过result_server_code(int)获取接口错误码,result_server_desc(String) 获取接口错误描述

不使用

使用

999

其他未知错误


使用

使用

 

Bundle data说明:

Bundle 获取错误信息的key:resultStr 。取出来的是一个json具体如:{"errors":
    [
    {"errorDesc":"not set password","errorCode":"10002"},
    {"errorDesc":"no available card","errorCode":"10003"}
    ]
}


下表是对errorCode的表述:

错误码(int)

含义

说明

10001

用户未登录

RESULT_ERROR_CODE_NOT_LOGIN

10002

未设置支付密码

RESULT_ERROR_CODE_NO_PAYPASS

10003

无可用银行卡

RESULT_ERROR_CODE_NO_CARD

10004

钱包未安装或者版本不正确

RESULT_ERROR_CODE_BIND_SERVICE_FAIL

10006

payInfo参数为空

RESULT_ERROR_CODE_PARAMS_NULL

10007

支付取消

RESULT_ERROR_CODE_PAY_CANCEL

10008

支付失败

RESULT_ERROR_CODE_PAY_FAIL

 

resultCode除了返回0是支付成功,其他的返回均表示失败,支付不成功和查询支付失败都会返回具体的原因,从bundle中的errorDesc和errorCode中获取。

3.2.4使用方法

请将下面的jar复制并放入自己的工程中,需要注意Sdk对外的接口都是异步,回调都是通过CallBack来实现,jar包见本文结尾附件。


getStatus调用代码如下:

HwOpenSdkTask task = new HwOpenSdkTask(this);
task.getStatus(“ONLINEPAY”, new IHwResultCallBack()
{
    @Override
    public void onResult(int resultCode, Bundle data)
    {
        Log.e(TAG, "resultCode:" + resultCode);

    }
});

 

startHuawei Pay调用代码如下:

HwOpenSdkTask task = new HwOpenSdkTask(this);
task.startHuawei Pay(payInfo, new IHwResultCallBack()
{
    @Override
    public void onResult(int resultCode, Bundle data)
    {
        Log.e(TAG, "resultCode:" + resultCode);
    }
});

3.3手机网页支付(WAP支付)

3.3.1接口定义

第三方Wap页面通过Schema调用钱包APP,将订单信息传给钱包APP,携带订单号、合作伙伴ID、签名信息。

Schema定义如下:

financeclient://com.huawei.wallet/thirdpayservice?action="thirdpayservice"&params={"PartnerID":"xxxx";"TN":"xxxx";"SignData":"xxxx"}

3.3.2入参说明

名称

类型

描述

可选

PartnerID

String

合作伙伴ID

M

TN

String

订单号

M

SignData

String

签名信息

M

 

第三方的传入参数的规则为:

签名算法:SHA256WithRSA

SignData签名值生成方法:params内容里除了SignData外其他字段,每一个Key值按ASCII码的增序排序,若遇到相同首字母,则看第二个字母,以此类推。排序完成之后,再把所有数组值以“&”字符连接起来,如: PartnerID=123&TN=234,使用商户RSA私钥将转换后的明文生成签名信息后,将byte[]签名结果按base64编码后设置为SignData的值。

schema中的params值:json串再按照Uri.encode进行编码后赋值为params值。

3.3.3使用方法

第三方WAP通过钱包APP验证服务器的响应信息合法后,调用银联控件进行支付,银联服务器将支付结果通知第三方服务器,第三方WAP页面到第三方服务器查询支付结果。

 

注意:

1)第三方WAP页面发送请求到钱包APP后,钱包APP不会返回结果给第三方WAP页面,如果钱包APP在发送请求给银联之前有异常,比如未打开NFC等,钱包直接给出对应的提示;

2)成功支付的前提条件:钱包账户登录成功、打开NFC开关(仅支持Huawei Pay的手机需要,不支持Huawei Pay手机不需要)、已设置钱包支付密码、有可用银行卡、已安装银联插件等。

3.4 H5支付

3.4.1接口定义

查询钱包状态,返回true表示支持Huawei Pay线上支付:

原型

isNfcEnable()

功能

用于查询是否支持Huawei Pay支付

返回值

true为支持,false为不支持

参考调用

boolean  isSupport = hiWalletIsNfcEnableAPI.   isNfcEnable();

 

拉起Huawei Pay线上支付:

原型

startPay(String tn, String url)

功能

用于拉起Huawei Pay线上支付

返回值

无

参考调用

hiWalletCheckStatusPayAPI.startPay(String   tn, String url)

 

3.4.2入参说明

函数isNfcEnable没有入参,直接调用会返回结果,true表示支持,false表示不支持。

函数startPay入参说明如下:

名称

类型

描述

可选

tn

String

银联订单号

M

url

String

成功后跳转的url

M

 

3.4.3使用方法

isNfcEnable调用代码如下:

hiWalletIsNfcEnableAPI. isNfcEnable();

 

startPay调用代码如下:

hiWalletCheckStatusPayAPI.startPay(String tn, String url);

 

3.5 API说明

3.5.1定义接口

功能概述

接口原型

功能描述

获取状态

public void   getStatus(final String event, final IHwResultCallBack iHwResultCallBack)

获取Huawei Pay支付状态

开启支付

public void   startHuawei Pay(final Map<String, Object> params, final   IHwResultCallBack iHwResultCallBack)

启动Huawei Pay线上支付

 

3.5.2接口描述

通过getStatus可以获取Huawei Pay支付状态,通过startHuawei Pay可以启动Huawei Pay线上支付。这两个接口可以帮助第三方通过API的方式接入钱包线上支付。

 

1. getStatus接口

原型

Int   getStatus(String  event , IHwResultCallBack  callback)

功能

用于查询是否支持Huawei Pay支付

参数

参数类型、名称

描述

可选

String  event

 ONLINEPAY代表获取Huawei Pay支付状态

M

IHwResultCallBack  callback

Callback中提供onResult回调方法,里面有错误码和错误码描述等信息

M

返回值

0 为成功,其他值为失败(用于判断是否正确执行了该操作)

参考调用

HwOpenSdkTask.getStatus(String  event, IHwResultCallBack  callback)

 

IHwResultCallBack中回调结果resultCode:

错误码

含义

说明

0

成功

获取状态成功或者支付成功

2

不支持Huawei Pay

管理台机型未配置或者未安装钱包app等

3

条件不满足

具体错误下面的错误码参考,使用errorCode(10001~10004)

999

其他未知错误


 

2. startHuawei Pay接口

原型

startHuawei Pay(Map <String,Object>params,   IHwResultCallBack  callback)

功能

用于拉起Huawei Pay线上支付

参数

参数类型、名称

描述

可选

Map <String,Object>params

钱包服务器定义的payInfo,根据文档中的参数通过key,value 的形式传入map中

M

IHwResultCallBack  callback

Callback中提供onResult回调方法,里面有错误码和错误码描述等信息

M

返回值

0 为成功,其他值为失败

参考调用

HwOpenSdkTask.   startHuawei Pay (Map <String,Object>params, IHwResultCallBack  callback)

 

IHwResultCallBack中回调结果resultCode:

错误码

含义

说明

0

成功

获取状态成功或者支付成功

3

条件不满足

具体错误见下表中errorCode(10004,10006)

4

支付不成功

具体错误见下表中errorCode(10007~10008)

5

获取订单失败

具体错误透传。Bundle中通过result_server_code(int)获取接口错误码,

result_server_desc(String) 获取接口错误描述

6

查询支付结果失败

具体错误透传。Bundle中通过result_server_code(int)获取接口错误码,

result_server_desc(String) 获取接口错误描述

999

其他未知错误


 

3.6 错误码参考

Bundle data说明:

Bundle 获取错误信息的key:resultStr 。取出来的是一个json具体如:{"errors":
    [
    {"errorDesc":"not set password","errorCode":"10002"},
    {"errorDesc":"no available card","errorCode":"10003"}
    ]
}

下表是对errorCode的表述,具体的errorDesc会根据钱包云测返回的进行详细描述,到时请参考具体原因,如下含义是大致的问题原因:

错误码(int)

含义

说明

10001

用户未登录

RESULT_ERROR_CODE_NOT_LOGIN

10002

没有设置支付密码

RESULT_ERROR_CODE_NO_PAYPASS

10003

没有可用银行卡

RESULT_ERROR_CODE_NO_CARD

10004

钱包未安装或者版本不正确

RESULT_ERROR_CODE_BIND_SERVICE_FAIL

10006

payInfo参数为空

RESULT_ERROR_CODE_PARAMS_NULL

10007

支付取消

RESULT_ERROR_CODE_PAY_CANCEL

10008

支付失败

RESULT_ERROR_CODE_PAY_FAIL

20001

华为云测对商户验签失败

ERRORDESC_OPEN_CREATE_PAY_REQUEST_FAIL

20002

华为端测验签失败

ERRORCODE_OPEN_CREATE_PAY_CHECK_FAIL

20003

没有可用支付方式

ERRORCODE_OPEN_HAS_NO_PAY_METHOE

20004

支付方式被主动取消

ERRORCODE_OPEN_PAY_CANCEL_BY_USER

 

钱包线上支付示例代码

点击下载:HuaweiPayTest.zip

Huawei Pay logo(含展示要求)

点击下载:Huawei Pay logo.zip