Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
Z
zion
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
zhengfg
zion
Commits
a562e2f2
提交
a562e2f2
authored
11月 07, 2019
作者:
zgy
1
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
完成paypal支付
上级
dd27e692
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
244 行增加
和
42 行删除
+244
-42
TokenVerification.java
...com/diaoyun/zion/chinafrica/client/TokenVerification.java
+2
-1
PayPalController.java
.../diaoyun/zion/chinafrica/controller/PayPalController.java
+34
-5
TbCfExpCatRelController.java
...n/zion/chinafrica/controller/TbCfExpCatRelController.java
+0
-1
PayPalService.java
...va/com/diaoyun/zion/chinafrica/service/PayPalService.java
+3
-1
PayPalServiceImpl.java
...aoyun/zion/chinafrica/service/impl/PayPalServiceImpl.java
+121
-16
PayPalResult.java
...ain/java/com/diaoyun/zion/chinafrica/vo/PayPalResult.java
+48
-0
domain.properties
src/main/resources/properties/domain.properties
+12
-8
PayTest.java
src/test/java/com/diaoyun/zion/PayTest.java
+24
-10
没有找到文件。
src/main/java/com/diaoyun/zion/chinafrica/client/TokenVerification.java
浏览文件 @
a562e2f2
...
@@ -46,7 +46,8 @@ public class TokenVerification {
...
@@ -46,7 +46,8 @@ public class TokenVerification {
"&&!execution(* com.diaoyun.zion.chinafrica.controller.GoodsTypeController.*(..))"
+
"&&!execution(* com.diaoyun.zion.chinafrica.controller.GoodsTypeController.*(..))"
+
"&&!execution(* com.diaoyun.zion.chinafrica.controller.VersionController.*(..))"
+
"&&!execution(* com.diaoyun.zion.chinafrica.controller.VersionController.*(..))"
+
"&&!execution(* com.diaoyun.zion.chinafrica.controller.TbCfFeeController.*(..))"
+
"&&!execution(* com.diaoyun.zion.chinafrica.controller.TbCfFeeController.*(..))"
+
"&&!execution(* com.diaoyun.zion.chinafrica.controller.TbCfOrderController.*(..))"
"&&!execution(* com.diaoyun.zion.chinafrica.controller.TbCfOrderController.*(..))"
+
"&&!execution(* com.diaoyun.zion.chinafrica.controller.PayPalController.*(..))"
)
)
public
void
controllerAspect
()
{
public
void
controllerAspect
()
{
...
...
src/main/java/com/diaoyun/zion/chinafrica/controller/PayPalController.java
浏览文件 @
a562e2f2
package
com
.
diaoyun
.
zion
.
chinafrica
.
controller
;
package
com
.
diaoyun
.
zion
.
chinafrica
.
controller
;
import
com.diaoyun.zion.chinafrica.service.PayPalService
;
import
com.diaoyun.zion.chinafrica.service.PayPalService
;
import
com.diaoyun.zion.chinafrica.vo.PayPalResult
;
import
com.diaoyun.zion.master.base.Result
;
import
com.diaoyun.zion.master.base.Result
;
import
com.egzosn.pay.common.api.PayService
;
import
com.egzosn.pay.common.api.PayService
;
import
com.egzosn.pay.common.bean.MethodType
;
import
com.egzosn.pay.common.bean.MethodType
;
...
@@ -28,23 +29,51 @@ public class PayPalController {
...
@@ -28,23 +29,51 @@ public class PayPalController {
@Autowired
@Autowired
private
PayPalService
payPalService
;
private
PayPalService
payPalService
;
@PostMapping
(
"/pay"
)
/**
public
Result
payForOrder
(
@RequestParam
(
"orderId"
)
String
orderId
){
* 发起支付
*
* @param orderId
* @return
*/
@PostMapping
(
"/pay"
)
public
Result
payForOrder
(
@RequestParam
(
"orderId"
)
String
orderId
)
{
return
payPalService
.
payForOrder
(
orderId
);
return
payPalService
.
payForOrder
(
orderId
);
}
}
/**
* 支付成功的回调
*
* @param request
* @return
*/
@GetMapping
(
"/success"
)
@GetMapping
(
"/success"
)
public
Result
payForSuccess
(
HttpServletRequest
request
,
@RequestParam
(
"orderId"
)
String
orderId
)
{
public
Result
payForSuccess
(
HttpServletRequest
request
)
{
return
payPalService
.
payForSuccess
(
request
,
orderId
);
return
payPalService
.
payForSuccess
(
request
);
}
}
/**
* 取消支付
*
* @return
*/
@GetMapping
(
"/cancel"
)
@GetMapping
(
"/cancel"
)
public
Result
cancelPay
(){
public
Result
cancelPay
()
{
return
new
Result
().
setMessage
(
"订单支付已取消"
);
return
new
Result
().
setMessage
(
"订单支付已取消"
);
}
}
/**
* 退款
* @param orderId
* @param payId
* @return
*/
@GetMapping
(
"/refund"
)
public
Result
refund
(
@RequestParam
(
"orderId"
)
String
orderId
,
@RequestParam
(
"payId"
)
String
payId
)
{
return
payPalService
.
refund
(
orderId
,
payId
);
}
}
}
src/main/java/com/diaoyun/zion/chinafrica/controller/TbCfExpCatRelController.java
浏览文件 @
a562e2f2
...
@@ -31,7 +31,6 @@ public class TbCfExpCatRelController {
...
@@ -31,7 +31,6 @@ public class TbCfExpCatRelController {
@ApiOperation
(
"关联运费模板和商品种类"
)
@ApiOperation
(
"关联运费模板和商品种类"
)
@PostMapping
(
"/buildRelate"
)
@PostMapping
(
"/buildRelate"
)
public
Result
buildRelate
(
@ApiParam
(
"包含分类id数组和模板id"
)
@RequestBody
Map
<
String
,
Object
>
param
)
{
public
Result
buildRelate
(
@ApiParam
(
"包含分类id数组和模板id"
)
@RequestBody
Map
<
String
,
Object
>
param
)
{
List
<
String
>
categoryIdArray
=
(
List
<
String
>)
param
.
get
(
"categoryIds"
);
List
<
String
>
categoryIdArray
=
(
List
<
String
>)
param
.
get
(
"categoryIds"
);
String
tempalteId
=
(
String
)
param
.
get
(
"tempalteId"
);
String
tempalteId
=
(
String
)
param
.
get
(
"tempalteId"
);
...
...
src/main/java/com/diaoyun/zion/chinafrica/service/PayPalService.java
浏览文件 @
a562e2f2
package
com
.
diaoyun
.
zion
.
chinafrica
.
service
;
package
com
.
diaoyun
.
zion
.
chinafrica
.
service
;
import
com.diaoyun.zion.chinafrica.vo.PayPalResult
;
import
com.diaoyun.zion.master.base.Result
;
import
com.diaoyun.zion.master.base.Result
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
...
@@ -7,5 +8,6 @@ import javax.servlet.http.HttpServletRequest;
...
@@ -7,5 +8,6 @@ import javax.servlet.http.HttpServletRequest;
public
interface
PayPalService
{
public
interface
PayPalService
{
public
Result
payForOrder
(
String
orderId
);
public
Result
payForOrder
(
String
orderId
);
public
Result
payForSuccess
(
HttpServletRequest
request
,
String
orderId
);
public
Result
payForSuccess
(
HttpServletRequest
request
);
Result
refund
(
String
orderId
,
String
payId
);
}
}
src/main/java/com/diaoyun/zion/chinafrica/service/impl/PayPalServiceImpl.java
浏览文件 @
a562e2f2
package
com
.
diaoyun
.
zion
.
chinafrica
.
service
.
impl
;
package
com
.
diaoyun
.
zion
.
chinafrica
.
service
.
impl
;
import
com.diaoyun.zion.chinafrica.constant.KeyConstant
;
import
com.diaoyun.zion.chinafrica.constant.KeyConstant
;
import
com.diaoyun.zion.chinafrica.dao.TbCfFinanceDao
;
import
com.diaoyun.zion.chinafrica.dao.TbCfIssueCouponDao
;
import
com.diaoyun.zion.chinafrica.dao.TbCfOrderDao
;
import
com.diaoyun.zion.chinafrica.dao.TbCfOrderDao
;
import
com.diaoyun.zion.chinafrica.entity.TbCfFinanceEntity
;
import
com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity
;
import
com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity
;
import
com.diaoyun.zion.chinafrica.enums.DeliveryStatusEnum
;
import
com.diaoyun.zion.chinafrica.enums.DeliveryStatusEnum
;
import
com.diaoyun.zion.chinafrica.enums.OrderStatusEnum
;
import
com.diaoyun.zion.chinafrica.enums.OrderStatusEnum
;
import
com.diaoyun.zion.chinafrica.service.PayPalService
;
import
com.diaoyun.zion.chinafrica.service.PayPalService
;
import
com.diaoyun.zion.chinafrica.vo.PayPalResult
;
import
com.diaoyun.zion.chinafrica.vo.TbCfFinanceVo
;
import
com.diaoyun.zion.chinafrica.vo.TbCfOrderVo
;
import
com.diaoyun.zion.chinafrica.vo.TbCfOrderVo
;
import
com.diaoyun.zion.master.base.Result
;
import
com.diaoyun.zion.master.base.Result
;
import
com.diaoyun.zion.master.common.RedisCache
;
import
com.diaoyun.zion.master.common.RedisCache
;
import
com.diaoyun.zion.master.config.DomainProperties
;
import
com.diaoyun.zion.master.config.DomainProperties
;
import
com.diaoyun.zion.master.enums.ResultCodeEnum
;
import
com.diaoyun.zion.master.enums.ResultCodeEnum
;
import
com.diaoyun.zion.master.util.IdUtil
;
import
com.diaoyun.zion.master.util.JsoupUtil
;
import
com.egzosn.pay.common.api.PayService
;
import
com.egzosn.pay.common.api.PayService
;
import
com.egzosn.pay.common.bean.MethodType
;
import
com.egzosn.pay.common.bean.MethodType
;
import
com.egzosn.pay.common.bean.PayOrder
;
import
com.egzosn.pay.common.bean.PayOrder
;
import
com.egzosn.pay.common.bean.RefundOrder
;
import
com.egzosn.pay.common.http.HttpConfigStorage
;
import
com.egzosn.pay.common.http.HttpConfigStorage
;
import
com.egzosn.pay.paypal.api.PayPalConfigStorage
;
import
com.egzosn.pay.paypal.api.PayPalConfigStorage
;
import
com.egzosn.pay.paypal.api.PayPalPayService
;
import
com.egzosn.pay.paypal.api.PayPalPayService
;
import
com.egzosn.pay.paypal.bean.PayPalTransactionType
;
import
com.egzosn.pay.paypal.bean.PayPalTransactionType
;
import
com.stripe.model.Charge
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
...
@@ -34,7 +44,10 @@ import java.util.Map;
...
@@ -34,7 +44,10 @@ import java.util.Map;
import
java.util.UUID
;
import
java.util.UUID
;
@Service
(
"payPalService"
)
@Service
(
"payPalService"
)
@Transactional
public
class
PayPalServiceImpl
implements
PayPalService
{
public
class
PayPalServiceImpl
implements
PayPalService
{
@Autowired
private
TbCfFinanceDao
tbCfFinanceDao
;
@Autowired
@Autowired
private
DomainProperties
domainProperties
;
private
DomainProperties
domainProperties
;
@Resource
@Resource
...
@@ -42,16 +55,20 @@ public class PayPalServiceImpl implements PayPalService {
...
@@ -42,16 +55,20 @@ public class PayPalServiceImpl implements PayPalService {
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
TbCfOrderServiceImpl
.
class
);
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
TbCfOrderServiceImpl
.
class
);
@Autowired
@Autowired
private
TbCfOrderDao
tbCfOrderDao
;
private
TbCfOrderDao
tbCfOrderDao
;
@Autowired
private
TbCfIssueCouponDao
tbCfIssueCouponDao
;
private
String
ORDER_ID
=
""
;
@Override
@Override
@Transactional
public
Result
payForOrder
(
String
orderId
)
{
public
Result
payForOrder
(
String
orderId
)
{
Result
result
=
new
Result
()
;
ORDER_ID
=
orderId
;
PayPalConfigStorage
storage
=
new
PayPalConfigStorage
();
PayPalConfigStorage
storage
=
new
PayPalConfigStorage
();
Result
result
=
new
Result
();
storage
.
setClientID
(
domainProperties
.
getProperty
(
"paypal.client.app"
));
storage
.
setClientID
(
domainProperties
.
getProperty
(
"paypal.client.app"
));
storage
.
setClientSecret
(
domainProperties
.
getProperty
(
"paypal.client.secret"
));
storage
.
setClientSecret
(
domainProperties
.
getProperty
(
"paypal.client.secret"
));
//storage.setTest(true);
//发起付款后的页面转跳地址
//发起付款后的页面转跳地址
storage
.
setTest
(
true
);
storage
.
setReturnUrl
(
domainProperties
.
getProperty
(
"paypal.success.url"
));
storage
.
setReturnUrl
(
domainProperties
.
getProperty
(
"paypal.success.url"
));
//取消按钮转跳地址,这里用异步通知地址的兼容的做法
//取消按钮转跳地址,这里用异步通知地址的兼容的做法
storage
.
setNotifyUrl
(
domainProperties
.
getProperty
(
"paypal.cancel.url"
));
storage
.
setNotifyUrl
(
domainProperties
.
getProperty
(
"paypal.cancel.url"
));
...
@@ -62,10 +79,17 @@ public class PayPalServiceImpl implements PayPalService {
...
@@ -62,10 +79,17 @@ public class PayPalServiceImpl implements PayPalService {
try
{
try
{
if
(
tbCfOrderVo
!=
null
)
{
if
(
tbCfOrderVo
!=
null
)
{
BigDecimal
realityPay
=
tbCfOrderVo
.
getRealityPay
();
BigDecimal
realityPay
=
tbCfOrderVo
.
getRealityPay
();
PayOrder
order
=
new
PayOrder
(
"Order_payment:"
,
"
Order payment
"
,
realityPay
,
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
),
PayPalTransactionType
.
sale
);
PayOrder
order
=
new
PayOrder
(
"Order_payment:"
,
"
tbCfOrderVo.getUserName()+\"'s order,the total price is $\"+tbCfOrderVo.getRealityPay()
"
,
realityPay
,
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
),
PayPalTransactionType
.
sale
);
Map
orderInfo
=
service
.
orderInfo
(
order
);
Map
orderInfo
=
service
.
orderInfo
(
order
);
String
request
=
service
.
buildRequest
(
orderInfo
,
MethodType
.
POST
);
Map
<
String
,
String
>
orderHref
=
JsoupUtil
.
getOrderHref
(
orderInfo
.
toString
());
result
.
setData
(
request
);
System
.
out
.
println
(
orderHref
.
get
(
"approval_url"
));
String
url
=
orderHref
.
get
(
"approval_url"
);
PayPalResult
palResult
=
new
PayPalResult
();
palResult
.
setOrderId
(
orderId
);
palResult
.
setPayId
((
String
)
orderInfo
.
get
(
"id"
));
palResult
.
setPaypalUrl
(
url
);
palResult
.
setOrderDesc
(
tbCfOrderVo
.
getUserName
()
+
"'s order,the total price is $"
+
tbCfOrderVo
.
getRealityPay
());
result
.
setData
(
palResult
);
}
else
{
}
else
{
result
.
setCode
(
ResultCodeEnum
.
SERVICE_ERROR
.
getCode
()).
setMessage
(
"订单不存在!"
);
result
.
setCode
(
ResultCodeEnum
.
SERVICE_ERROR
.
getCode
()).
setMessage
(
"订单不存在!"
);
}
}
...
@@ -78,37 +102,90 @@ public class PayPalServiceImpl implements PayPalService {
...
@@ -78,37 +102,90 @@ public class PayPalServiceImpl implements PayPalService {
}
}
@Override
@Override
public
Result
payForSuccess
(
HttpServletRequest
request
,
String
orderId
)
{
public
Result
payForSuccess
(
HttpServletRequest
request
)
{
Result
result
=
new
Result
();
Result
result
=
new
Result
();
PayPalConfigStorage
storage
=
new
PayPalConfigStorage
();
PayPalConfigStorage
storage
=
new
PayPalConfigStorage
();
storage
.
setClientID
(
domainProperties
.
getProperty
(
"paypal.client.app"
));
storage
.
setClientID
(
domainProperties
.
getProperty
(
"paypal.client.app"
));
storage
.
setClientSecret
(
domainProperties
.
getProperty
(
"paypal.client.secret"
));
storage
.
setClientSecret
(
domainProperties
.
getProperty
(
"paypal.client.secret"
));
//storage.setTest(true);
storage
.
setTest
(
true
);
//发起付款后的页面转跳地址
storage
.
setReturnUrl
(
domainProperties
.
getProperty
(
"paypal.success.url"
));
//取消按钮转跳地址,这里用异步通知地址的兼容的做法
storage
.
setNotifyUrl
(
domainProperties
.
getProperty
(
"paypal.cancel.url"
));
HttpConfigStorage
httpConfigStorage
=
new
HttpConfigStorage
();
PayService
service
=
new
PayPalPayService
(
storage
);
PayService
service
=
new
PayPalPayService
(
storage
);
Map
<
String
,
Object
>
params
=
null
;
Map
<
String
,
Object
>
params
=
null
;
TbCfOrderVo
tbCfOrderVo
=
(
TbCfOrderVo
)
orderRedisCache
.
get
(
KeyConstant
.
ORDER_DET
+
orderId
);
try
{
try
{
params
=
service
.
getParameter2Map
(
request
.
getParameterMap
(),
request
.
getInputStream
());
params
=
service
.
getParameter2Map
(
request
.
getParameterMap
(),
request
.
getInputStream
());
String
payerID
=
(
String
)
params
.
get
(
"PayerID"
);
String
paymentId
=
(
String
)
params
.
get
(
"paymentId"
);
String
token
=
(
String
)
params
.
get
(
"token"
);
if
(
service
.
verify
(
params
))
{
if
(
service
.
verify
(
params
))
{
System
.
out
.
println
(
"支付成功"
);
System
.
out
.
println
(
"支付成功"
);
result
.
setData
(
"支付成功"
);
result
.
setMessage
(
"支付成功"
);
}
else
{
result
.
setMessage
(
"支付失败"
);
}
if
(
ORDER_ID
!=
null
)
{
TbCfOrderVo
tbCfOrderVo
=
(
TbCfOrderVo
)
orderRedisCache
.
get
(
KeyConstant
.
ORDER_DET
+
ORDER_ID
);
//修改订单状态
changeOrderState
(
paymentId
,
tbCfOrderVo
);
//修改优惠券状态
if
(
tbCfOrderVo
.
getCouponId
()
!=
null
&&
tbCfOrderVo
.
getOrderStatus
()
==
20
)
{
tbCfIssueCouponDao
.
changeCoupnStatus
(
tbCfOrderVo
.
getUserId
(),
tbCfOrderVo
.
getCouponId
());
}
//生成支付流水
TbCfFinanceEntity
finance
=
createFinance
(
paymentId
,
token
,
payerID
,
tbCfOrderVo
);
TbCfFinanceVo
tbCfFinanceVo
=
new
TbCfFinanceVo
();
BeanUtils
.
copyProperties
(
finance
,
tbCfFinanceVo
);
//清除订单
removeRedisCache
(
tbCfOrderVo
);
removeRedisCache
(
tbCfOrderVo
);
}
}
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
result
.
setCode
(
ResultCodeEnum
.
SERVICE_ERROR
.
getCode
()).
setMessage
(
e
.
getMessage
());
result
.
setCode
(
ResultCodeEnum
.
SERVICE_ERROR
.
getCode
()).
setMessage
(
e
.
getMessage
());
logger
.
error
(
e
.
getMessage
(),
e
);
logger
.
error
(
e
.
getMessage
(),
e
);
return
result
;
return
result
;
}
}
return
result
;
}
/**
* 退款
*
* @param orderId
* @param payId
* @return
*/
@Override
public
Result
refund
(
String
orderId
,
String
payId
)
{
Result
result
=
new
Result
();
PayPalConfigStorage
storage
=
new
PayPalConfigStorage
();
storage
.
setClientID
(
domainProperties
.
getProperty
(
"paypal.client.app"
));
storage
.
setClientSecret
(
domainProperties
.
getProperty
(
"paypal.client.secret"
));
HttpConfigStorage
httpConfigStorage
=
new
HttpConfigStorage
();
try
{
PayService
service
=
new
PayPalPayService
(
storage
);
RefundOrder
order
=
new
RefundOrder
();
order
.
setTradeNo
(
orderId
);
order
.
setOutTradeNo
(
payId
);
//根据orderId查询订单信息
TbCfOrderEntity
tbCfOrderEntity
=
tbCfOrderDao
.
queryObject
(
orderId
);
order
.
setRefundAmount
(
tbCfOrderEntity
.
getRealityPay
());
order
.
setTotalAmount
(
tbCfOrderEntity
.
getTotalPrice
());
Map
refund
=
service
.
refund
(
order
);
result
.
setData
(
refund
).
setCode
(
1
).
setMessage
(
"退款成功"
);
}
catch
(
Exception
e
)
{
result
.
setCode
(
ResultCodeEnum
.
SERVICE_ERROR
.
getCode
()).
setMessage
(
e
.
getMessage
());
logger
.
error
(
e
.
getMessage
(),
e
);
return
result
;
}
return
result
;
return
result
;
}
}
/**
* 清空订单缓存
*
* @param tbCfOrderVo
*/
private
void
removeRedisCache
(
TbCfOrderVo
tbCfOrderVo
)
{
private
void
removeRedisCache
(
TbCfOrderVo
tbCfOrderVo
)
{
orderRedisCache
.
delete
(
KeyConstant
.
ORDER_DET
+
tbCfOrderVo
.
getOrderId
());
orderRedisCache
.
delete
(
KeyConstant
.
ORDER_DET
+
tbCfOrderVo
.
getOrderId
());
String
couponId
=
""
;
String
couponId
=
""
;
...
@@ -119,6 +196,12 @@ public class PayPalServiceImpl implements PayPalService {
...
@@ -119,6 +196,12 @@ public class PayPalServiceImpl implements PayPalService {
orderRedisCache
.
delete
(
KeyConstant
.
ORDER_EXP
+
orderIdAndCouponId
);
orderRedisCache
.
delete
(
KeyConstant
.
ORDER_EXP
+
orderIdAndCouponId
);
}
}
/**
* 修改订单状态
*
* @param payId
* @param oldOrder
*/
private
void
changeOrderState
(
String
payId
,
TbCfOrderVo
oldOrder
)
{
private
void
changeOrderState
(
String
payId
,
TbCfOrderVo
oldOrder
)
{
//更改订单状态
//更改订单状态
TbCfOrderEntity
tbCfOrder
=
new
TbCfOrderEntity
();
TbCfOrderEntity
tbCfOrder
=
new
TbCfOrderEntity
();
...
@@ -131,4 +214,26 @@ public class PayPalServiceImpl implements PayPalService {
...
@@ -131,4 +214,26 @@ public class PayPalServiceImpl implements PayPalService {
tbCfOrder
.
setPayStatus
(
OrderStatusEnum
.
PAID
.
getValue
());
tbCfOrder
.
setPayStatus
(
OrderStatusEnum
.
PAID
.
getValue
());
tbCfOrderDao
.
update
(
tbCfOrder
);
tbCfOrderDao
.
update
(
tbCfOrder
);
}
}
/**
* 记录财务流水
*
* @param
* @param tbCfOrderVo
*/
private
TbCfFinanceEntity
createFinance
(
String
paymentId
,
String
token
,
String
payerId
,
TbCfOrderVo
tbCfOrderVo
)
{
TbCfFinanceEntity
tbCfFinance
=
new
TbCfFinanceEntity
();
String
successUrl
=
domainProperties
.
getProperty
(
"paypal.success.url"
);
String
receiptUrl
=
successUrl
+
"?paymentId="
+
paymentId
+
"&token="
+
token
+
"&PayerID="
+
payerId
;
tbCfFinance
.
setOrderId
(
tbCfOrderVo
.
getOrderId
());
tbCfFinance
.
setFinaceId
(
IdUtil
.
createIdbyUUID
());
tbCfFinance
.
setPayAccount
(
tbCfOrderVo
.
getRealityPay
());
tbCfFinance
.
setPayId
(
paymentId
);
tbCfFinance
.
setPayTime
(
new
Date
());
tbCfFinance
.
setReceiptUrl
(
receiptUrl
);
tbCfFinance
.
setPayWayCode
(
"paypal"
);
tbCfFinance
.
setUserId
(
tbCfOrderVo
.
getUserId
());
tbCfFinanceDao
.
save
(
tbCfFinance
);
return
tbCfFinance
;
}
}
}
src/main/java/com/diaoyun/zion/chinafrica/vo/PayPalResult.java
0 → 100644
浏览文件 @
a562e2f2
package
com
.
diaoyun
.
zion
.
chinafrica
.
vo
;
/**
* 支付返回类
*/
public
class
PayPalResult
{
//订单id
private
String
orderId
;
//支付id
private
String
payId
;
//paypal回调url
private
String
paypalUrl
;
//订单描述
private
String
orderDesc
;
public
String
getOrderId
()
{
return
orderId
;
}
public
void
setOrderId
(
String
orderId
)
{
this
.
orderId
=
orderId
;
}
public
String
getPayId
()
{
return
payId
;
}
public
void
setPayId
(
String
payId
)
{
this
.
payId
=
payId
;
}
public
String
getPaypalUrl
()
{
return
paypalUrl
;
}
public
void
setPaypalUrl
(
String
paypalUrl
)
{
this
.
paypalUrl
=
paypalUrl
;
}
public
String
getOrderDesc
()
{
return
orderDesc
;
}
public
void
setOrderDesc
(
String
orderDesc
)
{
this
.
orderDesc
=
orderDesc
;
}
}
src/main/resources/properties/domain.properties
浏览文件 @
a562e2f2
...
@@ -36,10 +36,10 @@ tencent.wordpos.app_url=https://api.ai.qq.com/fcgi-bin/nlp/nlp_wordpos
...
@@ -36,10 +36,10 @@ tencent.wordpos.app_url=https://api.ai.qq.com/fcgi-bin/nlp/nlp_wordpos
################腾讯翻译配置 END###################
################腾讯翻译配置 END###################
##################stripe公钥(不加密)和私钥(已用 AESUtils 加密)################################
##################stripe公钥(不加密)和私钥(已用 AESUtils 加密)################################
stripe.pk
=
pk_live_5MdXU4N1cvmU1yatYp5v0E0n00C7tAXpGB
#
stripe.pk=pk_live_5MdXU4N1cvmU1yatYp5v0E0n00C7tAXpGB
stripe.sk
=
d87UqTQ6QUjuNkXrjH51Gl/Zqnfy98HRl23xljism2hpaXjSNTwdl6pv6FM7D4tT
#
stripe.sk=d87UqTQ6QUjuNkXrjH51Gl/Zqnfy98HRl23xljism2hpaXjSNTwdl6pv6FM7D4tT
#
stripe.pk=pk_test_rXUSgU8Kw7DLhDzMbHM0r55O00JAzVBBJR
stripe.pk
=
pk_test_rXUSgU8Kw7DLhDzMbHM0r55O00JAzVBBJR
#
stripe.sk=3ff57yz9S5INBexBOnzi/ZaxClXkXlJ+FZ6XLc/f2vpESScG7YOaQaG2YNRic3HF
stripe.sk
=
3ff57yz9S5INBexBOnzi/ZaxClXkXlJ+FZ6XLc/f2vpESScG7YOaQaG2YNRic3HF
######################outlook的账户公钥密钥#####################
######################outlook的账户公钥密钥#####################
#stripe.pk=pk_test_uljWJWUuD8fzZXPlGtDZ1fxx00o1ZKr7QL
#stripe.pk=pk_test_uljWJWUuD8fzZXPlGtDZ1fxx00o1ZKr7QL
#stripe.sk=BbLXgo+ohgrAP7p3tB52YTqNwhAiTYzYWAX0W+/1PES6kOupxwc/7xpAR8QsG6gP
#stripe.sk=BbLXgo+ohgrAP7p3tB52YTqNwhAiTYzYWAX0W+/1PES6kOupxwc/7xpAR8QsG6gP
...
@@ -54,7 +54,11 @@ express.info.token=d44426bd5b64dd2
...
@@ -54,7 +54,11 @@ express.info.token=d44426bd5b64dd2
#paypal.client.app=AW7u5JVLhzA7_0EznoZ7uKHFzz1_nACOtt6k9oEpbisGUy3nqjjb3L-MmBFnD3YDuMSapcXpfSiYWtiB
#paypal.client.app=AW7u5JVLhzA7_0EznoZ7uKHFzz1_nACOtt6k9oEpbisGUy3nqjjb3L-MmBFnD3YDuMSapcXpfSiYWtiB
#paypal.client.secret=EIyDryMDyM0BDWp2mtuGFdSU2WOkWtmSuGGaRnUiIom7kxuM7JhuSFfETbC8X4e9E_ZbMX4zg4jHA1lV
#paypal.client.secret=EIyDryMDyM0BDWp2mtuGFdSU2WOkWtmSuGGaRnUiIom7kxuM7JhuSFfETbC8X4e9E_ZbMX4zg4jHA1lV
paypal.mode
=
live
paypal.mode
=
live
paypal.client.app
=
AWbyqn1AKJeVvzNsYms_9fs_LVr5_w5Xyt8nX5q0Wmqoq0NYCZf2wyz9DDeA5ArsWx0LFBwl5Oz6amD2
#################################真实######################################################
paypal.client.secret
=
EFhRjCBzhtI1lf88Xiy3VF07gVpu1vWk0VheSP3n5J0fhQxA6Pu7j89dbyYTLj3FxqiJBOlxQRKG_58e
#paypal.client.app=AUUFVT30kPIP-a7dcQfPS8KYdl5cCZIwyYNIS79Cp7E_0GNZWfut3ZHQiRIoamqRstHigMoTTy1n8Glj
paypal.success.url
=
http://127.0.0.1:8083/paypal/success
#paypal.client.secret=EJBVz86f9Mg482bL3lniPtLYe_ULyBkjTS0q-qhZBIVFC3dgae-J7-JJA5iWQAZsQqtAOV_ctVGWNLJS
paypal.cancel.url
=
http://127.0.0.1:8083/paypal/cancel
#################################测试######################################################
\ No newline at end of file
paypal.client.app
=
AW7u5JVLhzA7_0EznoZ7uKHFzz1_nACOtt6k9oEpbisGUy3nqjjb3L-MmBFnD3YDuMSapcXpfSiYWtiB
paypal.client.secret
=
EIyDryMDyM0BDWp2mtuGFdSU2WOkWtmSuGGaRnUiIom7kxuM7JhuSFfETbC8X4e9E_ZbMX4zg4jHA1lV
paypal.success.url
=
http://localhost:8083/zion/paypal/success
paypal.cancel.url
=
http://localhost:8083/zion/paypal/cancel
\ No newline at end of file
src/test/java/com/diaoyun/zion/PayTest.java
浏览文件 @
a562e2f2
package
com
.
diaoyun
.
zion
;
package
com
.
diaoyun
.
zion
;
import
com.diaoyun.zion.master.util.JsoupUtil
;
import
com.egzosn.pay.common.api.PayService
;
import
com.egzosn.pay.common.api.PayService
;
import
com.egzosn.pay.common.bean.CurType
;
import
com.egzosn.pay.common.bean.CurType
;
import
com.egzosn.pay.common.bean.MethodType
;
import
com.egzosn.pay.common.bean.MethodType
;
...
@@ -8,13 +9,18 @@ import com.egzosn.pay.common.http.HttpConfigStorage;
...
@@ -8,13 +9,18 @@ import com.egzosn.pay.common.http.HttpConfigStorage;
import
com.egzosn.pay.paypal.api.PayPalConfigStorage
;
import
com.egzosn.pay.paypal.api.PayPalConfigStorage
;
import
com.egzosn.pay.paypal.api.PayPalPayService
;
import
com.egzosn.pay.paypal.api.PayPalPayService
;
import
com.egzosn.pay.paypal.bean.PayPalTransactionType
;
import
com.egzosn.pay.paypal.bean.PayPalTransactionType
;
import
com.google.gson.JsonArray
;
import
com.google.gson.JsonElement
;
import
com.paypal.api.payments.Links
;
import
com.paypal.api.payments.Links
;
import
net.sf.json.JSONObject
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
java.awt.image.BufferedImage
;
import
java.awt.image.BufferedImage
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.Iterator
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.UUID
;
import
java.util.UUID
;
/**
/**
...
@@ -30,24 +36,32 @@ public class PayTest {
...
@@ -30,24 +36,32 @@ public class PayTest {
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
PayPalConfigStorage
storage
=
new
PayPalConfigStorage
();
PayPalConfigStorage
storage
=
new
PayPalConfigStorage
();
storage
.
setClientID
(
"AW
byqn1AKJeVvzNsYms_9fs_LVr5_w5Xyt8nX5q0Wmqoq0NYCZf2wyz9DDeA5ArsWx0LFBwl5Oz6amD2
"
);
storage
.
setClientID
(
"AW
7u5JVLhzA7_0EznoZ7uKHFzz1_nACOtt6k9oEpbisGUy3nqjjb3L-MmBFnD3YDuMSapcXpfSiYWtiB
"
);
storage
.
setClientSecret
(
"E
FhRjCBzhtI1lf88Xiy3VF07gVpu1vWk0VheSP3n5J0fhQxA6Pu7j89dbyYTLj3FxqiJBOlxQRKG_58e
"
);
storage
.
setClientSecret
(
"E
IyDryMDyM0BDWp2mtuGFdSU2WOkWtmSuGGaRnUiIom7kxuM7JhuSFfETbC8X4e9E_ZbMX4zg4jHA1lV
"
);
//
storage.setTest(true);
storage
.
setTest
(
true
);
//发起付款后的页面转跳地址
//发起付款后的页面转跳地址
storage
.
setReturnUrl
(
"http://
127.0.0.1:8083/pay/success
"
);
storage
.
setReturnUrl
(
"http://
localhost:8083/zion/paypal/success?orderId=d56afd2ab3134dee87b6ba7dc88c4c8c
"
);
//取消按钮转跳地址,这里用异步通知地址的兼容的做法
//取消按钮转跳地址,这里用异步通知地址的兼容的做法
storage
.
setNotifyUrl
(
"http://
127.0.0.1:8083/pay
/cancel"
);
storage
.
setNotifyUrl
(
"http://
localhost:8083/zion/paypal
/cancel"
);
HttpConfigStorage
httpConfigStorage
=
new
HttpConfigStorage
();
HttpConfigStorage
httpConfigStorage
=
new
HttpConfigStorage
();
PayService
service
=
new
PayPalPayService
(
storage
);
PayService
service
=
new
PayPalPayService
(
storage
);
BigDecimal
price
=
new
BigDecimal
(
"500"
);
BigDecimal
price
=
new
BigDecimal
(
"500"
);
PayOrder
order
=
new
PayOrder
(
"Order_payment:"
,
"Order payment"
,
price
,
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
),
PayPalTransactionType
.
sale
);
PayOrder
order
=
new
PayOrder
(
"Order_payment:"
,
"Order payment"
,
price
,
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
),
PayPalTransactionType
.
sale
);
Map
orderInfo
=
service
.
orderInfo
(
order
);
Map
orderInfo
=
service
.
orderInfo
(
order
);
// String payId =(String) orderInfo.get("id");
String
request
=
service
.
buildRequest
(
orderInfo
,
MethodType
.
POST
);
// System.out.println("orderInfo====>>>"+orderInfo);
System
.
out
.
println
(
request
);
// System.out.println("links====>>>"+orderInfo.get("links"));
// String request = service.buildRequest(orderInfo, MethodType.POST);
// System.out.println(request);
// Set set = orderInfo.entrySet();
// Iterator iterator = set.iterator();
// while (iterator.hasNext()){
// System.out.println(iterator.next());
// }
System
.
out
.
println
(
orderInfo
.
get
(
"links"
));
Map
<
String
,
String
>
orderHref
=
JsoupUtil
.
getOrderHref
(
orderInfo
.
toString
());
System
.
out
.
println
(
orderHref
.
get
(
"approval_url"
));
}
}
}
}
张光耀
@zgy
被提及 commit
fec9355f
·
11月 07, 2019
被提及 commit
fec9355f
被提及 commit fec9355f639b302d37d5125ea6b26dfb423395b4
切换提交列表
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论