Browse Source

公众号主体信息修改

lianghanqiang 4 years ago
parent
commit
73e07313b4

+ 0 - 1
src/main/java/org/springblade/wx/controller/WXController.java

@@ -53,7 +53,6 @@ public class WXController {
 
 		return JSONObject.parseObject(acString);
 	}
-
 	//获取用户信息
 	private JSONObject userInfo(String ac, String openId){
 		String url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + ac + "&openid=" + openId;

+ 30 - 1
src/main/java/org/springblade/yeePay/controller/YeePayController.java

@@ -1,16 +1,27 @@
 package org.springblade.yeePay.controller;
 
+import cn.hutool.crypto.asymmetric.Sign;
+import cn.hutool.crypto.asymmetric.SignAlgorithm;
+import cn.hutool.crypto.digest.DigestAlgorithm;
+import cn.hutool.crypto.digest.Digester;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springblade.core.tool.api.R;
+import org.springblade.pay.utils.SHA1;
+import org.springblade.yeePay.entity.ConfigAppDto;
 import org.springblade.yeePay.entity.InitOrderDto;
 import org.springblade.yeePay.service.YeePayService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
+import java.nio.charset.StandardCharsets;
+
 @RestController
 @RequestMapping("/yeePay")
 @Api(tags = "易宝支付模块")
+@Validated
 public class YeePayController {
 
 	@Autowired
@@ -22,7 +33,25 @@ public class YeePayController {
 	 * @param initOrderDto 下单信息
 	 */
 	@PostMapping("initOrder")
-	public R initOrder(@RequestBody @Validated InitOrderDto initOrderDto){
+	@ApiOperation("统一下单接口")
+	public R initOrder(@RequestBody @Valid InitOrderDto initOrderDto){
 		return R.status(yeePayService.initOrder(initOrderDto));
 	}
+
+	/**
+	 * 公众号配置接口
+	 * @param appIdList 公众号配置信息
+	 */
+	@PostMapping("configApp")
+	@ApiOperation("公众号配置接口")
+	public R configApp(@RequestBody @Valid ConfigAppDto [] appIdList){
+
+		return R.status(yeePayService.configApp(appIdList));
+	}
+
+	public static void main(String[] args) {
+		Digester sha1 = new Digester(DigestAlgorithm.SHA1);
+		String sign1 = sha1.digestHex("jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=1414587457&url=http://mp.weixin.qq.com?params=value");
+		System.out.println(sign1);
+	}
 }

+ 25 - 0
src/main/java/org/springblade/yeePay/entity/ConfigAppDto.java

@@ -0,0 +1,25 @@
+package org.springblade.yeePay.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+import javax.validation.constraints.NotBlank;
+
+
+
+@Data
+@Builder
+public class ConfigAppDto {
+		@NotBlank
+		@ApiModelProperty(value = "公众号ID",required = true)
+		String appId;
+		@NotBlank
+		@ApiModelProperty(value = "公众号秘钥",required = true)
+		String appSecret;
+		@NotBlank
+		@ApiModelProperty(value = "appID类型,填写:OFFICIAL_ACCOUNT",required = true)
+		String appIdType ;
+		@NotBlank
+		@ApiModelProperty(value = "推荐关注的公众号ID",required = true)
+		String subscribeAppId;
+}

+ 35 - 11
src/main/java/org/springblade/yeePay/entity/InitOrderDto.java

@@ -4,44 +4,68 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Builder;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 @Data
 @Builder
 public class InitOrderDto {
-	@NotNull
-	@ApiModelProperty("商户订单号,保证订单唯一性")
+	@NotBlank
+	@ApiModelProperty(value = "商户订单号,保证订单唯一性", required = true)
 	String orderId;
-	@ApiModelProperty("订单金额,单位: 元, 两位小数, 最低 0.01")
+
+	@ApiModelProperty(value = "订单金额,单位: 元, 两位小数, 最低 0.01", required = true)
 	@NotNull
 	Double orderAmount;
+
 	@ApiModelProperty("订单截止时间: 格式: yyyy-MM-dd HH:mm:ss 不传默认一天")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
 	String expiredTime;
+
+	@NotBlank
+	@ApiModelProperty(value = "支付成功服务器回调地址", required = true)
 	String notifyUrl;
+
+	@ApiModelProperty("页面回调地址。如使用易宝收银台需要上送前端页面回调地址")
 	String redirectUrl;
+
+	@ApiModelProperty("自定义对账备注;商户可以自定义自身业务需要使用的字段: 如对账时定义该订单应属的会计科目")
 	String memo;
-	@NotNull
-	@ApiModelProperty("商品名称")
+
+	@NotBlank
+	@ApiModelProperty(value = "商品名称", required = true)
 	String goodsName;
+
+	@ApiModelProperty("分账订单标记,DELAY_SETTLE:需要分账;REAL_TIME:不需要分账,示例值:REAL_TIME")
 	String fundProcessType;
-	@NotNull
-	@ApiModelProperty("支付方式类型: USER_SCAN:用户扫码 ;MINI_PROGRAM:小程序支付 ; WECHAT_OFFIACCOUNT:微信公众号 ;ALIPAY_LIFE:支付宝生活号 ;JS_PAY:JS支付 ;SDK_PAY:SDK支付 ;H5_PAY:H5支付")
+
+	@NotBlank
+	@ApiModelProperty(value = "支付方式类型: USER_SCAN:用户扫码 ;MINI_PROGRAM:小程序支付 ; WECHAT_OFFIACCOUNT:微信公众号 ;ALIPAY_LIFE:支付宝生活号 ;JS_PAY:JS支付 ;SDK_PAY:SDK支付 ;H5_PAY:H5支付", required = true)
 	String payWay;
-	@NotNull
-	@ApiModelProperty("渠道类型 : WECHAT:微信 ; ALIPAY:支付宝 ;UNIONPAY:银联云闪付")
+
+	@NotBlank
+	@ApiModelProperty(value = "渠道类型 : WECHAT:微信 ; ALIPAY:支付宝 ;UNIONPAY:银联云闪付", required = true)
 	String channel;
+
 	@ApiModelProperty("场景: ONLINE:线上 ; OFFLINE:线下 ; BAOXIAN:保险 ; 渠道类型为银联时,不必传")
 	String scene;
+
 	@ApiModelProperty("支付渠道为微信时需要提供用户的openId")
 	String userId;
-	@NotNull
-	@ApiModelProperty("用户的真实IP地址")
+
+	@NotBlank
+	@ApiModelProperty(value = "用户的真实IP地址", required = true)
 	String userIp;
+
 	String channelSpecifiedInfo;
+
 	String channelPromotionInfo;
+
 	String uniqueOrderNo;
+
 	String csUrl;
+
 	@ApiModelProperty("支付渠道为微信时需要提供appID")
 	String appId;
 }

+ 27 - 23
src/main/java/org/springblade/yeePay/service/YeePayService.java

@@ -1,5 +1,6 @@
 package org.springblade.yeePay.service;
 
+import com.alibaba.fastjson.JSON;
 import com.yeepay.yop.sdk.exception.YopClientException;
 import com.yeepay.yop.sdk.service.common.YopClient;
 import com.yeepay.yop.sdk.service.common.YopClientBuilder;
@@ -8,12 +9,12 @@ import com.yeepay.yop.sdk.service.common.response.YopResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.wx.config.WXConfiger;
 import org.springblade.yeePay.common.YeePayConst;
+import org.springblade.yeePay.entity.ConfigAppDto;
 import org.springblade.yeePay.entity.InitOrderDto;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.Arrays;
-import java.util.Optional;
 
 @Service
 @Slf4j
@@ -26,25 +27,20 @@ public class YeePayService {
 
 	/**
 	 *	易宝 公众号配置
-	 **/
-	public void configApp() {
+	 * @param appIdList
+	 * @return*/
+	public boolean configApp(ConfigAppDto[] appIdList) {
 		YopRequest request = new YopRequest("/rest/v2.0/aggpay/wechat-config/add", "POST");
-		request.addParameter("parentMerchantNo","APPIDapp_10086062555");
-		request.addParameter("merchantNo","APPIDapp_10086062555");
-		request.addParameter("appIdList","[\n" +
-			"    {\n" +
-			"        \"appId\":\""+wxConfiger.getAppId()+"\",\n" +
-			"        \"appSecret\":\"appSecret\",\n" +
-			"        \"appIdType\":\"OFFICIAL_ACCOUNT\",\n" +
-			"        \"subscribeAppId\":\"subscribeAppId\"\n" +
-			"    }\n" +
-			"]");
+		request.addParameter("parentMerchantNo",yeePayConst.getParentMerchantNo());
+		request.addParameter("merchantNo",yeePayConst.getMerchantNo());
+		request.addParameter("appIdList", JSON.toJSONString(appIdList));
 		try {
 			YopResponse response = yopClient.request(request);
 			System.out.println(response);
 		} catch (YopClientException e) {
 			e.printStackTrace();
 		}
+		return false;
 	}
 
 	/**
@@ -56,11 +52,28 @@ public class YeePayService {
 		YopRequest request = new YopRequest("/rest/v1.0/aggpay/pre-pay", "POST");
 		request.addParameter("parentMerchantNo",yeePayConst.getParentMerchantNo());
 		request.addParameter("merchantNo",yeePayConst.getMerchantNo());
+		addParamsFromObj(initOrderDto,request);
+		YopResponse response = null;
+		try {
+			response = yopClient.request(request);
+		} catch (YopClientException e) {
+			e.printStackTrace();
+		}
+		return false;
+	}
+
+
+	/**
+	 * 	添加请求参数
+	 * @param obj 请求所需DTO对象
+	 * @param request 所需添加参数请求
+	 * */
+	private void addParamsFromObj(Object obj,YopRequest request){
 		Arrays.stream(InitOrderDto.class.getDeclaredFields())
 			.forEach(field -> {
 					field.setAccessible(true);
 					try {
-						String paramValue = field.get(initOrderDto).toString();
+						String paramValue = field.get(obj).toString();
 						if(paramValue!=null&!"".equals(paramValue)){
 							request.addParameter(field.getName(),paramValue);
 						}
@@ -69,16 +82,7 @@ public class YeePayService {
 					}
 				}
 			);
-		YopResponse response = null;
-		try {
-			response = yopClient.request(request);
-		} catch (YopClientException e) {
-			e.printStackTrace();
-		}
-		return false;
 	}
 	public static void main(String[] args) {
-		YeePayService	yeePayService = new YeePayService();
-		yeePayService.configApp();
 	}
 }

+ 2 - 2
src/main/resources/application-dev.yml

@@ -13,9 +13,9 @@ spring:
     #  commandTimeout: 5000
   datasource:
     # MySql
-    url: jdbc:mysql://localhost:3306/guosen_ldt?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
+    url: jdbc:mysql://192.168.1.168:3306/guosen_ldt?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
     username: root
-    password: 123456
+    password: root
     # PostgreSQL
     #url: jdbc:postgresql://127.0.0.1:5432/bladex_boot
     #username: postgres

+ 2 - 2
src/main/resources/payConfig.properties

@@ -10,5 +10,5 @@ pay.payUrl = https://api.dinpay.com/gateway/api/pay
 pay.secret = MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMk5bBLo0tZ3JYVU77/Bl1FASG60/5lPf1QrserbVGYGsl4aafE44dV0vcVzsP699hLhUgkM2gtsk9+J33NmYMZ/bIJFDHDojGSv/gtXBAaG2uEV66HWDcIW2DkJ3vJCfTu0G4s3q8Ufn5TM4mp61ysUzclcVwNjqtnovJuS6DSvAgMBAAECgYAWOG4TxHwLzMpq5881yKXyBfw5pWkYP+wamlyiR6gRQCoQNDCAv7xIewS9uiHQb5+txA3wC+hEHLBTngD72FFVR+j+c67256W7F0fTYBxHu3Ip5RKMwmYXZbv4R1izySZ5VmnuJJu/RAChTmLynGK1JyWxdtmxJ/obUL48JlQc4QJBAO8i7+cLia5vDjsh25o8fnQFWy+dujOXpyM6zctl5jo4Q+Oy92ou2LwUi0+GKENh6hQJ3zy4kpGDk7SIJ3+k1FECQQDXahFDq7POqXZmCpvppUKJ1ctCXdQ3Wtbc/4KLTitX4vclXej/wgxXGGE3T7N4vyqCqcl9Wpf0vVrVB6yMFzj/AkEA1NA/tVr0PTMB9CfOefVKB9BYdQimE5HroROM320gtUErUbEMNAfaw454592ZaVXy7cBXVX9gmHUC9s+Qbyzt8QJBAKYO3Ro2jdj9aAlHmmNmA0IwLo2NuV+mxkX9LkxnSSBqFa2XlFs84rhtUdwKs8acT5AEhQ/+O2/uXMwmK0yfRk8CQA2y5vDglr+VwMTLbggH3oDjv/xgnNLyAr5hiikFWAQ8jH9uuPoM00O910xDAysjoZx8q9uhf4lp0o927WLfqdo=
 
 
-yee-pay.parentMerchantNo = 10086062555
-yee-pay.merchantNo = 10086062555
+yee-pay.parentMerchantNo = 10086066206
+yee-pay.merchantNo = 10086066206

+ 4 - 0
src/main/resources/wxConfig.properties

@@ -2,6 +2,10 @@
 #wx.appId = wx7e7a38f071b360e9
 #wx.appSecret = 4e862f91b48ac85a91380fa0991c9fda
 
+#guoxin
+#wx.appId = wx6dacff40877a1b1a
+#wx.appSecret = eac73798c4c509e43dc7cb475de82f4d
+
 
 # 音乐之声
 wx.appId = wxf3f84c916a741cac