Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

151 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BeeCloud Java SDK (Open Source)

pass license v2.3.0

简介

本项目的官方GitHub地址是 https://github.com/beecloud/beecloud-java

本SDK的是根据BeeCloud Rest API开发的Java SDK,适用于JRE 1.6及以上平台。可以作为调用BeeCloud Rest API的示例或者直接用于生产。

安装

1.从github下载带依赖的jar文件,然后导入到自己的工程依赖包中

2.若是工程采用maven进行依赖配置,可在自己工程的pom.xml文件里加入以下配置

<dependency>   
    <groupId>cn.beecloud</groupId>
    <artifactId>beecloud-java-sdk</artifactId>
    <version>2.3.0</version>
</dependency>

工程名以及版本号需要保持更新。(更新可参考本项目的pom.xml,文件最顶端)

注册

三个步骤,2分钟轻松搞定:

  1. 注册开发者:猛击这里注册成为BeeCloud开发者

  2. 注册应用:使用注册的账号登陆控制台后,点击"+创建App"创建新应用

  3. 在代码中注册:

BeeCloud.registerApp(appid, appsecret);

使用方法

具体使用请参考本目录下的demo项目

支付接口接收BCPayParameter参数对象,该对象封装了发起支付所需的各个具体参数。BCPayParameter类提供了一个4个必填的具体支付参数作为参数的构造函数:

public BCPayParameter(PAY_CHANNEL channel, Integer totalFee, String billNo, String title)

发起支付将返回BCPayResult对象,BCPayResult对象包含两种状态,正确状态和错误状态,正确状态的BCPayResult的type类型字符串为OK; 对应值为0。错误状态调用getErrMsg()方法返回错误信息。调用getErrDetail()方法返回具体错误信息,开发者可任意显示,打印,或者进行日志。

正确状态调用getCodeUrl()方法返回二维码字符串,返回code url的格式为:weixin://wxpay/bizpayurl?sr=XXXXX。 请商户调用第三方库将返回的code url生成二维码图片。 该模式链接较短,生成的二维码打印到结账小票上的识别率较高。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.WX_NATIVE, 1, billNo, title);  
param.setBillTimeout(120);

BCPayResult bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	System.out.println(bcPayResult.getCodeUrl());
} else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

正确状态调用getWxJSAPIMap()方法返回jsapi map对象。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.WX_JSAPI, 1, billNo, title);
param.setOpenId(openId);

BCPayResult bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	System.out.println(bcPayResult.getWxJSAPIMap());
} else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

正确状态调用getHtml()方法,如将html输出至页面,即可开始银联网页支付。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.UN_WEB, 1, billNo, title);
param.setReturnUrl(unReturnUrl);
param.setBillTimeout(180);

bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	out.println(bcPayResult.getHtml());
} else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

正确状态调用getHtml()方法或者getUrl()方法,getHtml()方法返回html,如将html输出至页面,即可开始支付宝网页支付。getUrl()方法返回支付宝跳转url,推荐使用html。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.ALI_WEB, 1, billNo, title);
param.setReturnUrl(aliReturnUrl);
param.setBillTimeout(120);
param.setOptional(optional);
			
bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	out.println(bcPayResult.getHtml());
	response.sendRedirect(bcPayResult.getUrl());
} else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

正确状态调用getHtml()方法或者getUrl()方法,getHtml()方法返回html,如将html输出至页面,即可开始扫描支付。getUrl()方法返回支付宝内嵌二维码地址。需使用<iframe>加载此url

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.ALI_QRCODE, 1, billNo, title);
param.setReturnUrl(aliReturnUrl);
param.setQrPayMode(QR_PAY_MODE.MODE_FRONT);

bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
    //使用html示例
	out.println(bcPayResult.getHtml());
	//使用url示例
	out.println("<html><iframe width='420' height='330' name='url' frameborder='0' src='" + bcPayResult.getUrl() + "'></iframe</html>");
} else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

正确状态调用getHtml()方法或者getUrl()方法,getHtml()方法返回html,如将html输出至页面,即可开始支付。getUrl()方法返回支付宝跳转url,推荐使用html。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.ALI_WAP, 1, billNo, title);

bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	out.println(bcPayResult.getHtml());
}
else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

正确状态调用getHtml()方法,getHtml()方法返回html,如将html输出至页面,即可开始快钱网页支付。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.KUAIQIAN_WEB, 1, billNo, title);
			
bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	out.println(bcPayResult.getHtml());
} else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

正确状态调用getHtml()方法,getHtml()方法返回html,如将html输出至页面,即可开始快钱移动网页支付。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.KUAIQIAN_WAP, 1, billNo, title);
			
bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	out.println(bcPayResult.getHtml());
} else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

正确状态调用getHtml()方法,getHtml()方法返回html,如将html输出至页面,即可开始京东网页支付。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.JD_WEB, 1, billNo, title);
param.setReturnUrl(jdReturnUrl);
			
bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	out.println(bcPayResult.getHtml());
} else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

正确状态调用getHtml()方法,getHtml()方法返回html,如将html输出至页面,即可开始京东移动网页支付。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.JD_WAP, 1, billNo, title);
param.setReturnUrl(jdReturnUrl);
			
bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	out.println(bcPayResult.getHtml());
} else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

正确状态调用getHtml()方法或者getUrl()方法,getHtml()方法返回html,如将html输出至页面,即可开始支付。getUrl()方法返回跳转url,推荐使用html。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.YEE_WEB, 1, billNo, title);
param.setReturnUrl(yeeWebReturnUrl);
param.setBillTimeout(180);

bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	out.println(bcPayResult.getHtml());
	response.sendRedirect(bcPayResult.getUrl());
}
else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

正确状态调用getUrl()方法,getUrl()方法返回跳转url,如跳转至此url页面,即可开始支付。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.YEE_WAP, 1, billNo, title);
param.setBillTimeout(180);

bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	response.sendRedirect(bcPayResult.getUrl());
}
else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

getSucessMsg()方法,getSucessMsg()方法显示支付已经成功。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.YEE_NOBANKCARD, 10, billNo, title);
param.setCardNo(cardNo);
param.setCardPwd(cardPwd);
param.setFrqid(frqid);

bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	out.println(bcPayResult.getObjectId());
	Thread.sleep(5000);
	out.println(bcPayResult.getSucessMsg());
}
else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

正确状态调用getUrl()方法,getUrl()方法返回跳转url,如跳转至此url页面,即可开始支付。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.BD_WAP, 1, billNo, title);
param.setReturnUrl(bdReturnUrl);
param.setBillTimeout(180);

bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	response.sendRedirect(bcPayResult.getUrl());
}
else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

正确状态调用getUrl()方法,getUrl()方法返回跳转url,如跳转至此url页面,即可开始支付。

BCPayParameter param = new BCPayParameter(PAY_CHANNEL.BD_WEB, 1, billNo, title);
param.setReturnUrl(bdReturnUrl);
param.setBillTimeout(180);

bcPayResult = BCPay.startBCPay(param);
if (bcPayResult.getType().ordinal() == 0) {
	response.sendRedirect(bcPayResult.getUrl());
}
else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

代码中的参数对象BCPayParameter封装字段显示如下:

key 说明
channel 渠道类型, 根据不同场景选择不同的支付方式,包含:
WX_NATIVE 微信公众号二维码支付
WX_JSAPI 微信公众号支付
ALI_WEB 支付宝网页支付
ALI_QRCODE 支付宝内嵌二维码支付
ALI_WAP 支付宝移动网页支付
UN_WEB 银联网页支付
JD_WEB 京东网页支付
JD_WAP 京东移动网页支付
YEE_WEB 易宝网页支付
YEE_WAP 易宝移动网页支付
YEE_NOBANKCARD 易宝点卡支付
KUAIQIAN_WEB 快钱网页支付
KUAIQIAN_WAP 快钱移动网页支付
BD_WEB 百度网页支付
BD_WAP 百度移动网页支付(必填)
totalFee 订单总金额, 只能为整数,单位为分,例如 1,(必填)
billNo 商户订单号, 8到32个字符内,数字和/或字母组合,确保在商户系统中唯一, 例如(201506101035040000001),(必填)
title 订单标题, 32个字节内,最长支持16个汉字,(必填)
optional 附加数据, 用户自定义的参数,将会在webhook通知中原样返回,该字段主要用于商户携带订单的自定义数据,(选填)
returnUrl 同步返回页面 , 支付渠道处理完请求后,当前页面自动跳转到商户网站里指定页面的http路径。当 channel 参数为 ALI_WEB 或 ALI_QRCODE 或 UN_WEB 或 JD_WEB 或 JD_WAP时为必填,(选填)
openId 微信公众号支付(WX_JSAPI)必填,(选填)
showUrl 商品展示地址,需以http://开头的完整路径,例如:http://www.商户网址.com/myorder,(选填)
qrPayMode 二维码类型,二维码类型含义MODE_BRIEF_FRONT: 订单码-简约前置模式, 对应 iframe 宽度不能小于 600px, 高度不能小于 300px
MODE_FRONT: 订单码-前置模式, 对应 iframe 宽度不能小于 300px, 高度不能小于 600px
MODE_MINI_FRONT: 订单码-迷你前置模式, 对应 iframe 宽度不能小于 75px, 高度不能小于 75px ,(选填)
billTimeoutValue 订单失效时间,单位秒,非零正整数,快钱不支持此参数。例如:120(选填)
cardNo 点卡卡号,每种卡的要求不一样,例如易宝支持的QQ币卡号是9位的,江苏省内部的QQ币卡号是15位,易宝不支付,当channel 参数为YEE_NOBANKCARD时必填,(选填)
cardPwd 点卡密码,简称卡密当channel 参数为YEE_NOBANKCARD时必填,(选填)
frqid 点卡类型编码:
骏网一卡通(JUNNET)
盛大卡(SNDACARD)
神州行(SZX)
征途卡(ZHENGTU)
Q币卡(QQCARD)
联通卡(UNICOM)
久游卡(JIUYOU)
易充卡(YICHONGCARD)
网易卡(NETEASE)
完美卡(WANMEI)
搜狐卡(SOHU)
电信卡(TELECOM)
纵游一卡通(ZONGYOU)
天下一卡通(TIANXIA)
天宏一卡通(TIANHONG)
32 一卡通(THIRTYTWOCARD)
当channel 参数为YEE_NOBANKCARD时必填,(选填)
return BCPayResult对象, 根据type决定返回内容

调用以下接口发起批量退款并将得到BCPayResult对象,BCPayResult对象包含两种状态,正确状态和错误状态,正确状态的BCPayResult的type类型字符串为OK, 对应值为0。错误状态调用getErrMsg()方法返回错误信息。调用getErrDetail()方法返回具体错误信息,开发者可任意显示,打印,或者进行日志。正确状态调用getUrl()方法,getUrl()方法返回跳转url,如跳转至此url页面,即可开始支付。

List<TransferData> list = new ArrayList<TransferData>();
TransferData data1 = new TransferData("transfertest11223", "13584809743", "袁某某", 1, "赏赐");
TransferData data2 = new TransferData("transfertest11224", "13584809742", "张某某", 1, "赏赐");
list.add(data1);
list.add(data2);


bcPayResult = BCPay.startTransfer(PAY_CHANNEL.ALI, billNo, "苏州比可网络科技有限公司", list);
if (bcPayResult.getType().ordinal() == 0) {
	response.sendRedirect(bcPayResult.getUrl());
}
else {
	//handle the error message as you wish!
	out.println(bcPayResult.getErrMsg());
	out.println(bcPayResult.getErrDetail());
}

代码中的各个参数含义如下:

key 说明
channel 渠道类型, 暂时只支持ALI,(必填)
batchNo 批量付款批号, 此次批量付款的唯一标示,11-32位数字字母组合,(必填)
accountName 付款方的支付宝账户名, 支付宝账户名称,例如:毛毛,(必填)
transferData 付款的详细数据 {TransferData} 的 List集合,(必填)
return BCPayResult, 根据type决定返回内容

退款接口接收BCRefundParameter参数对象,该对象封装了发起退款所需的各个具体参数。BCRefundParameter类提供了一个3个必填的具体退款参数作为参数的构造函数:

public BCRefundParameter(String billNo, String refundNo, Integer refundFee)

发起退款将得到BCPayResult对象。BCPayResult对象包含两种状态,正确状态和错误状态,正确状态的BCPayResult的type类型字符串为OK, 对应值为0。错误状态调用getErrMsg()方法返回错误信息。调用getErrDetail()方法返回具体错误信息,开发者可任意显示,打印,或者进行日志。 如果是ALI退款,则需要调用getUrl()方法并跳转至该url,输入支付密码完成退款。

BCRefundParameter param = new BCRefundParameter(billNo, refundNo, 1);
param.setOptional(optional);

BCPayResult result = BCPay.startBCRefund(param);
if (result.getType().ordinal() == 0) {
	if (result.getUrl() != null) {
		//阿里退款,跳转至退款url并输入支付密码完成退款
		response.sendRedirect(result.getUrl());
	} else {
		//其他渠道退款,返回"退款成功!" 
		out.println(result.getSucessMsg());
	}
} else {
	//handle the error message as you wish!
	out.println(result.getErrMsg());
	out.println(result.getErrDetail());
}

代码中的参数对象BCRefundParameter封装字段显示如下:

key 说明
channel 渠道类型, 根据不同场景选择不同的支付方式,包含:
WX 微信
ALI 支付宝
UN 银联
JD 京东
KUAIQIAN 快钱
YEE 易宝
BD 百度,(选填,可为NULL)
refundNo 商户退款单号 , 格式为:退款日期(8位) + 流水号(3~24 位)。不可重复,且退款日期必须是当天日期。流水号可以接受数字或英文字符,建议使用数字,但不可接受“000”,例如:201506101035040000001 (必填)
billNo 商户订单号, 32个字符内,数字和/或字母组合,确保在商户系统中唯一,(必填)
refundFee 退款金额,只能为整数,单位为分,例如1,(必填)
optional 附加数据 用户自定义的参数,将会在webhook通知中原样返回,该字段主要用于商户携带订单的自定义数据,例如{"key1":"value1","key2":"value2",...}, (选填)
needApproval 标识该笔是预退款还是直接退款,true为预退款,false或者 null为直接退款,(选填)
return BCPayResult, 根据type决定返回内容

订单查询接口接收BCQueryParameter对象,该对象提供了一个无参的构造函数。

BCQueryParameter param = new BCQueryParameter();

发起订单查询后返回BCQueryResult对象,BCQueryResult对象包含两种状态,正确状态和错误状态,正确状态的BCQueryResult的type类型字符串为OK, 对应值为0。错误状态调用getErrMsg()方法返回错误信息。调用getErrDetail()方法返回具体错误信息,开发者可任意显示,打印,或者进行日志。

正确状态调用bcQueryResult.getBcOrders()方法返回订单(BCOrderBean)的list集合。调用者可任意遍历,显示这个订单的list对象。

BCQueryParameter param = new BCQueryParameter();
param.setChannel(PAY_CHANNEL.ALI);

bcQueryResult = BCPay.startQueryBill(param);
if (bcQueryResult.getType().ordinal() == 0) {
    //handle the order list as you wish.
	pageContext.setAttribute("bills", bcQueryResult.getBcOrders());
} else {
	out.println(bcQueryResult.getErrMsg());
	out.println(bcQueryResult.getErrDetail());
}

代码中的参数对象BCQueryParameter封装字段含义如下:

key 说明
channel 渠道类型, 根据不同场景选择不同的支付方式,包含:
WX
WX_APP 微信手机APP支付
WX_NATIVE 微信公众号二维码支付
WX_JSAPI 微信公众号支付
ALI
ALI_APP 支付宝APP支付
ALI_WEB 支付宝网页支付
ALI_QRCODE
ALI_WAP 支付宝移动网页支付 支付宝内嵌二维码支付
UN
UN_APP 银联APP支付
UN_WEB 银联网页支付
KUAIQIAN
KUAIQIAN_WEB 快钱网页支付
KUAIQIAN_WAP 快钱移动网页支付
YEE
YEE_WEB 易宝网页支付
YEE_WAP 易宝移动网页支付
YEE_NOBANKCARD 易宝点卡支付
JD
JD_WEB 京东网页支付
JD_WAP 京东移动网页支付
PAYPAL
PAYPAL_SANDBOX
PAYPAL_LIVE
BD
BD_WEB 百度网页支付
BD_APP 百度APP支付
BD_WAP 百度移动网页支付,(选填)
billNo 商户订单号,String类型,(选填)
startTime 起始时间, Date类型,(选填)
endTime 结束时间, Date类型, (选填)
skip 查询起始位置 默认为0。设置为10,表示忽略满足条件的前10条数据, (选填)
limit 查询的条数, 默认为10,最大为50。设置为10,表示只查询满足条件的10条数据,(选填)
return BCQueryResult, 根据type决定返回内容

退款查询接口接收BCRefundQueryParameter对象,该对象提供了一个无参的构造函数。

BCRefundQueryParameter param = new BCRefundQueryParameter();

发起退款查询将得到BCQueryResult对象,BCQueryResult对象包含两种状态,正确状态和错误状态,正确状态的BCQueryResult的type类型字符串为OK, 对应值为0。错误状态调用getErrMsg()方法返回错误信息。调用getErrDetail()方法返回具体错误信息,开发者可任意显示,打印,或者进行日志。

正确状态调用bcQueryResult.getBcRefundList()方法返回退款记录(BCRefundBean)的list集合。调用者可任意遍历,显示这个退款记录的list对象。

BCRefundQueryParameter param = new BCRefundQueryParameter();
param.setChannel(PAY_CHANNEL.ALI);

bcQueryResult = BCPay.startQueryRefund(param);
if (bcQueryResult.getType().ordinal() == 0) {
	pageContext.setAttribute("refundList", bcQueryResult.getBcRefundList());
} else {
	out.println(bcQueryResult.getErrMsg());
	out.println(bcQueryResult.getErrDetail());
}

代码中的参数对象BCRefundQueryParameter封装字段含义如下:

key 说明
channel 渠道类型, 根据不同场景选择不同的支付方式,包含:
WX
WX_APP 微信手机APP支付
WX_NATIVE 微信公众号二维码支付
WX_JSAPI 微信公众号支付
ALI
ALI_APP 支付宝APP支付
ALI_WEB 支付宝网页支付
ALI_QRCODE
ALI_WAP 支付宝移动网页支付 支付宝内嵌二维码支付
UN
UN_APP 银联APP支付
UN_WEB 银联网页支付
KUAIQIAN
KUAIQIAN_WEB 快钱网页支付
KUAIQIAN_WAP 快钱移动网页支付
YEE
YEE_WEB 易宝网页支付
YEE_WAP 易宝移动网页支付
JD
JD_WEB 京东网页支付
JD_WAP
BD
BD_WEB 百度网页支付
BD_APP 百度APP支付
BD_WAP 京东移动网页支付,(选填)
billNo 商户订单号, 32个字符内,数字和/或字母组合,确保在商户系统中唯一, (选填)
refundNo 商户退款单号, 格式为:退款日期(8位) + 流水号(3~24 位)。不可重复,且退款日期必须是当天日期。流水号可以接受数字或英文字符,建议使用数字,但不可接受“000” ,(选填)
startTime 起始时间, Date类型,(选填)
endTime 结束时间, Date类型, (选填)
skip 查询起始位置 默认为0。设置为10,表示忽略满足条件的前10条数据, (选填)
limit 查询的条数, 默认为10,最大为50。设置为10,表示只查询满足条件的10条数据, (选填)
return BCQueryResult, 根据type决定返回内容

调用以下接口发起退款状态查询并将得到BCQueryStatusResult对象,BCQueryStatusResult对象包含两种状态,正确状态和错误状态,正确状态的BCQueryStatusResult的type类型字符串为OK, 对应值为0。错误状态调用getErrMsg()方法返回错误信息。调用getErrDetail()方法返回具体错误信息,开发者可任意显示,打印,或者进行日志。调用参数中,channel参数包含以下取值: WX、YEE、KUAIQIAN、BD。

正确状态调用getRefundStatus()方法返回退款状态(Success, Processing, Fail ...)。调用者可任意处理这个值。

BCQueryStatusResult result = BCPay.startRefundUpdate(PAY_CHANNEL.YEE, refund_no);
if (result.getType().ordinal() == 0 ) {
	out.println(result.getRefundStatus());
} else {
	out.println(result.getErrMsg());
	out.println(result.getErrDetail());
}

代码中的各个参数含义如下:

key 说明
refundNo 商户退款单号, 格式为:退款日期(8位) + 流水号(3~24 位)。不可重复,且退款日期必须是退款发起当日日期。流水号可以接受数字或英文字符,建议使用数字,但不可接受“000”。,(必填)
channel 渠道类型, 包含WX、YEE、KUAIQIAN和BD(必填)
return BCQueryStatusResult, 根据type决定返回内容

调用以下接口发起支付订单查询(指定ID)并将得到BCQueryResult对象,BCQueryResult对象包含两种状态,正确状态和错误状态,正确状态的BCQueryResult的type类型字符串为OK, 对应值为0。错误状态调用getErrMsg()方法返回错误信息。调用getErrDetail()方法返回具体错误信息,开发者可任意显示,打印,或者进行日志。

正确状态调用getOrder()方法返回该笔订单对象。

BCQueryResult result = BCPay.startQueryBillById(id);
	if (result.getType().ordinal() == 0) {
		pageContext.setAttribute("bill", result.getOrder());
	}else {
		out.println(result.getErrMsg());
		out.println(result.getErrDetail());
	}

代码中的各个参数含义如下:

key 说明
id 待查询订单记录的唯一标识符,(必填)
return BCQueryResult, 根据type决定返回内容

调用以下接口发起支付订单查询(指定ID)并将得到BCQueryResult对象,BCQueryResult对象包含两种状态,正确状态和错误状态,正确状态的BCQueryResult的type类型字符串为OK, 对应值为0。错误状态调用getErrMsg()方法返回错误信息。调用getErrDetail()方法返回具体错误信息,开发者可任意显示,打印,或者进行日志。

正确状态调用getRefund()方法返回该笔退款记录对象。

BCQueryResult result = BCPay.startQueryRefundById(id);
	if (result.getType().ordinal() == 0) {
		pageContext.setAttribute("refund", result.getRefund());
	}else {
		out.println(result.getErrMsg());
		out.println(result.getErrDetail());
	}

代码中的各个参数含义如下:

key 说明
id 待查询订单记录的唯一标识符,(必填)
return BCQueryResult, 根据type决定返回内容

Demo

项目文件夹demo为我们的样例项目,详细展示如何使用java sdk.
•关于支付宝的return_url
请参考demo中的 aliReturnUrl.jsp

•关于银联的return_url
请参考demo中的 unReturnUrl.jsp

•关于京东PC网页的return_url
请参考demo中的 jdWebReturnUrl.jsp

•关于京东移动网页的return_url
请参考demo中的 jdWapReturnUrl.jsp

•关于快钱的return_url
请参考demo中的 kqReturnUrl.jsp

•关于易宝PC网页的return_url
请参考demo中的 yeeWebReturnUrl.jsp

•关于易宝移动网页的return_url
请参考demo中的 yeeWapReturnUrl.jsp

•关于百度钱包的return_url
请参考demo中的 bdReturnUrl.jsp

•关于weekhook的接收
请参考demo中的 notifyUrl.jsp 文档请阅读 webhook

测试

TODO

常见问题

  • 根据app_id找不到对应的APP/keyspace或者app_sign不正确,或者timestamp不是当前UTC,可能的原因:系统时间不准确 app_id和secret填写不正确,请以此排查如下:
    1.appid和appSecret填写是否一致
    2.校准系统时间
  • 支付宝吊起支付返回调试错误,请回到请求来源地,重新发起请求。错误代码ILLEGAL_PARTNER,可能的原因:使用了测试账号[email protected]的支付宝支付参数。请使用自己申请的支付账号。
  • SDK jar包导入项目时找不到依赖包或者报NoSuchMethodException异常等问题,可能的原因:相同jar包依赖不同导致的冲突,相同jar包版本不同导致的冲突,解决方法如下:
    1.使用Maven配置依赖引入sdk, 删掉导致冲突的SDK的依赖包。
    2.若不使用Maven配置依赖,分开导入无依赖的sdk包和sdk依赖的包(可从Release部分下载),删除导致冲突的sdk依赖包。
    3.手动加入错误提示找不到的依赖包。

代码贡献

我们非常欢迎大家来贡献代码,我们会向贡献者致以最诚挚的敬意。

一般可以通过在Github上提交Pull Request来贡献代码。

Pull Request要求

•代码规范

•代码格式化

•必须添加测试! - 如果没有测试(单元测试、集成测试都可以),那么提交的补丁是不会通过的。

•记得更新文档 - 保证 README.md 以及其他相关文档及时更新,和代码的变更保持一致性。

•创建feature分支 - 最好不要从你的master分支提交 pull request。

•一个feature提交一个pull请求 - 如果你的代码变更了多个操作,那就提交多个pull请求吧。

•清晰的commit历史 - 保证你的pull请求的每次commit操作都是有意义的。如果你开发中需要执行多次的即时commit操作,那么请把它们放到一起再提交pull请求。

联系我们

•如果有什么问题,可以到 321545822 BeeCloud开发者大联盟QQ群提问

•更详细的文档,见源代码的注释以及官方文档

•如果发现了bug,欢迎提交issue

•如果有新的需求,欢x迎提交issue

代码许可

The MIT License (MIT).

About

BeeCloud Java SDK (Open Source)

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages