1. 控件的下载和绑定
手机POS控件需要预先下载,商户的App启动时判断手机里是否存在包名为 com.unionpay.mobileposservice的控件,如不存在,则发起一次HTTP POST网络请求,手机POS后台根据手机型号返回手机POS控件APK的下载地址,商户App获取下载地址后自行下载并安装。
测试环境地址:http://180.169.111.154/mobilepos/managementService/queryPos
生产环境地址:https://mobilepos.95516.com/mobilepos/managementService/queryPos
示例
//组装JSON请求体
JSONObject json = new JSONObject();
json.put("deviceModel", android.os.Build.MODEL);
json.put("deviceType", "01");
json.put("deviceOs", "android");
json.put("osVersion", android.os.Build.VERSION.SDK_INT);
//网络请求
OkHttpUtil.getInstance().doJsonRequest(Constant.APP_UPDATE_API, json.toJSONString(), callback);
成功下载安装了手机POS控件以后,商户App获取控件实例对象,用该实例绑定控件。
示例
// 1. 获取对象实例
UPPosAddon mUPAddon = UPPosAddon.getInstance(this);
// 2. 绑定控件
mUPAddon.bind(new UPPosConnectionListener() {
@Override
public void onConnected() {
Log.i(TAG, "控件Service connected.");
// 3. 绑定控件成功后,初始化控件
mUPPosAddon.init(new UPPosAddon.IUPCallback() {
@Override
public void onProgress(String progress) {}
@Override
public void onSuccess(Bundle result) {}
@Override
public void onError(String errorCode, String result) {}
});
}
@Override
public void onDisconnected() {
Log.i(TAG, "控件Service disconnected.");
}
};
);
// 4. 调用控件API
int ret = mUPAddon.xxxMethod(bundle, callback);
// 5. 无需控件时,解绑服务
mUPAddon.unbind();
注意:部分华为手机可能存在绑定控件失败的情况,请检查手机POS控件在华为手机系统里的自启动设置,
方法是”手机管家"->"应用启动管理"->"银联安全服务",设置成如下图所示,
2. 手机的激活和验证
App每次绑定控件后必须调用接口:初始化控件(API 3.1.1)。
控件负责在第一次使用POS时激活手机,以及每次使用POS时验证手机。
App每次绑定控件后必须初始化控件(API 3.1.1)。
App若从未调用初始化接口,第一次调用时,POS控件会激活设备。
App每次调用初始化接口,手机POS控件会验证设备,并检查控件的版本。
示例
// 控件初始化
int ret = mUPPosAddon.init(new UPPosAddon.IUPCallback() {
@Override
public void onProgress(String progress) {
// 在这里处理初始化的中间过程
}
@Override
public void onSuccess(Bundle result) {
// 在这里处理初始化成功后的返回结果
}
@Override
public void onError(String errorCode) {
// 在这里处理初始化失败后的返回结果
}
});
3. 查询当前用户信息
App调用接口:查询用户(API 3.1.6)可获得当前用户信息,包括该用户是否已经开通了小微商户,是否经绑定主设备等。
开发者需要提供商户App的用户名userId给手机POS控件,作为手机POS对商户App用户的唯一标识。
App绑定控件后开始交易前可以先查询当前用户的账号状态(API 3.1.6)。
如用户已开通商户已绑定当前设备,可以开始交易(API 3.2)。
如用户从未注册,先开通商户(API 3.3.1)。
如用户为店主已开通商户未绑定当前设备,先绑定主设备(API 3.1.3)。
如用户为店员且已绑定子设备,等同已注册,可以开始交易。
如用户为店员但未绑定子设备,先绑定子设备(API 3.1.5)。
4. 商户开通/入网/进件
示例
// 以API 3.3.1商户开通为例
Bundle bundle = new Bundle();
bundle.putString("userId", "jin"); // 用户名
bundle.putString("expandcode", "48690000"); // 拓展机构代码
bundle.putString("phoneNo", "15800123456"); // 手机号
bundle.putString("mchntType", "0203"); // 商户类型
bundle.putString("merName", "星巴克"); // 商户名称
bundle.putString("certifTp", "01"); // 证件类型
bundle.putString("certifId", "310104199007032811"); // 证件号
bundle.putString("customerNm", "小明"); // 店主姓名
bundle.putString("accNo", "622512345678901218"); // 银行卡号
bundle.putString("accType", "1"); // 账号类型
bundle.putString("cityCd", "1900"); // 城市代码
int result = mUPPosAddon.merchantRegister(bundle, new IUPCallback() {
@Override
public void onProgress(String progress) {
}
@Override
public void onSuccess(Bundle result) {
// 商户开通成功,获取商户编号
String merId = result.get("merId")
}
@Override
public void onError(String errorCode, String progress) {
}
});
5. 二维码收款和NFC收款
商户App不用开发收单界面,手机POS控件已经提供以下三种场景的收单界面,分别是NFC收款,二维码主扫和被扫收款。
6. 店主店员管理
使用手机POS提供的店主店员管理方案建议的开通流程如下:
1) 店主填写店员信息(App用户名,店员姓名,手机号)开始“添加店员”
2) 店员手机收到短信验证码,将短信告知店主
3) 店主填写短信验证码,并通过验证,调用接口添加店员 (API 3.3.16)
4) 店员在手机上进行“子设备绑定” (API 3.1.5)
请在“文档下载”板块下载“中国银联手机POS产品控件接口指南”了解更多详情。