百望移动开票对外开发接口,完成发票开具等相关功能。另外移动开票为了保证接口安全性以及数据传输安全性,分别使用了应用授权认证以及数据的访问、传输采用百望特有的动态加密方式。
1.接口概述
1) 本接口用于Android第三方应用调用移动开票进行增值税发票开具、上传。
2) 接口设计为以JSON格式字符串作为参数传递。
3) 本接口适用于android4.4及以上系统。
4) 终端设备上需安装移动开票App。
2.适用范围
本接口规范仅适用移动开票。
Activity接口调用主要分为3步:
1) 创建一个Activity远程通讯的实例。
2) 初始化init(),并设置类型type。
3) 调用接口,将Json格式的字符串作为参数传递。
4) 等待接口返回值,处理相应业务。
5) 完成所有调用后关闭实例,回收资源并保证安全。
*注意:使用过程中,需开启蓝牙设备。
1.SDK依赖
sdk采用java开的,需要的运行在jdk1.6及以上,依赖一下jar包:
fastjson-1.1.33.jar
BestWonderKp.jar
2.SDK方法
表明接口开发中。
1) 获取实例方法
在com.baiwang.bwkp路径下:public BestWonderKp(Context context) {}
参数:
成功:无返回值
2) 调试模式
在com.baiwang.bwkp路径下:public BestWonderKp(Context context) {}
参数:
成功:无返回值
*注:正式发布需关闭该模式。
3) 初始化init
在com.baiwang.bwkp 路径下:public void init(int type) {}
参数:
成功:无返回值
4) 获取应用授权
在com.baiwang.bwkp路径下:public String getAppdata{}
成功:返回授权信息。
出错:抛出异常
*注:1.开票参数中不带发票抬头信息,那么自动进入扫码界面,扫码解析抬头二维码或手动输入发票抬头。
2.开票参数中带发票抬头信息,那么直接接入口令校验界面,完成开票交易。
5) 获取开票数据格式
在com.baiwang.bwkp路径下:public String getKpdata(String kpdata ) {return kpdata;}
参数:
成功:返回开票数据格式
出错:抛出异常
6) 关闭实例方法
在com.baiwang.bwkp 路径下:public boolean release() {}
成功:true
出错:抛出异常
7) 开票返回信息
在调用方activity的onActivityResult下:public boolean release() {}
bwkj_return_message返回信息为:{“code”:”0000”,”msg”:”交易成功”},具体使用请看代码样例。
成功:true
出错:抛出异常
8) 开票地址设置方法
在com.baiwang.bwkp路径下:public int setnetadress(String ip,String port,String server) {}
参数:
成功:0 表示成功 -1或其他 表示失败
出错:抛出异常
3.代码样例
清单文件配置:
<uses-permission android:name="com.cpos.invoice.permission.INVOKE" />
<meta-data android:name="BAIWANG_KP_APPID" android:value="百望云提供的实际ID"></meta-data>
<meta-data android:name="BAIWANG_KP_APPSERCRET" android:value="百望云提供的实际秘钥"></meta-data>
代码示例:
private BestWonderKp beWonderKp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
beWonderKp = new BestWonderKp(this);
beWonderKp.init(1);
}
public void start() throws Exception{
List<RemoteMxinfo> mxInfos = new ArrayList<RemoteMxinfo>();
mxInfos.add(new RemoteMxinfo("苹果", "红富士", "斤", 10.00, "1", "", 10.00, 0, 0, "", "","", "", ""));
RemoteFpinfoSimkey fpinfo = new RemoteFpinfoSimkey("", "", "", "", "","123456789", "发票抬头", "", "", "","", "1", "", mxInfos);
String jsonString = JSON.toJSONString(fpinfo);
Intent i = new Intent(BestWonderKp.actionName);
Bundle b = new Bundle();
b.putString("appdata",beWonderKp.getAppdata())
b.putString("kpdata",beWonderKp.getKpdata(jsonString));
i.putExtras(b);
startActivityForResult(i, REQUST_CODE);
}
@Override
protected void onActivityResult(int arg0, int arg1, Intent arg2) {
super.onActivityResult(arg0, arg1, arg2);
if(arg0 == REQUST_CODE){
if(arg1 == Activity.RESULT_OK){
Bundle b = arg2.getExtras();
String state = b.getString("bwkj_return_message", "");
Log.e("state", state);
}
}
}
4.数据基本格式
1) 开票交易数据格式
{
"bmb_bbh": "",
"bz": "",
"hjje": 50,
"hjse": 0,
"jshj": 50,
"jshjdx": "",
"jylsh": "1234567890123456",
"mxinfos": [{
"dj": 50,
"ggxh": "",
"hs": 0,
"je": 50,
"jldw": "",
"lslbs": "",
"se": 0,
"sl": "1",
"spbm": "",
"spmc": "",
"spsl": "",
"yhzcbs": "",
"zxbm": "",
"zzstsgl": ""
}],
"packageName": "",
"simKey_caPin": "",
"simKey_phone": "",
"simKey_sksbkl": "",
"spfDm": "",
"spfdz": "",
"spfemail": "",
"spfmc": "",
"spfphone": "",
"spfyhmc": "",
"spfyhzh": "",
"status": "",
"token": "",
"yfp_dm": "",
"yfp_hm": ""
}
2) 错误码对照表