mitao
2025-05-20 179c4d64313c9b7572778da4aaaf6c6584fe457d
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/unionpay/UnifiedOrder.java
@@ -1,6 +1,8 @@
package com.panzhihua.applets.unionpay;
import com.panzhihua.common.service.community.CommunityService;
import com.panzhihua.common.utlis.DateUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Value;
@@ -37,22 +39,18 @@
 *  测试环境:http://58.247.0.18:29015/v1/netpay/trade/create
 *  生产环境:https://api-mop.chinaums.com/v1/netpay/trade/create
 */
@Slf4j
@Component
public class UnifiedOrder {
    @Value("${umf.notify_url}")
    static String NOTIFYURL;
//    static String url = "https://test-api-open.chinaums.com/v1/netpay/wx/unified-order";
    static String url = "https://api-mop.chinaums.com/v1/netpay/wx/unified-order";
    public static String sendOrder(String totalAmount,String orderDesc,String productId,String OpenId)
    public static String sendOrder(String totalAmount,String orderDesc,String productId,String OpenId,LocalDateTime time,String merOrderId)
    {
        //1. 组建请求报文
        LocalDateTime time=DateUtils.getCurrentDate();
        UnifiedOrderBody reqBody = new UnifiedOrderBody();
        reqBody.requestTimestamp = time.format(DateUtils.format_ymdhms);// "2019-08-09 17:30:55";
        reqBody.merOrderId = UnionpayContent.TOP4+time.format(DateUtils.format_ymdhms_yyyyMMddmmHHssSSS)+makeUUID(7);
        reqBody.merOrderId = merOrderId;
        reqBody.mid = UnionpayContent.MID;
        reqBody.tid = UnionpayContent.TID;
        reqBody.instMid = UnionpayContent.INSTMID;
@@ -60,10 +58,11 @@
        reqBody.secureTransaction = "false";
        reqBody.orderDesc = orderDesc;
        reqBody.productId = productId;
        reqBody.notifyUrl = NOTIFYURL;
        reqBody.notifyUrl = "https://huacheng.psciio.com/api/huacheng-applets/wx/wxNotifyAllUnionpay?merOrderId="+reqBody.merOrderId;
        reqBody.tradeType = "MINI";
        reqBody.subOpenId = OpenId;
        System.out.println("request body:\n"+reqBody);
        log.info("银联支付参数:\n"+reqBody);
        //2. 获取认证报文,timestamp为当前日期,老旧日期无法请求成功
        String authorization = null;