Authored by mali

Merge branch 'dev6.8.1' into gray

package com.yohoufo.order.common;
public enum Payment {
MINIAPP(3, "miniapp", "微信小程序"),
ALIPAY(2, "alipay", "支付宝"),
WECHAT(1, "wechat", "微信");
... ...
... ... @@ -69,7 +69,13 @@ public class WeixinPayConfig {
public static final String PARTNER_UFO_REAL_APP = "1516774631";
public static final String PARTNER_KEY_UFO_REAL_APP = "5f47f0050f5550f16d9262c65a165e0f";
public static final String WECHAT_PAY_UFOREAL_APP_PARTNER_CERT = "/certs/wechatpay/apiclient_cert_ufo_real_app.p12";
public interface Miniapp{
String APP_PARTNER_CERT = "/certs/wechatpay/apiclient_cert_wx_miniapp.p12";
String KEY = PARTNER_KEY_UFO_REAL_APP;
String APPID = "wxc677c88385762287";
String MALL_ID = PARTNER_UFO_REAL_APP;
}
public static final String APP_ID_BLK_PC = "wxd370556ef064789e";
public static final String APP_SECRET_BLK_PC = "xxxxxxxxxxxxxxxxxxxx";
... ...
... ... @@ -70,17 +70,19 @@ public class PaymentController {
@RequestMapping(params = "method=ufo.order.pay")
public ApiResponse pay(@RequestParam(name = "uid") int uid,
@RequestParam(name = "orderCode") long orderCode,
@RequestParam(name = "payment") int payment){
@RequestParam(name = "payment") int payment,
@RequestParam(name = "openid", required = false)String openid){
PaymentRequest request = PaymentRequest.builder().uid(uid).orderCode(orderCode).payment(payment).build();
PaymentRequest request = PaymentRequest.builder().uid(uid).orderCode(orderCode).payment(payment)
.openid(openid).build();
logger.info("method com.yohoufo.order.controller.PaymentController.pay in, request is {}", request);
PrepayResponse paymentResponse = paymentService.payment(request);
if (paymentResponse.getPrepayResult() == PrepayResponse.FAILED){
return new ApiResponse.ApiResponseBuilder().code(PrepayResponse.FAILED).data(paymentResponse.getJsonObj()).message("支付订单失败").build();
return new ApiResponse.ApiResponseBuilder().code(PrepayResponse.FAILED).data(paymentResponse.getJsonObj()).message("预支付失败").build();
}else{
return new ApiResponse.ApiResponseBuilder().code(PrepayResponse.SUCCESS).data(paymentResponse.getJsonObj()).message("支付订单成功").build();
return new ApiResponse.ApiResponseBuilder().code(PrepayResponse.SUCCESS).data(paymentResponse.getJsonObj()).message("预支付成功").build();
}
}
... ...
... ... @@ -24,4 +24,5 @@ public class PaymentRequest {
*/
private double refundAmount;
private String openid;
}
... ...
... ... @@ -31,6 +31,7 @@ import com.yohoufo.order.service.IPaymentService;
import com.yohoufo.order.service.SellerOrderPaymentService;
import com.yohoufo.order.service.pay.AbstractPayService;
import com.yohoufo.order.service.pay.alipay.AlipayOuyinService;
import com.yohoufo.order.service.pay.weixin.WeixinMiniappPayService;
import com.yohoufo.order.service.pay.weixin.WeixinPayUFORealAppService;
import com.yohoufo.order.service.support.codegenerator.OrderCodeGenerator;
import com.yohoufo.order.service.support.codegenerator.bean.CodeMeta;
... ... @@ -89,7 +90,7 @@ public class PaymentServiceImpl implements IPaymentService {
OrdersPayTransferMapper ordersPayTransferMapper;
@Autowired
ManualTransferMapper manualTransferMapper;
WeixinMiniappPayService weixinMiniappPayService;
@Autowired
BuyerOrderMapper buyerOrderMapper;
... ... @@ -120,9 +121,8 @@ public class PaymentServiceImpl implements IPaymentService {
if (codeMeta.getType() == OrderCodeType.BUYER_TYPE.getType()){
paymentService = this.buyerOrderPaymentService;
}else{
}else if(codeMeta.getType() == OrderCodeType.SELLER_TYPE.getType()){
paymentService = this.sellerOrderPaymentService;
}
return paymentService;
... ... @@ -131,7 +131,7 @@ public class PaymentServiceImpl implements IPaymentService {
/**
* 获取支付的主场service
* @param payment
* @param paymentCode
* @return
*/
private AbstractPayService getPayService(int paymentCode){
... ... @@ -146,8 +146,10 @@ public class PaymentServiceImpl implements IPaymentService {
if (payment == Payment.WECHAT){
payService = weixinPayAppService;
}else {
}else if(payment == Payment.ALIPAY){
payService = alipayService;
}else if(payment == Payment.MINIAPP){
payService = weixinMiniappPayService;
}
return payService;
... ... @@ -966,7 +968,8 @@ public class PaymentServiceImpl implements IPaymentService {
// check 订单是否存在
OrderInfo orderInfo = paymentService.getOrderInfo(request.getOrderCode(), request.getUid());
//将openID 附属在 orderinfo上,用于拼接支付URL
orderInfo.setOpenid(request.getOpenid());
// 卖家or买家订单,支付方式更新,返回实付金额
BigDecimal amount = paymentService.checkUpdOrderCodePayment(orderInfo, request);
... ...
package com.yohoufo.order.service.pay.weixin;
import com.yohoufo.common.utils.HttpClient;
import com.yohoufo.order.config.WeixinPayConfig;
import com.yohoufo.order.service.pay.weixin.ssl.WxMiniappHttpSslClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Created by chao.chen on 2018/11/9.
*/
@Service
public class WeixinMiniappPayService extends AbstractWeixinPayService {
@Autowired
private WxMiniappHttpSslClient wxMiniappHttpSslClient;
@Override
protected String getMchId() {
return WeixinPayConfig.Miniapp.MALL_ID;
}
@Override
protected String getMchKey() {
return WeixinPayConfig.Miniapp.KEY;
}
@Override
protected String getAppId() {
return WeixinPayConfig.Miniapp.APPID;
}
@Override
protected String getMchCertPath() {
return WeixinPayConfig.WECHAT_PAY_UFOREAL_APP_PARTNER_CERT;
}
@Override
protected String getTradeType() {
return WeixinPayConfig.TRADE_TYPE_JSAPI;
}
@Override
protected HttpClient getSslHttpClient() {
return wxMiniappHttpSslClient;
}
}
... ...
package com.yohoufo.order.service.pay.weixin.ssl;
import com.yohoufo.order.config.WeixinPayConfig;
import org.springframework.stereotype.Component;
/**
* Created by chao.chen on 2018/11/9.
*/
@Component
public class WxMiniappHttpSslClient extends HttpSslClientAbstract {
@Override
protected String getMchCertPath() {
return WeixinPayConfig.Miniapp.APP_PARTNER_CERT;
}
@Override
protected String getMchCertPassword() {
return WeixinPayConfig.Miniapp.MALL_ID;
}
}
... ...
package com.yohoufo.order.service.support;
import com.yohoufo.common.helper.ImageUrlAssist;
import com.yohoufo.common.utils.BigDecimalHelper;
import com.yohoufo.dal.order.model.SellerOrderGoods;
import com.yohobuy.ufo.model.order.constants.OrderConstant;
import com.yohoufo.order.model.response.GoodsInfo;
... ... @@ -80,8 +81,8 @@ public class ShoppingSupport {
PaymentResponse.PromotionFormula formula3 = new PaymentResponse.PromotionFormula();
formula3.setPromotion(OrderConstant.GOODS_REAL_PRICE);
formula3.setPromotionAmount(OrderConstant.MONEY_SIGN + skup.getGoodsPrice().add(new BigDecimal(delivery_way_sf_cost)));
BigDecimal amount = BigDecimalHelper.halfUp(skup.getGoodsPrice().add(new BigDecimal(delivery_way_sf_cost)));
formula3.setPromotionAmount(OrderConstant.MONEY_SIGN + amount);
return Arrays.asList(formula1, formula2, formula3);
}
... ...