Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
youka-api
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
java-youka-wallet
youka-api
Commits
553d6227
Commit
553d6227
authored
Jun 29, 2018
by
tang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
垃圾通道来回修改,推广方式更改
parent
00b763b3
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
306 additions
and
59 deletions
+306
-59
ComCode.java
src/main/java/com/thinkgem/jeesite/common/constant/ComCode.java
+4
-0
PayApiController.java
src/main/java/com/thinkgem/jeesite/modules/pay/api/PayApiController.java
+8
-3
JuhezhongDto.java
src/main/java/com/thinkgem/jeesite/modules/pay/juhezhong/dto/JuhezhongDto.java
+14
-0
JuHeZhongPayService.java
src/main/java/com/thinkgem/jeesite/modules/pay/juhezhong/service/JuHeZhongPayService.java
+32
-0
DateUtil.java
src/main/java/com/thinkgem/jeesite/modules/pay/juhezhong/utils/DateUtil.java
+79
-23
PayApiService.java
src/main/java/com/thinkgem/jeesite/modules/pay/service/PayApiService.java
+92
-19
TimingService.java
src/main/java/com/thinkgem/jeesite/modules/pay/service/TimingService.java
+5
-0
PayApiDao.xml
src/main/resources/mappings/modules/pay/PayApiDao.xml
+3
-0
regist.js
src/main/webapp/static/share/js/regist.js
+15
-14
spread.html
src/main/webapp/static/share/spread.html
+54
-0
No files found.
src/main/java/com/thinkgem/jeesite/common/constant/ComCode.java
View file @
553d6227
...
...
@@ -51,6 +51,7 @@ public static final String QUICK_WEB_PAY = "/quick/web/pay";
public
static
final
String
NO_INTEGRAL_QUICK_PAY_URL
=
"/quick/pay"
;
// 无积分快捷支付
public
static
final
String
NO_INTEGRAL_ORDER_QUERY_URL
=
"/order/query"
;
// 查询订单
public
static
final
String
NOTIFY_CALLBACK_URL
=
"http://youkapay.com/youka-api/api/pay/notifyQuickPay"
;
public
static
final
String
NO_INTEGRAL_QUICK_WAP_PAY_URL
=
"/quick/pay/v2"
;
// 无积分快捷支付
public
static
final
String
EXTRA_RATE
=
"200"
;
// 附加手续费(单位:分)
...
...
@@ -114,6 +115,7 @@ public static final String QUICK_WEB_PAY = "/quick/web/pay";
public
static
final
long
hours
=
24
;
public
static
final
SimpleDateFormat
YYYYMMDD_HHMMSS
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
//HH:mm:ss 24小时制
public
static
final
SimpleDateFormat
YYYYMMDDHHMM
=
new
SimpleDateFormat
(
"yyyyMMddhhmm"
);
public
static
final
SimpleDateFormat
HHMMSS
=
new
SimpleDateFormat
(
"HH:mm:ss"
);
/**
* 系统公共
*/
...
...
@@ -167,6 +169,8 @@ public static final String QUICK_WEB_PAY = "/quick/web/pay";
*/
public
static
final
String
STATUS_CODE_6001
=
"6001"
;
public
static
final
String
STATUS_CODE_6001_DESC
=
"订单号不存在"
;
public
static
final
String
STATUS_CODE_6002
=
"6002"
;
public
static
final
String
STATUS_CODE_6002_DESC
=
"交易时间为09:00:00-22:00:00"
;
/**
...
...
src/main/java/com/thinkgem/jeesite/modules/pay/api/PayApiController.java
View file @
553d6227
...
...
@@ -8,6 +8,7 @@ import com.thinkgem.jeesite.modules.commonError.MyException;
import
com.thinkgem.jeesite.modules.pay.entity.BalanceEntity
;
import
com.thinkgem.jeesite.modules.pay.entity.OrderEntity
;
import
com.thinkgem.jeesite.modules.pay.juhezhong.dto.PayBackDto
;
import
com.thinkgem.jeesite.modules.pay.juhezhong.utils.DateUtil
;
import
com.thinkgem.jeesite.modules.pay.service.PayApiService
;
import
com.thinkgem.jeesite.modules.sys.entity.Dict
;
import
com.thinkgem.jeesite.modules.sys.entity.DictPayChannel
;
...
...
@@ -63,11 +64,15 @@ public class PayApiController {
public
Response
quickPay
(
JuHeZhongPayRequest
request
)
{
Response
resp
=
new
Response
();
try
{
//非交易时间直接返回
if
(!
DateUtil
.
checkTimeIsDuration
())
{
throw
new
MyException
(
ComCode
.
STATUS_CODE_6002_DESC
);
}
PayBackDto
payBackDto
=
payService
.
quickPay
(
request
);
if
((
payBackDto
.
getUrl
()
!=
null
&&
!
""
.
equals
(
payBackDto
.
getUrl
()))
||
"0"
.
equals
(
payBackDto
.
getIsUrl
()))
{
resp
.
setStatus
(
ComCode
.
STATUS_CODE_2000
);
resp
.
setMessage
(
ComCode
.
STATUS_CODE_2000_DESC
);
logger
.
debug
(
"快捷支付返回URL: {}"
,
payBackDto
.
getUrl
());
resp
.
setData
(
payBackDto
);
}
else
{
resp
.
setStatus
(
ComCode
.
STATUS_CODE_9998
);
...
...
@@ -388,7 +393,7 @@ public class PayApiController {
String
orderId
=
request
.
getParameter
(
"dsorderid"
);
String
code
=
request
.
getParameter
(
"respCode"
);
if
(
"00"
.
equals
(
code
))
{
logger
.
debug
(
"orderId: {}"
,
orderId
);
logger
.
debug
(
"orderId: {}"
,
orderId
);
OrderEntity
orderEntity
=
new
OrderEntity
();
orderEntity
.
setPayCode
(
orderId
);
...
...
@@ -577,7 +582,7 @@ public class PayApiController {
value
[
0
]
=
ov
.
toString
();
}
for
(
int
k
=
0
;
k
<
value
.
length
;
k
++)
{
logger
.
debug
(
"参数名: {} , 参数值: {}"
,
ok
,
value
[
k
]);
logger
.
debug
(
"参数名: {} , 参数值: {}"
,
ok
,
value
[
k
]);
}
}
}
...
...
src/main/java/com/thinkgem/jeesite/modules/pay/juhezhong/dto/JuhezhongDto.java
View file @
553d6227
...
...
@@ -109,6 +109,20 @@ private Long timestamp;
*/
private
String
productName
;
/**
* 手续费率 例:0.005 千5
* webPay 必传
*/
private
String
userRate
;
public
String
getUserRate
(){
return
userRate
;
}
public
void
setUserRate
(
String
userRate
){
this
.
userRate
=
userRate
;
}
public
String
getUserId
(
)
{
return
userId
;
}
...
...
src/main/java/com/thinkgem/jeesite/modules/pay/juhezhong/service/JuHeZhongPayService.java
View file @
553d6227
...
...
@@ -142,6 +142,13 @@ public JSONObject quickWebPay ( JuhezhongDto dto ) throws Exception {
String
respStr
=
HttpUtil
.
post
(
ComCode
.
HOST
+
ComCode
.
NO_INTEGRAL_QUICK_PAY_URL
,
params
);
return
JSONObject
.
parseObject
(
respStr
);
}
/**
* 快捷B支付接口(老)6-29停用
* @param dto
* @return
* @throws Exception
*/
public
JSONObject
quickPay
(
JuhezhongDto
dto
)
throws
Exception
{
Map
<
String
,
Object
>
params
=
Bean2Map
.
Entity2Map
(
dto
);
String
signBefore
=
SignUtils
.
signBefore
(
params
);
...
...
@@ -151,6 +158,21 @@ public JSONObject quickWebPay ( JuhezhongDto dto ) throws Exception {
return
JSONObject
.
parseObject
(
respStr
);
}
/**
* 积分快捷(wap)6-29 新接口,需要返回url,异步消息并不能代表成功,只能设置订单状态为支付中
* @param dto
* @return
* @throws Exception
*/
public
JSONObject
quickPayWap
(
JuhezhongDto
dto
)
throws
Exception
{
Map
<
String
,
Object
>
params
=
Bean2Map
.
Entity2Map
(
dto
);
String
signBefore
=
SignUtils
.
signBefore
(
params
);
String
sign
=
SignUtils
.
sign
(
signBefore
,
ComCode
.
MERCHANT_SECRET
);
params
.
put
(
"sign"
,
sign
);
String
respStr
=
HttpUtil
.
post
(
ComCode
.
HOST
+
ComCode
.
NO_INTEGRAL_QUICK_WAP_PAY_URL
,
params
);
return
JSONObject
.
parseObject
(
respStr
);
}
public
JSONObject
quickPay
(
JSONObject
dto
)
throws
Exception
{
String
signBefore
=
SignUtils
.
signBefore
(
dto
);
System
.
out
.
println
(
signBefore
);
...
...
@@ -161,6 +183,16 @@ public JSONObject quickWebPay ( JuhezhongDto dto ) throws Exception {
return
JSONObject
.
parseObject
(
respStr
);
}
public
JSONObject
quickPayWap
(
JSONObject
dto
)
throws
Exception
{
String
signBefore
=
SignUtils
.
signBefore
(
dto
);
System
.
out
.
println
(
signBefore
);
String
sign
=
SignUtils
.
sign
(
signBefore
,
ComCode
.
MERCHANT_SECRET
);
System
.
out
.
println
(
"sign:"
+
sign
);
dto
.
put
(
"sign"
,
sign
);
String
respStr
=
HttpUtil
.
post
(
ComCode
.
HOST
+
ComCode
.
NO_INTEGRAL_QUICK_WAP_PAY_URL
,
dto
);
return
JSONObject
.
parseObject
(
respStr
);
}
/**
* 查询订单状态
*
...
...
src/main/java/com/thinkgem/jeesite/modules/pay/juhezhong/utils/DateUtil.java
View file @
553d6227
package
com
.
thinkgem
.
jeesite
.
modules
.
pay
.
juhezhong
.
utils
;
import
com.thinkgem.jeesite.common.constant.ComCode
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Calendar
;
import
java.util.Date
;
/**
* @author lsw
* @date 2016年1月3日
* @version 1.0
* @date 2016年1月3日
* @desc 日期工具类
*/
public
class
DateUtil
{
/**
* 将时间格式化成指定的字符串
*
* @param date
* @param ftm
* @return
*/
public
static
String
format2str
(
Date
date
,
String
ftm
)
{
return
new
SimpleDateFormat
(
ftm
).
format
(
date
);
}
/**
* 装字符串格式化成指定日期时间
* @param value
* @param fmt
/**
* 将时间格式化成指定的字符串
*
* @param date
* @param ftm
* @return
*/
public
static
String
format2str
(
Date
date
,
String
ftm
)
{
return
new
SimpleDateFormat
(
ftm
).
format
(
date
);
}
/**
* 装字符串格式化成指定日期时间
*
* @param value
* @param fmt
* @return
*/
public
static
Date
string2Date
(
String
value
,
String
fmt
){
try
{
return
new
SimpleDateFormat
(
fmt
).
parse
(
value
);
}
catch
(
ParseException
e
)
{
}
return
new
Date
();
}
public
static
Date
string2Date
(
String
value
,
String
fmt
)
{
try
{
return
new
SimpleDateFormat
(
fmt
).
parse
(
value
);
}
catch
(
ParseException
e
)
{
}
return
new
Date
();
}
/**
* 检验当前时间是否在一个区间范围内
* @return
*/
public
static
boolean
checkTimeIsDuration
()
{
Boolean
flag
=
false
;
String
now
=
ComCode
.
HHMMSS
.
format
(
new
Date
());
Date
time
;
try
{
time
=
ComCode
.
HHMMSS
.
parse
(
now
);
Date
start
=
ComCode
.
HHMMSS
.
parse
(
"09:00:00"
);
Date
end
=
ComCode
.
HHMMSS
.
parse
(
"22:00:00"
);
if
(
isInTimeDuration
(
time
,
start
,
end
))
{
flag
=
true
;
}
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
return
flag
;
}
/**
* 判断当前时间是否在[startTime, endTime]区间
*
* @param nowTime 当前时间
* @param startTime 开始时间
* @param endTime 结束时间
* @return
*/
public
static
boolean
isInTimeDuration
(
Date
nowTime
,
Date
startTime
,
Date
endTime
)
{
//首先判断是否与收尾时间相同,相同直接返回
if
(
nowTime
.
getTime
()
==
startTime
.
getTime
()
||
nowTime
.
getTime
()
==
endTime
.
getTime
())
{
return
true
;
}
Calendar
date
=
Calendar
.
getInstance
();
date
.
setTime
(
nowTime
);
Calendar
begin
=
Calendar
.
getInstance
();
begin
.
setTime
(
startTime
);
Calendar
end
=
Calendar
.
getInstance
();
end
.
setTime
(
endTime
);
if
(
date
.
after
(
begin
)
&&
date
.
before
(
end
))
{
return
true
;
}
else
{
return
false
;
}
}
}
\ No newline at end of file
src/main/java/com/thinkgem/jeesite/modules/pay/service/PayApiService.java
View file @
553d6227
...
...
@@ -44,6 +44,8 @@ import java.math.BigDecimal;
import
java.text.DecimalFormat
;
import
java.util.*
;
import
static
com
.
thinkgem
.
jeesite
.
modules
.
user
.
service
.
UserApiService
.
getCardDetailByAli
;
/**
* 支付相关
*/
...
...
@@ -104,6 +106,9 @@ public class PayApiService {
payBackDto
.
setIsUrl
(
"0"
);
return
payBackDto
;
}
if
(
Integer
.
valueOf
(
request
.
getAmount
())
>
20000
){
throw
new
MyException
(
"超出单笔最大限额"
);
}
// 1. 根据入参获取用户详情信息,包括支付卡片信息
UserEntity
userEntity
=
userService
.
getUserInfo
(
new
Request
(
request
.
getSubMerchantCode
()));
userEntity
=
userService
.
getUserDetailInfo
(
userEntity
);
...
...
@@ -126,7 +131,7 @@ public class PayApiService {
// 4. JuHeZhong支付
PayBackDto
payBackDto
=
new
PayBackDto
();
if
(
ComCode
.
PAYCHANNEL_HL1
.
equals
(
request
.
getPayChannel
()))
{
OrderEntity
orderEntity
=
new
OrderEntity
(
code
,
request
.
getSubMerchantCode
(),
payNo
,
payCode
,
"quick"
,
request
.
getPayChannel
(),
"
1
"
,
amount
,
request
.
getSubject
(),
""
,
String
.
valueOf
(
"D"
.
equalsIgnoreCase
(
userEntity
.
getUserDetail
().
getCard
().
getCardType
())
?
5
:
(
"C"
.
equalsIgnoreCase
(
userEntity
.
getUserDetail
().
getCard
().
getCardType
())
?
6
:
0
)),
request
.
getCardCode
());
OrderEntity
orderEntity
=
new
OrderEntity
(
code
,
request
.
getSubMerchantCode
(),
payNo
,
payCode
,
"quick"
,
request
.
getPayChannel
(),
"
0
"
,
amount
,
request
.
getSubject
(),
""
,
String
.
valueOf
(
"D"
.
equalsIgnoreCase
(
userEntity
.
getUserDetail
().
getCard
().
getCardType
())
?
5
:
(
"C"
.
equalsIgnoreCase
(
userEntity
.
getUserDetail
().
getCard
().
getCardType
())
?
6
:
0
)),
request
.
getCardCode
());
addUserBenefits
(
userEntity
,
orderEntity
,
code
,
request
);
// payDao.saveOrderInfo(orderEntity);
// // 3. 创建分润信息,并保存
...
...
@@ -853,26 +858,37 @@ public class PayApiService {
//获取扣除手续费后的金额,已经转换为分
// BigDecimal amount = calculationAmount(gradeRate, request.getAmount());
// int amountFen = amount.multiply(BigDecimal.valueOf(100.0)).setScale(2, BigDecimal.ROUND_HALF_UP).intValue();
int
amount
=
calculationAmount
(
gradeRate
,
request
.
getAmount
());
//6-29接口方更改了接口,传费率
// int amount = calculationAmount(gradeRate, request.getAmount());
//通过用户code获取user_detail表中数据
UserDetailEntity
userDetail
=
userService
.
getUserDetailByCode
(
userEntity
.
getCode
());
PayBackDto
payBackDto
=
new
PayBackDto
();
payBackDto
.
setIsUrl
(
"0"
);
//获取结算卡信息
CardEntity
cardEntityDebit
=
userService
.
getCardInfoByCode
(
userEntity
);
//借记卡不支持的银行 花旗银行,北京银行
if
(
cardEntityDebit
.
getBankName
().
equals
(
"北京银行"
)){
throw
new
MyException
(
"结算暂不支持该银行卡片"
);
}
//贷记卡不支持银行 农业银行,中信银行,招商银行
if
(
checkCardIsCanUse
(
cardEntity
.
getCardNo
())){
throw
new
MyException
(
"贷记卡暂不支持该银行"
);
}
JuhezhongDto
dto
=
new
JuhezhongDto
();
dto
.
setOrderId
(
orderEntity
.
getPayCode
());
//非订单号,回调根据此值进行修改
dto
.
setMerchantId
(
ComCode
.
MERCHANT_ID
);
//商户号
dto
.
setMerchantKey
(
ComCode
.
MERCHANT_KEY
);
dto
.
setAmount
(
Integer
.
valueOf
(
request
.
getAmount
())
*
100
);
//订单金额,单位为分
dto
.
setTrxType
(
3
);
//交易类型,默认传3
dto
.
setType
(
cardEntity
.
getCardType
().
equals
(
"D"
)
?
6
:
5
);
//5 借记卡 只能 D0 6 贷记卡 D0 t1 ,表中 银行卡类型 D储蓄卡 C信用卡'
//注释参数,因接口提供方更改接口停用接口
// dto.setType(cardEntity.getCardType().equals("D") ? 6 : 5);//5 借记卡 只能 D0 6 贷记卡 D0 t1 ,表中 银行卡类型 D储蓄卡 C信用卡'
dto
.
setBankNo
(
cardEntity
.
getCardNo
());
//支付卡号
dto
.
setCvn2
(
cardEntity
.
getCvn2
());
//安全码
//
dto.setCvn2(cardEntity.getCvn2());//安全码
dto
.
setPhone
(
cardEntity
.
getCardMobile
());
//支付卡预留手机号
dto
.
setExpired
(
cardEntity
.
getExpireDate
());
//信用卡有效期(MMYY)
dto
.
setUserFee
(
amount
<
200
?
Integer
.
valueOf
(
ComCode
.
EXTRA_RATE
)
:
amount
);
//手续费 单位:分 ,D0 业务必传,商家约定
// dto.setExpired(cardEntity.getExpireDate());//信用卡有效期(MMYY)
// 增加参数,手续费率 例:0.005 千5
dto
.
setUserRate
(
gradeRate
.
getRate
());
dto
.
setUserFee
((
Integer
.
valueOf
(
gradeRate
.
getSiglePrice
())
-
1
)
*
100
);
//手续费 单位:分 ,D0 业务必传,商家约定
if
(
cardEntity
.
getCardType
().
equals
(
"C"
))
{
if
(
cardEntityDebit
==
null
)
{
throw
new
MyException
(
"还没有结算卡!"
);
...
...
@@ -888,16 +904,20 @@ public class PayApiService {
dto
.
setTimestamp
(
System
.
currentTimeMillis
());
logger
.
debug
(
"HL4支付请求参数, expireDate: {}, cvn2: {}, cardMobile: {}, "
+
"cardNo: {}, settleBankName: {}, settleBankNo: {}, settleBankPhone:{}, "
+
"name:{}, certificateCode:{}, userFee:{}"
,
request
.
getExpireDate
(),
request
.
getCvn2
(),
"name:{}, certificateCode:{}, userFee:{}
, userRate:{}
"
,
request
.
getExpireDate
(),
request
.
getCvn2
(),
cardEntity
.
getCardMobile
(),
cardEntity
.
getCardNo
(),
cardEntityDebit
.
getBankName
(),
cardEntityDebit
.
getCardNo
(),
cardEntityDebit
.
getCardMobile
(),
userDetail
.
getRealName
(),
userDetail
.
getIdCard
(),
amount
);
cardEntityDebit
.
getCardMobile
(),
userDetail
.
getRealName
(),
userDetail
.
getIdCard
(),
(
Integer
.
valueOf
(
gradeRate
.
getSiglePrice
())
-
1
)
*
100
,
gradeRate
.
getRate
()
);
JSONObject
jsonObject
=
juHeZhongPayService
.
quickPay
(
dto
);
// 因6-29停用老接口,故更改
JSONObject
jsonObject
=
juHeZhongPayService
.
quickPayWap
(
dto
);
logger
.
debug
(
"HL4支付返回结果信息:{}"
+
jsonObject
.
toJSONString
());
payBackDto
.
setMessage
(
jsonObject
.
getString
(
"msg"
));
if
(
"0000"
.
equals
(
jsonObject
.
get
(
"code"
)))
{
//订单支付成功,则进行一次查询,修改订单状态
// this.notifyPay(orderEntity);
logger
.
debug
(
"HL4支付完成获取到的url: {}"
,
jsonObject
.
getString
(
"url"
));
payBackDto
.
setIsUrl
(
"1"
);
payBackDto
.
setUrl
(
jsonObject
.
getString
(
"url"
));
return
payBackDto
;
}
else
{
throw
new
MyException
(
jsonObject
.
getString
(
"msg"
));
...
...
@@ -1144,9 +1164,10 @@ public class PayApiService {
// logger.debug("查询订单返回结果: {}" + jsonObject.toJSONString());
// 支付成功
//订单已经支付成功,则不进行再次修改,可能存在多次回调,所以进行判断
if
(
!
orderEntity
.
getPayStatus
().
equals
(
"2
"
))
{
if
(
orderEntity
.
getPayStatus
().
equals
(
"0
"
))
{
logger
.
debug
(
"进入修改订单状态"
);
orderEntity
.
setPayStatus
(
"2"
);
//改为支付中
orderEntity
.
setPayStatus
(
"1"
);
payDao
.
updateOrderStatus
(
orderEntity
);
}
orderEntity
=
payDao
.
getOrder
(
orderEntity
);
...
...
@@ -1237,7 +1258,7 @@ public class PayApiService {
*/
@Transactional
(
readOnly
=
false
)
public
void
updateOrderTiming
()
{
// System.out.println("。。。。。。。定时任务。updateOrderTiming开始。。。。
");
logger
.
debug
(
"修改交易超过7天订单的定时任务开始
"
);
OrderEntity
orderEntity
=
new
OrderEntity
();
orderEntity
.
setEndTime
(
DateUtils
.
getDateByDay
(
"yyyy-MM-dd HH:mm:ss"
,
-
7
));
List
<
OrderEntity
>
list
=
payDao
.
getOrderListTimeing
(
orderEntity
);
...
...
@@ -1248,7 +1269,7 @@ public class PayApiService {
benefitEntity
.
setOrderCode
(
order
.
getPayCode
());
payDao
.
deleteBenefit
(
benefitEntity
);
}
// System.out.println("。。。。。。。定时任务。updateOrderTiming结束。。。。
");
logger
.
debug
(
"修改交易超过7天订单的定时任务开始
"
);
}
/*
...
...
@@ -1256,7 +1277,7 @@ public class PayApiService {
*/
@Transactional
(
readOnly
=
false
)
public
void
updateOrders
()
{
// System.out.println("。。。。。。。定时任务。updateOrders开始。。。。
");
logger
.
debug
(
"定时任务修改订单状态
"
);
try
{
OrderEntity
orderEntity
=
new
OrderEntity
();
orderEntity
.
setStartTime
(
DateUtils
.
getDateByDay
(
"yyyy-MM-dd HH:mm:ss"
,
-
7
));
...
...
@@ -1277,18 +1298,15 @@ public class PayApiService {
jsonObject
=
juHeZhongPayIntegralService
.
query
(
dto
);
}
else
if
(
ComCode
.
PAYCHANNEL_HL1
.
equals
(
order
.
getPayChannel
()))
{
jsonObject
=
juHeZhongPayService
.
query
(
dto
);
}
else
if
(
ComCode
.
PAYCHANNEL_HL2
.
equals
(
orderEntity
.
getPayChannel
()))
{
dto
.
setMerchantId
(
ComCode
.
JFEN_MERCHANT_ID
);
dto
.
setMerchantKey
(
ComCode
.
JFEN_MERCHANT_KEY
);
jsonObject
=
juHeZhongPayJFenService
.
query
(
dto
);
}
if
(
jsonObject
!=
null
)
{
// System.out.println("查询订单返回结果:"+jsonObject.toJSONString());
// 支付成功
if
(
"0000"
.
equals
(
jsonObject
.
get
(
"code"
)))
{
System
.
out
.
println
(
"定时任务查询订单返回结果:"
+
jsonObject
.
toJSONString
());
logger
.
debug
(
"1小时的定时任务查询订单返回结果: {}"
,
jsonObject
.
toJSONString
());
order
.
setPayStatus
(
"2"
);
payDao
.
updateOrderStatus
(
order
);
}
else
{
// 支付失败
...
...
@@ -1326,6 +1344,47 @@ public class PayApiService {
}
/*
* 查询交易的状态并修改
*/
@Transactional
(
readOnly
=
false
)
public
void
updateOrdersHL4
()
{
logger
.
debug
(
"HL4专用定时任务修改订单状态"
);
try
{
OrderEntity
orderEntity
=
new
OrderEntity
();
orderEntity
.
setPayChannel
(
"quick_no_integral"
);
//返回url有几分钟过期时间,url中订单处理需要验证码等时间,暂定查询20分钟之内的订单
orderEntity
.
setStartTime
(
DateUtils
.
formatDate
(
DateUtils
.
addMinutes
(
new
Date
(),
-
20
),
"yyyy-MM-dd HH:mm:ss"
));
orderEntity
.
setEndTime
(
DateUtils
.
formatDate
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
List
<
OrderEntity
>
list
=
payDao
.
getOrderListTimeing
(
orderEntity
);
for
(
OrderEntity
order
:
list
)
{
// 快捷支付
if
(
"quick"
.
equals
(
order
.
getPayMethod
()))
{
QuickDto
dto
=
new
QuickDto
();
dto
.
setOrderId
(
order
.
getPayCode
());
dto
.
setTimestamp
(
System
.
currentTimeMillis
());
JSONObject
jsonObject
=
null
;
if
(
ComCode
.
PAYCHANNEL_HL1
.
equals
(
order
.
getPayChannel
()))
{
jsonObject
=
juHeZhongPayService
.
query
(
dto
);
}
if
(
jsonObject
!=
null
)
{
// 支付成功
logger
.
debug
(
"HL4定时查询订单返回结果: {}"
,
jsonObject
.
toJSONString
());
if
(
"0000"
.
equals
(
jsonObject
.
get
(
"code"
)))
{
order
.
setPayStatus
(
"2"
);
payDao
.
updateOrderStatus
(
order
);
}
else
{
// 支付失败
orderFail
(
order
);
}
}
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
public
JSONObject
queryForward
(
String
payCode
)
throws
Exception
{
// 查询单笔转账
...
...
@@ -1482,4 +1541,18 @@ public class PayApiService {
int
result
=
BigDecimal
.
valueOf
(
siglePrice
*
100
).
intValue
();
return
result
;
}
//获取银行卡银行,是否可用
private
boolean
checkCardIsCanUse
(
String
cardNum
){
boolean
flag
=
true
;
String
cardDetail
=
getCardDetailByAli
(
cardNum
);
JSONObject
parse
=
(
JSONObject
)
JSONObject
.
parse
(
cardDetail
);
if
(
parse
.
get
(
"validated"
).
equals
(
true
)){
if
(
parse
.
get
(
"bank"
).
equals
(
"ABC"
)||
parse
.
get
(
"bank"
).
equals
(
"CMB"
)||
parse
.
get
(
"bank"
).
equals
(
"CITIC"
)
){
return
false
;
}
}
return
flag
;
}
}
src/main/java/com/thinkgem/jeesite/modules/pay/service/TimingService.java
View file @
553d6227
...
...
@@ -24,6 +24,11 @@ public class TimingService {
payApiService
.
updateOrders
();
}
@Scheduled
(
cron
=
"20 0/2 * * * ? "
)
public
void
updateOrdersHL4
(){
payApiService
.
updateOrdersHL4
();
}
@Scheduled
(
cron
=
"0 0/5 * * * ? "
)
public
void
updateUserGrade
(){
userApiService
.
updateUserLevel
();
...
...
src/main/resources/mappings/modules/pay/PayApiDao.xml
View file @
553d6227
...
...
@@ -114,6 +114,9 @@
card_code
FROM youka_orders
WHERE pay_status = 1
<if
test=
"payChannel != null and payChannel != ''"
>
AND pay_channel = #{payChannel}
</if>
<if
test=
"endTime != null and endTime != ''"
>
AND create_date
<
= #{endTime}
</if>
...
...
src/main/webapp/static/share/js/regist.js
View file @
553d6227
...
...
@@ -59,7 +59,7 @@ function validPhone(ele){
if
(
validCode
){
validCode
=
false
;
$
.
ajax
({
url
:
'http://youkapay.com
:8080
/youka-api/api/user/getIdentifyCode'
,
url
:
'http://youkapay.com/youka-api/api/user/getIdentifyCode'
,
data
:
content
,
dataType
:
'json'
,
type
:
'POST'
,
...
...
@@ -131,25 +131,26 @@ $("#submit").on("click",function(){
console
.
info
(
content
)
$
.
ajax
({
type
:
'POST'
,
url
:
'http://youkapay.com
:8080
/youka-api/api/user/signUp'
,
url
:
'http://youkapay.com/youka-api/api/user/signUp'
,
data
:
content
,
dataType
:
'json'
,
success
:
function
(
data
){
console
.
info
(
data
)
if
(
data
.
status
==
'2000'
){
//跳转到市场
// window.location = "apk下载地址";
var
user
=
navigator
.
userAgent
;
if
(
user
.
match
(
/
(
iphone os
)
/i
))
{
console
.
log
(
"isphone"
);
window
.
location
.
href
=
'https://www.pgyer.com/7aJ3'
// window.location.href='https://appsto.re/cn/KG6P2.i'
}
else
if
(
user
.
match
(
/ipad/i
)){
console
.
log
(
"isipad"
);
}
else
if
(
user
.
match
(
/
(
midp|ucweb|android|windows ce|windows mobile
)
/i
)){
console
.
log
(
"android"
);
// window.location.href='http://tstatics.iyuwan.com/files/apk/201605/Iyuwan.apk'
};
// window.location = "apk下载地址";
window
.
location
.
href
=
"http://youkapay.com/youka-api/static/share/spread.html"
;
// var user = navigator.userAgent;
// if (user.match(/(iphone os)/i)) {
// console.log("isphone");
// window.location.href = 'https://www.pgyer.com/7aJ3'
// // window.location.href='https://appsto.re/cn/KG6P2.i'
// }else if(user.match(/ipad/i)){
// console.log("isipad");
// }else if(user.match(/(midp|ucweb|android|windows ce|windows mobile)/i)){
// console.log("android");
// // window.location.href='http://tstatics.iyuwan.com/files/apk/201605/Iyuwan.apk'
// };
}
else
{
$
(
"#registError"
).
removeClass
(
"none"
);
$
(
"#registFail"
).
html
(
data
.
message
);
...
...
src/main/webapp/static/share/spread.html
0 → 100644
View file @
553d6227
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge"
>
<meta
name=
"viewport"
content=
"width=device-width"
>
<script
type=
"text/javascript"
src=
"js/jquery-1.9.1.min.js"
></script>
<script
type=
"text/javascript"
src=
"js/getQueryStringByName.js"
></script>
<!--
<script type="text/javascript" src="js/sha1.js"></script>
<script type="text/javascript" src="js/DES.js"></script>
-->
<script
type=
"text/javascript"
src=
"js/md5.js"
></script>
<script
type=
"text/javascript"
src=
"js/base64.js"
></script>
<link
rel=
"stylesheet"
href=
"css/style.css"
>
<title>
优卡生活
</title>
<style>
button
{
background
:
none
;
outline
:
none
;
border
:
none
;
color
:
#FFFFFF
;
display
:
block
;
width
:
50%
;
height
:
0
;
padding
:
10%
;
line-height
:
0px
;
border-radius
:
20px
;
font-size
:
25px
;
}
#ios
{
background
:
#FFBB2C
;
}
#android
{
background
:
#33FF33
;
}
.containter
{
position
:
absolute
;
width
:
100%
;
top
:
20%
;
left
:
50%
;
transform
:
translate
(
-50%
);
}
</style>
</head>
<body>
<div
align=
"center"
class=
"containter"
>
<button
onclick=
"window.open('https://www.pgyer.com/7aJ3')"
id=
"ios"
>
IOS 下载
</button>
<br>
<button
onclick=
"window.open('https://www.pgyer.com/7aJ3')"
id=
"android"
>
安卓下载
</button>
</div>
</body>
</html>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment