万圣节支付完成添加活动次数

master
james.zhao 6 years ago
parent 3760a13d94
commit 403b31ef33

@ -0,0 +1,105 @@
package au.com.royalpay.payment.manage.customers.core.impls;
import au.com.royalpay.payment.core.events.AfterPaymentFinishEvent;
import au.com.royalpay.payment.manage.mappers.system.CustomerMapper;
import cn.yixblog.platform.http.HttpRequestGenerator;
import cn.yixblog.platform.http.HttpRequestResult;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.codec.digest.DigestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.util.UriComponentsBuilder;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
@Service
public class CustomerHalloweenCountServiceImpl implements ApplicationListener<AfterPaymentFinishEvent> {
private Logger logger = LoggerFactory.getLogger(getClass());
@Value("${app.customer.host}")
private String CUSTOMER_HOST;
@Value("${customer.app.appid}")
private String CUSTOMER_APP_ID;
@Value("${customer.app.auth-code}")
private String CUSTOMER_AUTH_CODE;
@Resource
private CustomerMapper customerMapper;
@Override
public void onApplicationEvent(AfterPaymentFinishEvent event) {
final JSONObject order = event.getFinishedEvent().getOrder();
//判断是否是pine测试商户若不是则判断是否在活动时间
if (order.getIntValue("client_id") != 9) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date newDay = new Date();
try {
if (newDay.compareTo(sdf.parse("2018-10-31 00:00:00")) < 0) {
return;
}
if (newDay.compareTo(sdf.parse("2018-11-02 00:00:00")) > 0) {
return;
}
} catch (ParseException e) {
}
}
BigDecimal clearAmount = event.getFinishedEvent().getAudFee();
String channel = order.getString("channel");
if ("Wechat".equals(channel)) {
JSONObject customerRelation = customerMapper.findCustomerByOpenId(order.getString("customer_id"));
if (customerRelation == null) {
customerRelation = customerMapper.findCustomerGlobalpayByOpenId(order.getString("customer_id"));
}
if (customerRelation.getString("kanga_openid") == null) {
return;
}
afterPaymentAddHalloweenCount(customerRelation.getString("kanga_openid"), order.getString("order_id"), customerRelation.getString("redpack_openid"),channel, clearAmount);
}
if ("Alipay".equals(channel)) {
afterPaymentAddHalloweenCount(order.getString("customer_id"), order.getString("order_id"), "alipay",channel, clearAmount);
}
}
private void afterPaymentAddHalloweenCount(String id, String orderId,String redPackId, String channel, BigDecimal clearAmount) {
String timestamp = System.currentTimeMillis() + "";
String base = CUSTOMER_APP_ID + timestamp + CUSTOMER_AUTH_CODE;
String sign = DigestUtils.sha256Hex(base).toLowerCase();
String uri = UriComponentsBuilder.fromHttpUrl(CUSTOMER_HOST + "activity/halloween/payment/orders")
.queryParam("appid", CUSTOMER_APP_ID)
.queryParam("timestamp", timestamp)
.queryParam("sign", sign)
.queryParam("id", id)
.queryParam("orderId", orderId)
.queryParam("channel", channel)
.queryParam("amount", clearAmount)
.queryParam("redpackId", redPackId)
.toUriString();
if(clearAmount.compareTo(new BigDecimal("1.99"))<0){
return;
}
HttpRequestGenerator gen = new HttpRequestGenerator(uri, RequestMethod.POST);
try {
HttpRequestResult result = gen.execute();
if (result.isSuccess()) {
int statusCode = result.getStatusCode();
if (statusCode == 200) {
logger.info("万圣节活动次数添加成功");
}
}
} catch (Exception ignored) {
ignored.printStackTrace();
}
}
}
Loading…
Cancel
Save