| | |
| | | package com.dsh.account.util; |
| | | |
| | | import cn.hutool.core.util.RandomUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alipay.api.AlipayApiException; |
| | | import com.alipay.api.AlipayClient; |
| | | import com.alipay.api.CertAlipayRequest; |
| | | import com.alipay.api.DefaultAlipayClient; |
| | | import com.alipay.api.domain.AlipayTradeAppPayModel; |
| | | import com.alipay.api.domain.AlipayTradeQueryModel; |
| | | import com.alipay.api.domain.*; |
| | | import com.alipay.api.request.*; |
| | | import com.alipay.api.response.*; |
| | | import com.dsh.account.dto.Receivers; |
| | | import com.dsh.account.entity.OperatorUser; |
| | | import com.dsh.account.feignclient.competition.DeductionCompetitionsClient; |
| | | import com.dsh.account.feignclient.competition.model.PaymentCompetition; |
| | | import com.dsh.account.feignclient.course.CoursePackageClient; |
| | |
| | | import com.dsh.account.feignclient.other.model.SiteBooking; |
| | | import com.dsh.account.mapper.RechargeRecordsMapper; |
| | | import com.dsh.account.util.httpClinet.HttpClientUtil; |
| | | import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingReceiver; |
| | | import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingRequest; |
| | | import com.github.binarywang.wxpay.service.ProfitSharingV3Service; |
| | | import com.github.binarywang.wxpay.service.WxPayService; |
| | | import org.apache.commons.collections.map.HashedMap; |
| | | import org.apache.http.client.methods.CloseableHttpResponse; |
| | | import org.bouncycastle.jce.provider.BouncyCastleProvider; |
| | |
| | | import org.dom4j.DocumentException; |
| | | import org.dom4j.Element; |
| | | import org.dom4j.io.SAXReader; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.stereotype.Component; |
| | |
| | | model.setTotalAmount(amount);//付款金额 |
| | | model.setProductCode("QUICK_MSECURITY_PAY"); |
| | | model.setPassbackParams(passbackParams);//自定义参数 |
| | | |
| | | |
| | | //分账 |
| | | |
| | | Integer coursePackagePayments = coursePackageClient.queryByCode(outTradeNo); |
| | | Integer paymentCompetitions = competitionsClient.queryByCode(outTradeNo); |
| | | Integer siteBookings = siteClient.queryByCode(outTradeNo); |
| | | List<Integer> stores = new ArrayList<>(); |
| | | stores.add(coursePackagePayments); |
| | | stores.add(paymentCompetitions); |
| | | stores.add(siteBookings); |
| | | |
| | | OperatorUser operatorUser = siteClient.queryOperator(stores); |
| | | |
| | | String alipayProportion = operatorUser.getAlipayProportion(); |
| | | String alipayNum = operatorUser.getAlipayNum(); |
| | | |
| | | ExtendParams extendParams = new ExtendParams(); |
| | | // extendParams.setSysServiceProviderId("YOUR_SERVICE_PROVIDER_ID"); |
| | | model.setExtendParams(extendParams); |
| | | |
| | | RoyaltyInfo royaltyInfo = new RoyaltyInfo(); |
| | | // royaltyInfo.setRoyaltyType("transfer"); |
| | | |
| | | RoyaltyDetailInfos royaltyDetailInfo1 = new RoyaltyDetailInfos(); |
| | | royaltyDetailInfo1.setTransOutType("userId"); |
| | | royaltyDetailInfo1.setTransOut(aliAppid); |
| | | royaltyDetailInfo1.setTransInType("loginName"); |
| | | royaltyDetailInfo1.setTransIn("18398968484"); |
| | | |
| | | royaltyDetailInfo1.setDesc("分账描述1"); |
| | | royaltyDetailInfo1.setAmountPercentage(alipayProportion); |
| | | List<RoyaltyDetailInfos> royaltyDetailInfos = new ArrayList<>(); |
| | | |
| | | |
| | | |
| | | |
| | | royaltyInfo.setRoyaltyDetailInfos(royaltyDetailInfos); |
| | | model.setRoyaltyInfo(royaltyInfo); |
| | | |
| | | |
| | | // |
| | | request.setBizModel(model); |
| | | request.setNotifyUrl(callbackPath + notifyUrl); |
| | | try { |
| | |
| | | |
| | | @Resource |
| | | private SiteClient siteClient; |
| | | @Autowired |
| | | private WxPayService wxPayService; |
| | | //分账 |
| | | public ResultUtil order(String code) throws Exception { |
| | | |
| | | |
| | | |
| | | // Integer coursePackagePayments = coursePackageClient.queryByCode(code); |
| | | // Integer paymentCompetitions = competitionsClient.queryByCode(code); |
| | | // Integer siteBookings = siteClient.queryByCode(code); |
| | | Integer coursePackagePayments = coursePackageClient.queryByCode(code); |
| | | Integer paymentCompetitions = competitionsClient.queryByCode(code); |
| | | Integer siteBookings = siteClient.queryByCode(code); |
| | | List<Integer> stores = new ArrayList<>(); |
| | | stores.add(coursePackagePayments); |
| | | stores.add(paymentCompetitions); |
| | | stores.add(siteBookings); |
| | | |
| | | OperatorUser operatorUser = siteClient.queryOperator(stores); |
| | | |
| | | |
| | | WxPayService myWxPayService = wxPayService.switchoverTo("mch_id"); |
| | | |
| | | ProfitSharingV3Service profitSharingV3Service = myWxPayService.getProfitSharingV3Service(); |
| | | |
| | | String nonceStr = RandomUtil.randomString(32); |
| | | String appId = "您的appid"; |
| | | |
| | | |
| | | //添加分账方 |
| | | |
| | | // ProfitSharingReceiver profitSharingReceiver = new ProfitSharingReceiver(); |
| | | // profitSharingReceiver.setAccount("appid对应的openId"); |
| | | // profitSharingReceiver.setAmount(1l); |
| | | // profitSharingReceiver.setAppid(appId); |
| | | // profitSharingReceiver.setType("PERSONAL_OPENID"); |
| | | // profitSharingReceiver.setRelationType("PARTNER"); |
| | | // profitSharingV3Service.addProfitSharingReceiver(profitSharingReceiver); |
| | | |
| | | //分账 |
| | | ProfitSharingRequest profitSharingRequest = new ProfitSharingRequest(); |
| | | profitSharingRequest.setAppid(appId); |
| | | profitSharingRequest.setTransactionId("微信支付订单号"); |
| | | profitSharingRequest.setOutOrderNo("业务系统唯一编号"); |
| | | //分账完成后,剩余金额自动解冻并返回给商户账号,默认false |
| | | profitSharingRequest.setUnfreezeUnsplit(true); |
| | | //待分账金额1元 |
| | | Long money = 1L; |
| | | List<ProfitSharingReceiver> profitSharingReceivers = new ArrayList<>(); |
| | | ProfitSharingReceiver profitSharingReceiver = new ProfitSharingReceiver(); |
| | | profitSharingReceiver.setAccount("appid对应的openId,分账用户1"); |
| | | |
| | | |
| | | //分账百分之5 |
| | | profitSharingReceiver.setAmount(money * 100 / 5); |
| | | profitSharingReceiver.setAppid(appId); |
| | | profitSharingReceiver.setType("PERSONAL_OPENID"); |
| | | profitSharingReceiver.setRelationType("PARTNER"); |
| | | profitSharingReceiver.setDescription("test01"); |
| | | profitSharingReceivers.add(profitSharingReceiver); |
| | | |
| | | ProfitSharingReceiver receiver = new ProfitSharingReceiver(); |
| | | receiver.setAccount("appid对应的openId,分账用户2"); |
| | | //百分之10 |
| | | receiver.setAmount(money * 100 / 10); |
| | | receiver.setAppid(appId); |
| | | receiver.setType("PERSONAL_OPENID"); |
| | | receiver.setRelationType("PARTNER"); |
| | | receiver.setDescription("test02"); |
| | | profitSharingReceivers.add(receiver); |
| | | |
| | | |
| | | profitSharingRequest.setReceivers(profitSharingReceivers); |
| | | |
| | | profitSharingV3Service.profitSharing(profitSharingRequest); |
| | | |
| | | |
| | | |
| | |
| | | // CloseableHttpResponse closeableHttpResponse = HttpClientUtil.setPostHttpRequset(url, body, headers, "application/json"); |
| | | // |
| | | |
| | | return null; |
| | | |
| | | |
| | | |
| | | return ResultUtil.success(); |
| | | |
| | | } |
| | | |