Browse Source

更新阿里云物流和微信分账

master
HY 4 months ago
parent
commit
99d8adfd0b
27 changed files with 1623 additions and 98 deletions
  1. +258
    -0
      admin-hanhai-vue/src/views/system/HotelBalanceLogList2.vue
  2. BIN
      apiclient_cert.p12
  3. +9
    -9
      han-hai-module-pay/han-hai-module-pay.iml
  4. +2
    -0
      han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java
  5. +29
    -5
      jeecg-boot-base/jeecg-boot-base-api/jeecg-boot-base-api.iml
  6. +32
    -7
      jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/jeecg-system-cloud-api.iml
  7. +32
    -6
      jeecg-boot-base/jeecg-boot-base-api/jeecg-system-local-api/jeecg-system-local-api.iml
  8. +32
    -6
      jeecg-boot-base/jeecg-boot-base-core/jeecg-boot-base-core.iml
  9. +75
    -0
      jeecg-boot-base/jeecg-boot-base-core/pom.xml
  10. +192
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/HttpRequestUtil.java
  11. +28
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MoneyUtil.java
  12. +122
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/VechatPayV3Util.java
  13. +164
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/pay/WeChatPayConfig2.java
  14. +181
    -6
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelbalancelog/controller/HotelBalanceLogController.java
  15. +4
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelbalancelog/entity/HotelBalanceLog.java
  16. +21
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelbalancelog/req/AuditReq.java
  17. +25
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelbalancelog/req/TransferBatchesDetailsRequest.java
  18. +43
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelbalancelog/req/TransferBatchesRequest.java
  19. +27
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelbalancelog/resp/TransferBatchesResp.java
  20. +37
    -13
      jeecg-boot-module-system/jeecg-boot-module-system.iml
  21. +5
    -1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/order/req/QueryLogisticsReq.java
  22. +83
    -39
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/order/service/impl/OrderServiceImpl.java
  23. +3
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/shop/service/impl/ShopServiceImpl.java
  24. +40
    -1
      jeecg-boot-module-system/src/main/resources/application-dev.yml
  25. +44
    -1
      jeecg-boot-module-system/src/main/resources/application-prod.yml
  26. +51
    -1
      jeecg-boot-module-system/src/main/resources/application-test.yml
  27. +84
    -3
      pom.xml

+ 258
- 0
admin-hanhai-vue/src/views/system/HotelBalanceLogList2.vue View File

@ -0,0 +1,258 @@
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="12">
<a-form-item label="用户编号">
<a-input placeholder="请输入用户编号" v-model="queryParam.userId"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="12">
<a-form-item label="交易类型">
<j-dict-select-tag dict-code="balance_type" placeholder="请选择交易类型" v-model="queryParam.type"></j-dict-select-tag>
</a-form-item>
</a-col>
<a-col :md="6" :sm="12">
<a-form-item label="状态">
<j-dict-select-tag dict-code="balance_status" placeholder="请选择状态" v-model="queryParam.status"></j-dict-select-tag>
</a-form-item>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<!-- <a-button type="primary" icon="download" @click="handleExportXls('hotel_balance_log')">导出</a-button>-->
<!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
<!-- <a-button type="primary" icon="import">导入</a-button>-->
<!-- </a-upload>-->
<!-- 高级查询区域 -->
<!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>-->
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text,record">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="downloadFile(text)">
下载
</a-button>
</template>
<span slot="action" slot-scope="text, record">
<!-- <a @click="handleEdit(record)">编辑</a>-->
<div v-if="record.status === 0">
<a @click="handleAudit(record,0)">审核通过</a>
<a-divider type="vertical" />
<a @click="handleAudit(record,1)">审核不通过</a>
</div>
<div v-if="record.status === 1">
<a @click="handleWithdrawal(record)">打款</a>
</div>
<a-dropdown>
<a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
<a-menu slot="overlay">
<a-menu-item>
<a @click="handleDetail(record)">详情</a>
</a-menu-item>
<!-- <a-menu-item>-->
<!-- <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">-->
<!-- <a>删除</a>-->
<!-- </a-popconfirm>-->
<!-- </a-menu-item>-->
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<hotel-balance-log-modal ref="modalForm" @ok="modalFormOk"></hotel-balance-log-modal>
</a-card>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import HotelBalanceLogModal from './modules/HotelBalanceLogModal'
import { httpAction, getAction } from '@/api/manage'
export default {
name: 'HotelBalanceLogList',
mixins:[JeecgListMixin, mixinDevice],
components: {
HotelBalanceLogModal
},
data () {
return {
description: 'hotel_balance_log管理页面',
//
columns: [
{
title: '#',
dataIndex: '',
key:'rowIndex',
width:60,
align:"center",
customRender:function (t,r,index) {
return parseInt(index)+1;
}
},
{
title:'用户编号',
align:"center",
dataIndex: 'userId'
},
{
title:'余额',
align:"center",
dataIndex: 'balance'
},
{
title:'用户余额',
align:"center",
dataIndex: 'userBalance'
},
{
title:'类型',
align:"center",
dataIndex: 'type_dictText'
},
{
title:'状态',
align:"center",
dataIndex: 'status_dictText'
},
{
title:'是否删除',
align:"center",
dataIndex: 'delFlag_dictText'
},
{
title: '操作',
dataIndex: 'action',
align:"center",
fixed:"right",
width:147,
scopedSlots: { customRender: 'action' }
}
],
url: {
list: "/hotelbalancelog/hotelBalanceLog/list2",
delete: "/hotelbalancelog/hotelBalanceLog/delete",
deleteBatch: "/hotelbalancelog/hotelBalanceLog/deleteBatch",
exportXlsUrl: "/hotelbalancelog/hotelBalanceLog/exportXls",
importExcelUrl: "hotelbalancelog/hotelBalanceLog/importExcel",
auditUrl: "/hotelbalancelog/hotelBalanceLog/audit",
withdrawalUrl: "/hotelbalancelog/hotelBalanceLog/withdrawal"
},
dictOptions:{},
superFieldList:[],
}
},
created() {
this.getSuperFieldList();
},
computed: {
importExcelUrl: function(){
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
},
},
methods: {
initDictConfig(){
},
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'userId',text:'用户id',dictCode:''})
fieldList.push({type:'BigDecimal',value:'balance',text:'余额',dictCode:''})
// fieldList.push({type:'BigDecimal',value:'userBalance',text:'',dictCode:''})
// fieldList.push({type:'int',value:'type',text:' 0 1',dictCode:''})
// fieldList.push({type:'int',value:'status',text:' 0 1 2 3',dictCode:''})
// fieldList.push({type:'int',value:'delFlag',text:' 0 1',dictCode:''})
this.superFieldList = fieldList
},
handleAudit(obj,e){
let param = {
id: obj.id,
audit: e
}
httpAction(this.url.auditUrl,param,'POST').then((res)=>{
if(res.success){
this.$message.success(res.message);
this.loadData();
}else{
this.$message.warning(res.message);
}
})
},
handleWithdrawal(obj){
let param = {
id: obj.id
}
httpAction(this.url.withdrawalUrl,param,"POST").then((res)=>{
if(res.success){
this.$message.success(res.message);
this.loadData();
}else{
this.$message.warning(res.message);
}
})
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>

BIN
apiclient_cert.p12 View File


+ 9
- 9
han-hai-module-pay/han-hai-module-pay.iml View File

@ -51,12 +51,12 @@
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.18" level="project" />
<orderEntry type="library" name="Maven: com.alipay.sdk:alipay-sdk-java:4.11.33.ALL" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.62" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.59" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:4.5.3" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.9" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.3" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.15" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.10" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.jacoco:org.jacoco.agent:runtime:0.8.5" level="project" />
@ -65,12 +65,12 @@
<orderEntry type="library" name="Maven: io.opentracing:opentracing-api:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-util:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-noop:0.33.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-pay:3.5.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-common:3.5.0" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.11" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-pay:3.7.3.B" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-common:3.7.3.B" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.11.1" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.3" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.36" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.5" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:29.0-jre" level="project" />
@ -90,8 +90,8 @@
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.59" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-miniapp:3.5.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-mp:3.5.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-miniapp:3.7.3.B" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-mp:3.7.3.B" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.6.6" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.6.6" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.6.6" level="project" />


+ 2
- 0
han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java View File

@ -140,6 +140,8 @@ public class MpWxPayService {
public Object createUserOrder(String productName, String clientIp,
String productId, Integer price, String orderNo,
String openId, String body){
WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest();
request.setDeviceInfo("WEB"); //设备号
request.setTradeType("JSAPI"); //交易类型


+ 29
- 5
jeecg-boot-base/jeecg-boot-base-api/jeecg-boot-base-api.iml View File

@ -28,8 +28,6 @@
<orderEntry type="library" name="Maven: cn.hutool:hutool-core:5.3.8" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-crypto:5.3.8" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.6.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.2" level="project" />
@ -137,7 +135,6 @@
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.22" level="project" />
<orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-annotations:2.1.2" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:3.0.0" level="project" />
@ -190,8 +187,6 @@
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-dysmsapi:2.1.0" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.9" level="project" />
<orderEntry type="library" name="Maven: com.aliyun.oss:aliyun-sdk-oss:3.11.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.15" level="project" />
<orderEntry type="library" name="Maven: org.jdom:jdom2:2.0.6.1" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jettison:jettison:1.1" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
@ -214,6 +209,35 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-kotlin:2.13.2" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-reflect:1.6.10" level="project" />
<orderEntry type="library" name="Maven: bouncycastle:bcprov-jdk14:138" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:converter-simplexml:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:retrofit:2.3.0" level="project" />
<orderEntry type="library" name="Maven: org.simpleframework:simple-xml:2.7.1" level="project" />
<orderEntry type="library" name="Maven: stax:stax:1.2.0" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3:1.1.3.3" level="project" />
<orderEntry type="library" name="Maven: javax.ws.rs:javax.ws.rs-api:2.1.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-client:2.23.2" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-common:2.35" level="project" />
<orderEntry type="library" name="Maven: jakarta.ws.rs:jakarta.ws.rs-api:2.1.6" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:jakarta.inject:2.6.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:osgi-resource-locator:1.0.3" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-api:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-utils:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:javax.inject:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-locator:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.connectors:jersey-apache-connector:2.23.2" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.59" level="project" />
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.2.3" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.8.0" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.5.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.3" level="project" />
<orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.10" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.6.6" level="project" />


+ 32
- 7
jeecg-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/jeecg-system-cloud-api.iml View File

@ -10,7 +10,9 @@
<configuration>
<setting name="validation-enabled" value="true" />
<setting name="provider-name" value="Hibernate" />
<datasource-mapping />
<datasource-mapping>
<factory-entry name="jeecg-system-cloud-api" />
</datasource-mapping>
<naming-strategy-map />
</configuration>
</facet>
@ -32,7 +34,6 @@
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:3.1.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.10.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.68" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.68" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-openfeign-core:3.1.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.6.6" level="project" />
<orderEntry type="library" name="Maven: io.github.openfeign.form:feign-form-spring:3.8.0" level="project" />
@ -65,8 +66,6 @@
<orderEntry type="library" name="Maven: cn.hutool:hutool-core:5.3.8" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-crypto:5.3.8" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.6.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.2" level="project" />
@ -170,7 +169,6 @@
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.22" level="project" />
<orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-annotations:2.1.2" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:3.0.0" level="project" />
@ -223,8 +221,6 @@
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-dysmsapi:2.1.0" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.9" level="project" />
<orderEntry type="library" name="Maven: com.aliyun.oss:aliyun-sdk-oss:3.11.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.15" level="project" />
<orderEntry type="library" name="Maven: org.jdom:jdom2:2.0.6.1" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jettison:jettison:1.1" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
@ -247,6 +243,35 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-kotlin:2.13.2" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-reflect:1.6.10" level="project" />
<orderEntry type="library" name="Maven: bouncycastle:bcprov-jdk14:138" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:converter-simplexml:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:retrofit:2.3.0" level="project" />
<orderEntry type="library" name="Maven: org.simpleframework:simple-xml:2.7.1" level="project" />
<orderEntry type="library" name="Maven: stax:stax:1.2.0" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3:1.1.3.3" level="project" />
<orderEntry type="library" name="Maven: javax.ws.rs:javax.ws.rs-api:2.1.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-client:2.23.2" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-common:2.35" level="project" />
<orderEntry type="library" name="Maven: jakarta.ws.rs:jakarta.ws.rs-api:2.1.6" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:jakarta.inject:2.6.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:osgi-resource-locator:1.0.3" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-api:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-utils:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:javax.inject:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-locator:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.connectors:jersey-apache-connector:2.23.2" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.59" level="project" />
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.2.3" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.8.0" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.5.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.3" level="project" />
<orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.10" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.6.6" level="project" />


+ 32
- 6
jeecg-boot-base/jeecg-boot-base-api/jeecg-system-local-api/jeecg-system-local-api.iml View File

@ -10,7 +10,9 @@
<configuration>
<setting name="validation-enabled" value="true" />
<setting name="provider-name" value="Hibernate" />
<datasource-mapping />
<datasource-mapping>
<factory-entry name="jeecg-system-local-api" />
</datasource-mapping>
<naming-strategy-map />
</configuration>
</facet>
@ -47,8 +49,6 @@
<orderEntry type="library" name="Maven: cn.hutool:hutool-core:5.3.8" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-crypto:5.3.8" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.6.6" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.2" level="project" />
@ -156,7 +156,6 @@
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.22" level="project" />
<orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-annotations:2.1.2" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:3.0.0" level="project" />
@ -209,8 +208,6 @@
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-dysmsapi:2.1.0" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.9" level="project" />
<orderEntry type="library" name="Maven: com.aliyun.oss:aliyun-sdk-oss:3.11.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.15" level="project" />
<orderEntry type="library" name="Maven: org.jdom:jdom2:2.0.6.1" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jettison:jettison:1.1" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
@ -233,6 +230,35 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-kotlin:2.13.2" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-reflect:1.6.10" level="project" />
<orderEntry type="library" name="Maven: bouncycastle:bcprov-jdk14:138" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:converter-simplexml:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:retrofit:2.3.0" level="project" />
<orderEntry type="library" name="Maven: org.simpleframework:simple-xml:2.7.1" level="project" />
<orderEntry type="library" name="Maven: stax:stax:1.2.0" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3:1.1.3.3" level="project" />
<orderEntry type="library" name="Maven: javax.ws.rs:javax.ws.rs-api:2.1.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-client:2.23.2" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-common:2.35" level="project" />
<orderEntry type="library" name="Maven: jakarta.ws.rs:jakarta.ws.rs-api:2.1.6" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:jakarta.inject:2.6.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:osgi-resource-locator:1.0.3" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-api:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-utils:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:javax.inject:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-locator:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.connectors:jersey-apache-connector:2.23.2" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.59" level="project" />
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.2.3" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.8.0" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.5.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.3" level="project" />
<orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.10" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.6.6" level="project" />


+ 32
- 6
jeecg-boot-base/jeecg-boot-base-core/jeecg-boot-base-core.iml View File

@ -10,7 +10,9 @@
<configuration>
<setting name="validation-enabled" value="true" />
<setting name="provider-name" value="Hibernate" />
<datasource-mapping />
<datasource-mapping>
<factory-entry name="jeecg-boot-base-core" />
</datasource-mapping>
<naming-strategy-map />
</configuration>
</facet>
@ -47,8 +49,6 @@
<orderEntry type="library" name="Maven: cn.hutool:hutool-core:5.3.8" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-crypto:5.3.8" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.6.6" level="project" />
@ -166,7 +166,6 @@
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.22" level="project" />
<orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-annotations:2.1.2" level="project" />
<orderEntry type="library" name="Maven: com.github.xiaoymin:knife4j-core:3.0.3" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.25.0-GA" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:3.0.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:3.0.0" level="project" />
@ -219,8 +218,6 @@
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-dysmsapi:2.1.0" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.9" level="project" />
<orderEntry type="library" name="Maven: com.aliyun.oss:aliyun-sdk-oss:3.11.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.15" level="project" />
<orderEntry type="library" name="Maven: org.jdom:jdom2:2.0.6.1" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jettison:jettison:1.1" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
@ -243,6 +240,35 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-kotlin:2.13.2" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-reflect:1.6.10" level="project" />
<orderEntry type="library" name="Maven: bouncycastle:bcprov-jdk14:138" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:converter-simplexml:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:retrofit:2.3.0" level="project" />
<orderEntry type="library" name="Maven: org.simpleframework:simple-xml:2.7.1" level="project" />
<orderEntry type="library" name="Maven: stax:stax:1.2.0" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3:1.1.3.3" level="project" />
<orderEntry type="library" name="Maven: javax.ws.rs:javax.ws.rs-api:2.1.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-client:2.23.2" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-common:2.35" level="project" />
<orderEntry type="library" name="Maven: jakarta.ws.rs:jakarta.ws.rs-api:2.1.6" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:jakarta.inject:2.6.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:osgi-resource-locator:1.0.3" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-api:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-utils:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:javax.inject:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-locator:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.connectors:jersey-apache-connector:2.23.2" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.59" level="project" />
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.2.3" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.8.0" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.5.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.3" level="project" />
<orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.10" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.6.6" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.6.6" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.6.6" level="project" />


+ 75
- 0
jeecg-boot-base/jeecg-boot-base-core/pom.xml View File

@ -261,6 +261,81 @@
<scope>compile</scope>
</dependency>
<!--pay-->
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>converter-simplexml</artifactId>
<version>${converter-simplexml.version}</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>${javax.ws.rs-api.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey-client.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.connectors</groupId>
<artifactId>jersey-apache-connector</artifactId>
<version>${jersey-apache-connector.version}</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>${bcprov-jdk15on.version}</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>${json-lib.version}</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>logging-interceptor</artifactId>
<version>${logging-interceptor.version}</version>
</dependency>
<dependency>
<groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-apache-httpclient</artifactId>
<version>${wechatpay-apache-httpclientd.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${httpclient.version}</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>${commons-httpclient.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>${httpcore.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>${httpmime.version}</version>
</dependency>
</dependencies>


+ 192
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/HttpRequestUtil.java View File

@ -0,0 +1,192 @@
package org.jeecg.common.util;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.net.URLDecoder;
/**
* Created by null on 2017/2/23.
*/
@Slf4j
public class HttpRequestUtil {
private static Logger logger = LoggerFactory.getLogger(HttpRequestUtil.class); //日志记录
/**
* post请求
* @param url url地址
* @param jsonParam 参数
* @return
*/
public static String post(String url,String jsonParam){
//post请求返回结果
DefaultHttpClient httpClient = new DefaultHttpClient();
String jsonResult = null;
HttpPost method = new HttpPost(url);
try {
if (null != jsonParam) {
//解决中文乱码问题
StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
method.setEntity(entity);
}
HttpResponse result = httpClient.execute(method);
url = URLDecoder.decode(url, "UTF-8");
/**请求发送成功,并得到响应**/
if (result.getStatusLine().getStatusCode() == 200) {
String str = "";
try {
/**读取服务器返回过来的json字符串数据**/
str = EntityUtils.toString(result.getEntity());
return str;
/**把json字符串转换成json对象**/
// jsonResult = JSONObject.fromObject(str);
} catch (Exception e) {
logger.error("post请求提交失败:" + url, e);
}
}
} catch (IOException e) {
logger.error("post请求提交失败:" + url, e);
}
return jsonResult;
}
/**
* 发送get请求
* @param url 路径
* @return
*/
public static String get(String url){
String responseString = null;
try {
DefaultHttpClient client = new DefaultHttpClient();
//发送get请求
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);
/**请求发送成功,并得到响应**/
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
/**读取服务器返回过来的json字符串数据**/
return EntityUtils.toString(response.getEntity());
/**把json字符串转换成json对象**/
} else {
logger.error("get请求提交失败:" + url);
}
} catch (IOException e) {
logger.error("get请求提交失败:" + url, e);
}
return responseString;
}
/**
* 发起批量转账API 批量转账到零钱
*
* @param requestUrl
* @param requestJson 组合参数
* @param wechatPayserialNo 商户证书序列号
* @param mchID4M 商户号
* @param privatekeypath 商户私钥证书路径
* @return
*/
public static String postTransBatRequest(
String requestUrl,
String requestJson,
String wechatPayserialNo,
String wechatPayserialNo2,
String mchID4M,
String privatekeypath) {
CloseableHttpClient httpclient = HttpClients.createDefault();
CloseableHttpResponse response = null;
HttpEntity entity = null;
try {
//商户私钥证书
HttpPost httpPost = new HttpPost(requestUrl);
// NOTE: 建议指定charset=utf-8低于4.4.6版本的HttpCore不能正确的设置字符集可能导致签名错误
httpPost.addHeader("Content-Type", "application/json");
httpPost.addHeader("Accept", "application/json");
//"55E551E614BAA5A3EA38AE03849A76D8C7DA735A");
httpPost.addHeader("Wechatpay-Serial", wechatPayserialNo);
//-------------------------核心认证 start-----------------------------------------------------------------
String strToken = VechatPayV3Util.getToken("POST",
"/v3/fund-app/mch-transfer/transfer-bills",
requestJson,mchID4M,wechatPayserialNo2, privatekeypath);
log.error("微信转账token "+strToken);
// 添加认证信息
httpPost.addHeader("Authorization",
"WECHATPAY2-SHA256-RSA2048" + " "
+ strToken);
//---------------------------核心认证 end---------------------------------------------------------------
httpPost.setEntity(new StringEntity(requestJson, "UTF-8"));
//发起转账请求
response = httpclient.execute(httpPost);
entity = response.getEntity();//获取返回的数据
log.info("-----getHeaders.Request-ID:"+response.getHeaders("Request-ID"));
return EntityUtils.toString(entity,"UTF-8");
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭流
}
return null;
}
/**
* 发送HTTP_GET请求
*
* @see 该方法会自动关闭连接,释放资源
* @param reqURL
* 请求地址(含参数)
* @param decodeCharset
* 解码字符集,解析响应数据时用之,其为null时默认采用UTF-8解码
* @return 远程主机响应正文
*/
public static String sendGetRequest(String reqURL,String auth,String decodeCharset) {
long responseLength = 0; // 响应长度
String responseContent = null; // 响应内容
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(reqURL); // 创建org.apache.http.client.methods.HttpGet
httpGet.addHeader("Authorization", auth);
httpGet.addHeader("Accept", "application/json");
httpGet.addHeader("User-Agent", "https://zh.wikipedia.org/wiki/User_agent");
try {
HttpResponse response = httpclient.execute(httpGet); // 执行GET请求
HttpEntity entity = response.getEntity(); // 获取响应实体
if (null != entity) {
responseLength = entity.getContentLength();
responseContent = EntityUtils.toString(entity, decodeCharset == null ? "UTF-8" : decodeCharset);
EntityUtils.consume(entity); // Consume response content
}
} catch (ClientProtocolException e) {
System.out.println("该异常通常是协议错误导致,比如构造HttpGet对象时传入的协议不对(将'http'写成'htp')或者服务器端返回的内容不符合HTTP协议要求等,堆栈信息如下");
} catch (ParseException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println("该异常通常是网络原因引起的,如HTTP服务器未启动等,堆栈信息如下");
} finally {
httpclient.getConnectionManager().shutdown(); // 关闭连接,释放资源
}
return responseContent;
}
}

+ 28
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MoneyUtil.java View File

@ -0,0 +1,28 @@
package org.jeecg.common.util;
import java.math.BigDecimal;
/**
* Created by 廖师兄
* 2017-07-02 13:53
*/
public class MoneyUtil {
/**
* 元转分
* @param yuan
* @return
*/
public static Integer Yuan2Fen(Double yuan) {
return new BigDecimal(String.valueOf(yuan)).movePointRight(2).intValue();
}
/**
* 分转元
* @param fen
* @return
*/
public static Double Fen2Yuan(Integer fen) {
return new BigDecimal(fen).movePointLeft(2).doubleValue();
}
}

+ 122
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/VechatPayV3Util.java View File

@ -0,0 +1,122 @@
package org.jeecg.common.util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.springframework.util.StringUtils;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.Signature;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.Random;
/**
* @author java996.icu
* @title: VechatPayV3Util
* @projectName chemu
* @description: TODO
* @date 2022/12/8 15:00
* @Version V1.0
*/
@Slf4j
public class VechatPayV3Util {
/**
*
* @param method 请求方法 post
* @param canonicalUrl 请求地址
* @param body 请求参数
* @param merchantId 这里用的商户号
* @param certSerialNo 商户证书序列号
* @param keyPath 商户证书地址
* @return
* @throws Exception
*/
public static String getToken(
String method,
String canonicalUrl,
String body,
String merchantId,
String certSerialNo,
String keyPath) throws Exception {
String signStr = "";
//获取32位随机字符串
String nonceStr = getRandomString(32);
//当前系统运行时间
long timestamp = System.currentTimeMillis() / 1000;
if (StringUtils.isEmpty(body)) {
body = "";
}
//签名操作
String message = buildMessage(method, canonicalUrl, timestamp, nonceStr, body);
//签名操作
String signature = sign(message.getBytes("utf-8"), keyPath);
//组装参数
signStr = "mchid=\"" + merchantId + "\",timestamp=\"" + timestamp+ "\",nonce_str=\"" + nonceStr
+ "\",serial_no=\"" + certSerialNo + "\",signature=\"" + signature + "\"";
return signStr;
}
public static String buildMessage(String method, String canonicalUrl, long timestamp, String nonceStr, String body) {
// String canonicalUrl = url.encodedPath();
// if (url.encodedQuery() != null) {
// canonicalUrl += "?" + url.encodedQuery();
// }
return method + "\n" + canonicalUrl + "\n" + timestamp + "\n" + nonceStr + "\n" + body + "\n";
}
public static String sign(byte[] message, String keyPath) throws Exception {
Signature sign = Signature.getInstance("SHA256withRSA");
sign.initSign(getPrivateKey(keyPath));
sign.update(message);
return Base64.encodeBase64String(sign.sign());
}
/**
* 微信支付-前端唤起支付参数-获取商户私钥
*
* @param filename 私钥文件路径 (required)
* @return 私钥对象
*/
public static PrivateKey getPrivateKey(String filename) throws IOException {
log.error("签名 证书地址是 "+filename);
String content = new String(Files.readAllBytes(Paths.get(filename)), "utf-8");
try {
String privateKey = content.replace("-----BEGIN PRIVATE KEY-----", "")
.replace("-----END PRIVATE KEY-----", "")
.replaceAll("\\s+", "");
//System.out.println("--------privateKey---------:"+privateKey);
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePrivate(
new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKey)));
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("当前Java环境不支持RSA", e);
} catch (InvalidKeySpecException e) {
throw new RuntimeException("无效的密钥格式");
}
}
/**
* 获取随机位数的字符串
* @param length
* @return
*/
public static String getRandomString(int length) {
String base = "abcdefghijklmnopqrstuvwxyz0123456789";
Random random = new Random();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
int number = random.nextInt(base.length());
sb.append(base.charAt(number));
}
return sb.toString();
}
}

+ 164
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/pay/WeChatPayConfig2.java View File

@ -0,0 +1,164 @@
package org.jeecg.common.util.pay;
import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder;
import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner;
import com.wechat.pay.contrib.apache.httpclient.auth.Verifier;
import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Credentials;
import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Validator;
import com.wechat.pay.contrib.apache.httpclient.cert.CertificatesManager;
import com.wechat.pay.contrib.apache.httpclient.exception.HttpCodeException;
import com.wechat.pay.contrib.apache.httpclient.exception.NotFoundException;
import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.impl.client.CloseableHttpClient;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
import java.security.PrivateKey;
/**
* @author java996.icu
* @title: WeChatPayConfig2
* @projectName chemu
* @description: TODO
* @date 2022/12/7 16:36
* @Version V1.0
*/
@Component
@Data
@Slf4j
@ConfigurationProperties(prefix = "wxpay")
public class WeChatPayConfig2 {
/**
* 应用编号
*/
private String appId;
/**
* 商户号
*/
private String mchId;
/**
* 服务商商户号
*/
private String slMchId;
/**
* APIv2密钥
*/
private String apiKey;
/**
* APIv3密钥
*/
private String apiV3Key;
/**
* 支付通知回调地址
*/
private String notifyUrl;
/**
* 退款回调地址
*/
private String refundNotifyUrl;
/**
* API 证书中的 key.pem
*/
private String keyPemPath;
/**
* 商户序列号
*/
private String serialNo;
/**
* 微信支付V3-url前缀
*/
private String baseUrl;
/**
* 获取商户的私钥文件
* @param keyPemPath
* @return
*/
public PrivateKey getPrivateKey(String keyPemPath){
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(keyPemPath);
if(inputStream==null){
throw new RuntimeException("私钥文件不存在");
}
return PemUtil.loadPrivateKey(inputStream);
}
/**
* 获取证书管理器实例
* @return
*/
@Bean
public Verifier getVerifier() throws GeneralSecurityException, IOException, HttpCodeException, NotFoundException {
log.info("获取证书管理器实例");
//获取商户私钥
PrivateKey privateKey = getPrivateKey(keyPemPath);
//私钥签名对象
PrivateKeySigner privateKeySigner = new PrivateKeySigner(serialNo, privateKey);
//身份认证对象
WechatPay2Credentials wechatPay2Credentials = new WechatPay2Credentials(mchId, privateKeySigner);
// 使用定时更新的签名验证器不需要传入证书
CertificatesManager certificatesManager = CertificatesManager.getInstance();
certificatesManager.putMerchant(mchId,wechatPay2Credentials,apiV3Key.getBytes(StandardCharsets.UTF_8));
return certificatesManager.getVerifier(mchId);
}
/**
* 获取支付http请求对象
* @param verifier
* @return
*/
@Bean(name = "wxPayClient")
public CloseableHttpClient getWxPayClient(Verifier verifier) {
//获取商户私钥
PrivateKey privateKey = getPrivateKey(keyPemPath);
WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create()
.withMerchant(mchId, serialNo, privateKey)
.withValidator(new WechatPay2Validator(verifier));
// 通过WechatPayHttpClientBuilder构造的HttpClient会自动的处理签名和验签并进行证书自动更新
return builder.build();
}
/**
* 获取HttpClient无需进行应答签名验证跳过验签的流程
*/
@Bean(name = "wxPayNoSignClient")
public CloseableHttpClient getWxPayNoSignClient(){
//获取商户私钥
PrivateKey privateKey = getPrivateKey(keyPemPath);
//用于构造HttpClient
WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create()
//设置商户信息
.withMerchant(mchId, serialNo, privateKey)
//无需进行签名验证通过withValidator((response) -> true)实现
.withValidator((response) -> true);
// 通过WechatPayHttpClientBuilder构造的HttpClient会自动的处理签名和验签并进行证书自动更新
return builder.build();
}
}

+ 181
- 6
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelbalancelog/controller/HotelBalanceLogController.java View File

@ -1,5 +1,8 @@
package org.jeecg.modules.hotelbalancelog.controller;
import java.math.BigDecimal;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@ -7,12 +10,29 @@ import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.wechat.pay.contrib.apache.httpclient.util.RsaCryptoUtil;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.HttpRequestUtil;
import org.jeecg.common.util.MoneyUtil;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.common.util.pay.WeChatPayConfig2;
import org.jeecg.modules.hanHaiMember.entity.HanHaiMember;
import org.jeecg.modules.hanHaiMember.service.IHanHaiMemberService;
import org.jeecg.modules.hotelbalancelog.entity.HotelBalanceLog;
import org.jeecg.modules.hotelbalancelog.req.AuditReq;
import org.jeecg.modules.hotelbalancelog.req.TransferBatchesDetailsRequest;
import org.jeecg.modules.hotelbalancelog.req.TransferBatchesRequest;
import org.jeecg.modules.hotelbalancelog.resp.TransferBatchesResp;
import org.jeecg.modules.hotelbalancelog.service.IHotelBalanceLogService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -20,6 +40,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.hotelmemberaccount.entity.HotelMemberAccount;
import org.jeecg.modules.hotelmemberaccount.service.IHotelMemberAccountService;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
@ -27,6 +49,8 @@ import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@ -49,7 +73,25 @@ import org.jeecg.common.aspect.annotation.AutoLog;
public class HotelBalanceLogController extends JeecgController<HotelBalanceLog, IHotelBalanceLogService> {
@Autowired
private IHotelBalanceLogService hotelBalanceLogService;
@Resource
private RedisUtil redisUtil;
@Resource
private IHanHaiMemberService hanHaiMemberService;
@Resource
private IHotelMemberAccountService hotelMemberAccountService;
@Value("${weixin.mpAppId}")
private String appId;
@Value("${wechat.transferBatchUrl}")
private String transferBatchUrl;
@Value("${wechat.keyPemPath}")
private String pemPath;
@Value("${weixin.mchId}")
private String mchId;
@Value("${weixin.serialNo}")
private String wxsSerialNo;
@Resource
private WeChatPayConfig2 weChatPayConfig2;
/**
* 分页列表查询
*
@ -71,7 +113,31 @@ public class HotelBalanceLogController extends JeecgController<HotelBalanceLog,
IPage<HotelBalanceLog> pageList = hotelBalanceLogService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 分页列表查询
*
* @param hotelBalanceLog
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "hotel_balance_log-分页列表查询")
@ApiOperation(value="hotel_balance_log-分页列表查询", notes="hotel_balance_log-分页列表查询")
@GetMapping(value = "/list2")
public Result<IPage<HotelBalanceLog>> queryPageList2(HotelBalanceLog hotelBalanceLog,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<HotelBalanceLog> queryWrapper = QueryGenerator.initQueryWrapper(hotelBalanceLog, req.getParameterMap());
queryWrapper.eq("type",1);
Page<HotelBalanceLog> page = new Page<HotelBalanceLog>(pageNo, pageSize);
IPage<HotelBalanceLog> pageList = hotelBalanceLogService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
@ -85,7 +151,7 @@ public class HotelBalanceLogController extends JeecgController<HotelBalanceLog,
hotelBalanceLogService.save(hotelBalanceLog);
return Result.OK("添加成功!");
}
/**
* 编辑
*
@ -99,7 +165,7 @@ public class HotelBalanceLogController extends JeecgController<HotelBalanceLog,
hotelBalanceLogService.updateById(hotelBalanceLog);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
@ -113,7 +179,7 @@ public class HotelBalanceLogController extends JeecgController<HotelBalanceLog,
hotelBalanceLogService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
@ -127,7 +193,7 @@ public class HotelBalanceLogController extends JeecgController<HotelBalanceLog,
this.hotelBalanceLogService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
@ -168,4 +234,113 @@ public class HotelBalanceLogController extends JeecgController<HotelBalanceLog,
return super.importExcel(request, response, HotelBalanceLog.class);
}
@Transactional(rollbackFor = Exception.class)
@PostMapping("/audit")
public Result<?> audit(@RequestBody AuditReq auditReq){
HotelBalanceLog hotelBalanceLog = hotelBalanceLogService.getById(auditReq.getId());
HotelBalanceLog hotelBalanceLog1 = new HotelBalanceLog();
hotelBalanceLog1.setId(hotelBalanceLog.getId());
hotelBalanceLog1.setStatus(1);
if(auditReq.getAudit() == 1){
HotelMemberAccount hotelMemberAccount = hotelMemberAccountService.lambdaQuery()
.eq(HotelMemberAccount::getUserId, hotelBalanceLog.getUserId())
.one();
BigDecimal bigDecimal = hotelMemberAccount.getShopBalance().add(hotelBalanceLog.getBalance());
HotelMemberAccount hotelMemberAccount1 = new HotelMemberAccount();
hotelMemberAccount1.setId(hotelMemberAccount.getId());
hotelMemberAccount1.setShopBalance(bigDecimal);
hotelMemberAccountService.updateById(hotelMemberAccount1);
hotelBalanceLog1.setStatus(3);
}
hotelBalanceLogService.updateById(hotelBalanceLog1);
return Result.OK();
}
/**
* 提现
* @param
* @return
*/
@PostMapping("/withdrawal")
public Result<?> withdrawal(@RequestBody AuditReq auditReq) {
Integer n = (Integer) redisUtil.get("WITHDRAWAL:" + auditReq.getId());
if (n != null) {
throw new JeecgBootException("请勿重复点击,后果自负!");
}
redisUtil.set("WITHDRAWAL:" + auditReq.getId(), 1, 5);
HotelBalanceLog hotelBalanceLog = hotelBalanceLogService.getById(auditReq.getId());
HanHaiMember hanHaiMember = hanHaiMemberService.lambdaQuery()
.eq(HanHaiMember::getId, hotelBalanceLog.getUserId())
.one();
HotelMemberAccount hotelMemberAccount = hotelMemberAccountService.lambdaQuery()
.eq(HotelMemberAccount::getUserId, hanHaiMember.getId())
.one();
//微信-商家转账到零钱
String idStr = "H" + IdWorker.getIdStr();
TransferBatchesRequest transferBatchesRequest = new TransferBatchesRequest();
transferBatchesRequest.setAppid(appId);
transferBatchesRequest.setOutBillNo(idStr);
transferBatchesRequest.setTransferRemark("商家提现");
transferBatchesRequest.setOpenid(hanHaiMember.getAppletOpenid());
transferBatchesRequest.setTransferSceneId("1000");
String serialNo = null;
try {
X509Certificate certificate = weChatPayConfig2.getVerifier().getValidCertificate();
serialNo = certificate.getSerialNumber().toString(16).toUpperCase();
String encryptOAEP = RsaCryptoUtil.encryptOAEP(hotelBalanceLog.getName(), certificate);
transferBatchesRequest.setUserName(encryptOAEP);
} catch (Exception e) {
log.info("真实姓名加密失败");
e.printStackTrace();
throw new JeecgBootException("真实姓名加密失败");
}
transferBatchesRequest.setTransferAmount(MoneyUtil.Yuan2Fen(hotelBalanceLog.getBalance().doubleValue()));
List<TransferBatchesDetailsRequest> transferBatchesDetailsRequests = new ArrayList<>();
TransferBatchesDetailsRequest transferBatchesDetailsRequest = new TransferBatchesDetailsRequest();
transferBatchesDetailsRequest.setInfoType("1000-现金营销");
transferBatchesDetailsRequest.setInfoContent("商品返利");
transferBatchesDetailsRequests.add(transferBatchesDetailsRequest);
transferBatchesRequest.setTransferDetailList(transferBatchesDetailsRequests);
String jsonString = JSONObject.toJSONString(transferBatchesRequest);
String postTransBatRequest = HttpRequestUtil.postTransBatRequest(transferBatchUrl, jsonString, serialNo, wxsSerialNo, mchId, pemPath);
log.error("返回结果1:" + postTransBatRequest);
TransferBatchesResp transferBatchesResp = JSON.parseObject(postTransBatRequest, TransferBatchesResp.class);
log.error("返回结果2:" + transferBatchesResp);
if (transferBatchesResp == null || org.apache.commons.lang3.StringUtils.isBlank(transferBatchesResp.getBatchId())) {
throw new JeecgBootException("打款失败");
}
HotelBalanceLog hotelBalanceLog1 = new HotelBalanceLog();
hotelBalanceLog1.setId(hotelBalanceLog.getId());
hotelBalanceLog1.setStatus(2);
hotelBalanceLog1.setOutBatchNo(transferBatchesResp.getOutBatchNo());
hotelBalanceLog1.setBatchId(transferBatchesResp.getBatchId());
hotelBalanceLogService.updateById(hotelBalanceLog1);
return Result.OK();
}
}

+ 4
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelbalancelog/entity/HotelBalanceLog.java View File

@ -90,4 +90,8 @@ public class HotelBalanceLog implements Serializable {
private BigDecimal platformServicePrice;
/**订单Id*/
private String orderId;
/**商家批次单号*/
private String outBatchNo;
/**微信批次单号*/
private String batchId;
}

+ 21
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelbalancelog/req/AuditReq.java View File

@ -0,0 +1,21 @@
package org.jeecg.modules.hotelbalancelog.req;
import lombok.Data;
/**
* @author java996.icu
* @title: AuditReq
* @projectName hanhai-object-jdbc-20240829
* @description: TODO
* @date 2025/1/16 22:49
* @Version V1.0
*/
@Data
public class AuditReq {
/**id*/
private String id;
/**0审核通过 1审核不通过*/
private Integer audit;
}

+ 25
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelbalancelog/req/TransferBatchesDetailsRequest.java View File

@ -0,0 +1,25 @@
package org.jeecg.modules.hotelbalancelog.req;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
/**
* @author java996.icu
* @title: TransferBatchesDetailsRequest
* @projectName merchant
* @description: TODO
* @date 2022/10/10 15:45
* @Version V1.0
*/
@Data
public class TransferBatchesDetailsRequest {
/**转账场景为1000-现金营销,需填入活动名称、奖励说明*/
@JSONField(name = "info_type")
private String infoType;
/**信息类型为活动名称请在信息内容描述用户参与活动的名称如新会员有礼
信息类型为奖励说明请在信息内容描述用户因为什么奖励获取这笔资金如注册会员抽奖一等奖*/
@JSONField(name = "info_content")
private String infoContent;
}

+ 43
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelbalancelog/req/TransferBatchesRequest.java View File

@ -0,0 +1,43 @@
package org.jeecg.modules.hotelbalancelog.req;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import javax.crypto.Mac;
import java.util.List;
/**
* @author java996.icu
* @title: TransferBatchesRequest
* @projectName merchant
* @description: TODO
* @date 2022/10/10 15:32
* @Version V1.0
*/
@Data
public class TransferBatchesRequest {
/**直连商户的appid*/
private String appid;
/**商家批次单号*/
@JSONField(name = "out_bill_no")
private String outBillNo;
/**批次备注*/
@JSONField(name = "transfer_remark")
private String transferRemark;
/**转账总金额*/
@JSONField(name = "transfer_amount")
private Integer transferAmount;
/**转账场景*/
@JSONField(name = "transfer_scene_id")
private String transferSceneId;
@JSONField(name = "openid")
private String openid;
/**真实姓名*/
@JSONField(name = "user_name")
private String userName;
/**发起批量转账的明细列表,最多三千笔*/
@JSONField(name = "transfer_scene_report_infos")
private List<TransferBatchesDetailsRequest> transferDetailList;
}

+ 27
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/hotelbalancelog/resp/TransferBatchesResp.java View File

@ -0,0 +1,27 @@
package org.jeecg.modules.hotelbalancelog.resp;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
/**
* @author java996.icu
* @title: TransferBatchesResp
* @projectName merchant
* @description: TODO
* @date 2022/12/13 14:29
* @Version V1.0
*/
@Data
public class TransferBatchesResp {
/**微信批次单号*/
@JSONField(name = "batch_id")
private String batchId;
/**商家批次单号*/
@JSONField(name = "out_batch_no")
private String outBatchNo;
/**批次创建时间*/
@JSONField(name = "create_time")
private String createTime;
}

+ 37
- 13
jeecg-boot-module-system/jeecg-boot-module-system.iml View File

@ -14,7 +14,9 @@
<configuration>
<setting name="validation-enabled" value="true" />
<setting name="provider-name" value="Hibernate" />
<datasource-mapping />
<datasource-mapping>
<factory-entry name="jeecg-boot-module-system" />
</datasource-mapping>
<naming-strategy-map />
</configuration>
</facet>
@ -171,13 +173,32 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-kotlin:2.13.2" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-reflect:1.6.10" level="project" />
<orderEntry type="library" name="Maven: bouncycastle:bcprov-jdk14:138" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:converter-simplexml:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.retrofit2:retrofit:2.3.0" level="project" />
<orderEntry type="library" name="Maven: org.simpleframework:simple-xml:2.7.1" level="project" />
<orderEntry type="library" name="Maven: stax:stax:1.2.0" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3:1.1.3.3" level="project" />
<orderEntry type="library" name="Maven: javax.ws.rs:javax.ws.rs-api:2.1.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-client:2.23.2" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.core:jersey-common:2.35" level="project" />
<orderEntry type="library" name="Maven: jakarta.ws.rs:jakarta.ws.rs-api:2.1.6" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:jakarta.inject:2.6.1" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:osgi-resource-locator:1.0.3" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-api:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-utils:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:aopalliance-repackaged:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2.external:javax.inject:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.hk2:hk2-locator:2.5.0-b05" level="project" />
<orderEntry type="library" name="Maven: org.glassfish.jersey.connectors:jersey-apache-connector:2.23.2" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.59" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.8.0" level="project" />
<orderEntry type="library" name="Maven: commons-httpclient:commons-httpclient:3.1" level="project" />
<orderEntry type="library" name="Maven: org.jeecgframework:jeewx-api:1.4.7" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
<orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.9" level="project" />
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.4" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
<orderEntry type="library" name="Maven: net.sf.json-lib:json-lib:jdk15:2.2.3" level="project" />
<orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2" level="project" />
<orderEntry type="library" name="Maven: net.sf.ezmorph:ezmorph:1.0.6" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.36" level="project" />
<orderEntry type="library" name="Maven: org.jdom:jdom:1.1" level="project" />
@ -224,7 +245,6 @@
<orderEntry type="library" name="Maven: com.carrotsearch.thirdparty:simple-xml-safe:2.7.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.13.2" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.13.2.2" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:io:7.1.2" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:layout:7.1.2" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:kernel:7.1.2" level="project" />
@ -244,9 +264,10 @@
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.11.1" level="project" />
<orderEntry type="library" name="Maven: org.jeecgframework.jimureport:jimureport-font:1.1.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.15" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.10" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: com.github.liyiorg:weixin-popular:2.8.17" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.13" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.3" level="project" />
<orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.1.12" level="project" />
<orderEntry type="library" name="Maven: com.vdurmont:emoji-java:3.1.3" level="project" />
<orderEntry type="library" name="Maven: org.json:json:20140107" level="project" />
@ -280,9 +301,9 @@
<orderEntry type="library" name="Maven: io.opentracing:opentracing-api:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-util:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-noop:0.33.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-pay:3.5.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-common:3.5.0" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.11" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-pay:3.7.3.B" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-common:3.7.3.B" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.11.1" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.36" level="project" />
@ -294,9 +315,12 @@
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.59" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.59" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-miniapp:3.5.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-mp:3.5.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-miniapp:3.7.3.B" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-mp:3.7.3.B" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-java:0.2.15" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-java-core:0.2.15" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.5.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.13.2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.6.6" level="project" />


+ 5
- 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/order/req/QueryLogisticsReq.java View File

@ -1,5 +1,6 @@
package org.jeecg.modules.xcx.order.req;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ -7,7 +8,10 @@ public class QueryLogisticsReq {
private String token;
private String id;
/**物流单号*/
@ApiModelProperty(value = "物流单号")
private String no;
}

+ 83
- 39
jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/order/service/impl/OrderServiceImpl.java View File

@ -8,18 +8,8 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cainiao.link.consumer.LinkClient;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.constant.WxPayErrorCode;
import com.taobao.pac.sdk.cp.dataobject.request.GUOGUO_QUERY_LOGISTICS_DETAIL.GuoguoQueryLogisticsDetailRequest;
import com.taobao.pac.sdk.cp.dataobject.request.GUOGUO_QUERY_LOGISTICS_DETAIL.LogisticsDetailOption;
import com.taobao.pac.sdk.cp.dataobject.request.GUOGUO_QUERY_LOGISTICS_DETAIL.LogisticsDetailRequest;
import com.taobao.pac.sdk.cp.dataobject.request.GUOGUO_QUERY_SEND_ORDER_FULL_DETAIL.AccessOption;
import com.taobao.pac.sdk.cp.dataobject.request.GUOGUO_QUERY_SEND_ORDER_FULL_DETAIL.GuoguoCancelSendOrderRequest;
import com.taobao.pac.sdk.cp.dataobject.request.GUOGUO_QUERY_SEND_ORDER_FULL_DETAIL.QueryOrderConditionDTO;
import com.taobao.pac.sdk.cp.dataobject.response.GUOGUO_QUERY_LOGISTICS_DETAIL.GuoguoQueryLogisticsDetailResponse;
import com.taobao.pac.sdk.cp.dataobject.response.GUOGUO_QUERY_SEND_ORDER_FULL_DETAIL.GuoguoCreateSendOrderResponse;
import com.taobao.pac.sdk.cp.dataobject.response.GUOGUO_QUERY_SEND_ORDER_FULL_DETAIL.LogisticsDetailDTO;
import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier;
import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner;
import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Credentials;
@ -89,13 +79,14 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayInputStream;
import java.io.*;
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import java.security.PrivateKey;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@ -138,14 +129,12 @@ public class OrderServiceImpl implements IOrderService {
private String serialNo;
@Value("${weixin.apiV3Key}")
private String apiV3Key;
@Value("${cainiao.appKey}")
@Value("${aliyun.kuaidi.appKey}")
private String appKey;
@Value("${cainiao.appSecret}")
@Value("${aliyun.kuaidi.appSecret}")
private String appSecret;
@Value("${cainiao.accountId}")
private String accountId;
@Value("${cainiao.accessCode}")
private String accessCode;
@Value("${aliyun.kuaidi.appCode}")
private String appCode;
@Resource
private IHotelOrderLogService hotelOrderLogService;
@Resource
@ -3184,10 +3173,10 @@ public class OrderServiceImpl implements IOrderService {
BigDecimal price = hotelMemberAccount.getShopBalance().add(shopPrice);
// HotelMemberAccount hotelMemberAccount1 = new HotelMemberAccount();
// hotelMemberAccount1.setId(hotelMemberAccount.getId());
// hotelMemberAccount1.setShopBalance(price);
// hotelMemberAccountService.updateById(hotelMemberAccount1);
HotelMemberAccount hotelMemberAccount1 = new HotelMemberAccount();
hotelMemberAccount1.setId(hotelMemberAccount.getId());
hotelMemberAccount1.setShopBalance(price);
hotelMemberAccountService.updateById(hotelMemberAccount1);
@ -3208,6 +3197,7 @@ public class OrderServiceImpl implements IOrderService {
hotelOrderService.updateById(hotelOrder1);
/*
//微信分账代码
// 初始化商户配置
Config config =
@ -3237,6 +3227,7 @@ public class OrderServiceImpl implements IOrderService {
createOrderRequest.setReceivers(createOrderReceivers);
profitsharingService.createOrder(createOrderRequest);
*/
for (HotelOrderDetail hotelOrderDetail:hotelOrderDetails){
//
@ -3791,23 +3782,76 @@ public class OrderServiceImpl implements IOrderService {
@Override
public Result<?> queryLogistics(QueryLogisticsReq queryLogisticsReq) {
//通过 LinkClient Builder 构造一个 LinkClient
com.cainiao.link.consumer.LinkClient linkClient = LinkClient.builder(appKey, appSecret).build();
GuoguoQueryLogisticsDetailRequest request = new GuoguoQueryLogisticsDetailRequest();
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(queryLogisticsReq.getToken());
if(StringUtils.isBlank(queryLogisticsReq.getNo())){
throw new JeecgBootException("物流单号错误");
}
String host = "https://wuliu.market.alicloudapi.com";// 1请求地址 支持http https WEBSOCKET
String path = "/kdi"; // 2后缀
String appcode = appCode; // 3开通服务后 买家中心-查看AppCode
String no = queryLogisticsReq.getNo();// 4快递单号
// String type = "zto"; // 4请求参数不知道可不填 95%能自动识别
// String urlSend = host + path + "?no=" + no +"&type="+type; // 5拼接请求链接
String urlSend = host + path + "?no=" + no;
try {
URL url = new URL(urlSend);
HttpURLConnection httpURLCon = (HttpURLConnection) url.openConnection();
httpURLCon .setRequestProperty("Authorization", "APPCODE " + appcode);// 格式Authorization:APPCODE (中间是英文空格)
int httpCode = httpURLCon.getResponseCode();
if (httpCode == 200) {
String json = read(httpURLCon.getInputStream());
log.info("正常请求计费(其他均不计费)");
log.info("获取返回的json:");
log.info(json);
return Result.OK(json);
} else {
Map<String, List<String>> map = httpURLCon.getHeaderFields();
String error = map.get("X-Ca-Error-Message").get(0);
if (httpCode == 400 && error.equals("Invalid AppCode `not exists`")) {
log.error("AppCode错误 ");
} else if (httpCode == 400 && error.equals("Invalid Url")) {
log.error("请求的 Method、Path 或者环境错误");
} else if (httpCode == 400 && error.equals("Invalid Param Location")) {
log.error("参数错误");
} else if (httpCode == 403 && error.equals("Unauthorized")) {
log.error("服务未被授权(或URL和Path不正确)");
} else if (httpCode == 403 && error.equals("Quota Exhausted")) {
log.error("套餐包次数用完 ");
} else if (httpCode == 403 && error.equals("Api Market Subscription quota exhausted")) {
log.error("套餐包次数用完,请续购套餐");
} else {
log.error("参数名错误 或 其他错误");
log.error(error);
}
}
LogisticsDetailRequest logisticsDetailRequest = new LogisticsDetailRequest();
logisticsDetailRequest.setTdOrderId(15592780860652417L);
LogisticsDetailOption logisticsDetailOption = new LogisticsDetailOption();
logisticsDetailOption.setAccessCode(accessCode);
logisticsDetailOption.setAccessMethod("LINK");
} catch (MalformedURLException e) {
log.error("URL格式错误");
} catch (UnknownHostException e) {
log.error("URL地址错误");
} catch (Exception e) {
// 打开注释查看详细报错异常信息
// e.printStackTrace();
}
return Result.error("请求错误");
}
request.setRequest(logisticsDetailRequest);
request.setOption(logisticsDetailOption);
GuoguoQueryLogisticsDetailResponse response = linkClient.execute(request, accountId, accessCode);
log.info("包裹返回信息:"+response.toString());
return null;
/*
* 读取返回结果
*/
private static String read(InputStream is) throws IOException {
StringBuffer sb = new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = br.readLine()) != null) {
line = new String(line.getBytes(), "utf-8");
sb.append(line);
}
br.close();
return sb.toString();
}
public Object testPay(String id){


+ 3
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/xcx/shop/service/impl/ShopServiceImpl.java View File

@ -156,6 +156,9 @@ public class ShopServiceImpl implements IShopService {
if(StringUtils.isBlank(applyWithdrawalReq.getBankAddress())){
throw new JeecgBootException("请填写银行卡支行地址");
}
if(StringUtils.isBlank(hanHaiMember.getAppletOpenid())){
throw new JeecgBootException("请先绑定微信");
}
BigDecimal money = hotelMemberAccount.getShopBalance().subtract(applyWithdrawalReq.getMoney());
HotelMemberAccount hotelMemberAccount1 = new HotelMemberAccount();


+ 40
- 1
jeecg-boot-module-system/src/main/resources/application-dev.yml View File

@ -330,6 +330,19 @@ third-app:
client-secret: ??
agent-id: ??
##配置微信
wechat:
mpAppId: wxad5b3d20a75974c0
mpAppSecret: 3b60a80c8e673986dd42f3cd6f2cf6b1
mchId: 1684424511
mchKey: 0fdb77429ffdf206c151af76a663041c
keyPath: D:\project\hanhai-object-jdbc-20240829\apiclient_cert.p12
transferBatchUrl: https://api.mch.weixin.qq.com/v3/fund-app/mch-transfer/transfer-bills
#获取access_token接口
getAccessTokenUrl: https://api.weixin.qq.com/cgi-bin/token
keyPemPath: D:\project\hanhai-object-jdbc-20240829\apiclient_key.pem
weixin:
mpAppId: wxad5b3d20a75974c0
mpAppSecret: 3b60a80c8e673986dd42f3cd6f2cf6b1
@ -341,9 +354,35 @@ weixin:
apiV3Key: 0fdb77429ffdf206c151af76a663041c
keyPemPath: apiclient_key.pem
wxpay:
#应用编号
appId: wxad5b3d20a75974c0
#商户号
mchId: 1684424511
# APIv2密钥
apiKey: 0fdb77429ffdf206c151af76a663041c
# APIv3密钥
apiV3Key: 0fdb77429ffdf206c151af76a663041c
# 微信支付V3-url前缀
baseUrl: https://api.mch.weixin.qq.com/v3
# 支付通知回调, pjm6m9.natappfree.cc 为内网穿透地址
notifyUrl: http://pjm6m9.natappfree.cc/pay/payNotify
# 退款通知回调, pjm6m9.natappfree.cc 为内网穿透地址
refundNotifyUrl: http://pjm6m9.natappfree.cc/pay/refundNotify
# 密钥路径,resources根目录下
keyPemPath: apiclient_key.pem
#商户证书序列号
serialNo: 617767B5F6790AA85EEDED28F82599AAF4830FB9
cainiao:
appKey: 251828
appSecret: 62Fyi41Yx047wbg7M2sL0SltPM25fsq8
accountId: 2218798171581
accessCode: d53a04398f95bf6ed4984bc444caf696
accessCode: d53a04398f95bf6ed4984bc444caf696
aliyun:
kuaidi:
appKey: 204797985
appSecret: pqQLX0uXZ725vq3px1Dp6FgLyil9Ac3Q
appCode: 0ba63f98943043e182cb25319459e966

+ 44
- 1
jeecg-boot-module-system/src/main/resources/application-prod.yml View File

@ -330,14 +330,57 @@ third-app:
client-secret: ??
agent-id: ??
##配置微信
wechat:
mpAppId: wxad5b3d20a75974c0
mpAppSecret: 3b60a80c8e673986dd42f3cd6f2cf6b1
mchId: 1684424511
mchKey: 0fdb77429ffdf206c151af76a663041c
keyPath: /usr/local/cert/apiclient_cert.p12
transferBatchUrl: https://api.mch.weixin.qq.com/v3/fund-app/mch-transfer/transfer-bills
#获取access_token接口
getAccessTokenUrl: https://api.weixin.qq.com/cgi-bin/token
keyPemPath: /usr/local/cert/apiclient_key.pem
weixin:
mpAppId: wxad5b3d20a75974c0
mpAppSecret: 3b60a80c8e673986dd42f3cd6f2cf6b1
orderNotifyUrl: https://admin.buzhoudao.com/hotel/order/notify
replaceOrderNotifyUrl: https://admin.buzhoudao.com/hotel/order/replace/notify
mchId: 1684424511
mchKey: 0fdb77429ffdf206c151af76a663041c
serialNo: 617767B5F6790AA85EEDED28F82599AAF4830FB9
apiV3Key: 0fdb77429ffdf206c151af76a663041c
keyPemPath: apiclient_key.pem
wxpay:
#应用编号
appId: wxad5b3d20a75974c0
#商户号
mchId: 1684424511
# APIv2密钥
apiKey: 0fdb77429ffdf206c151af76a663041c
# APIv3密钥
apiV3Key: 0fdb77429ffdf206c151af76a663041c
# 微信支付V3-url前缀
baseUrl: https://api.mch.weixin.qq.com/v3
# 支付通知回调, pjm6m9.natappfree.cc 为内网穿透地址
notifyUrl: http://pjm6m9.natappfree.cc/pay/payNotify
# 退款通知回调, pjm6m9.natappfree.cc 为内网穿透地址
refundNotifyUrl: http://pjm6m9.natappfree.cc/pay/refundNotify
# 密钥路径,resources根目录下
keyPemPath: apiclient_key.pem
#商户证书序列号
serialNo: 617767B5F6790AA85EEDED28F82599AAF4830FB9
cainiao:
appKey: 251828
appSecret: 62Fyi41Yx047wbg7M2sL0SltPM25fsq8
accountId: 2218798171581
accessCode:
accessCode: d53a04398f95bf6ed4984bc444caf696
aliyun:
kuaidi:
appKey: 204797985
appSecret: pqQLX0uXZ725vq3px1Dp6FgLyil9Ac3Q
appCode: 0ba63f98943043e182cb25319459e966

+ 51
- 1
jeecg-boot-module-system/src/main/resources/application-test.yml View File

@ -330,8 +330,58 @@ third-app:
client-secret: ??
agent-id: ??
##配置微信
wechat:
mpAppId: wxad5b3d20a75974c0
mpAppSecret: 3b60a80c8e673986dd42f3cd6f2cf6b1
mchId: 1684424511
mchKey: 0fdb77429ffdf206c151af76a663041c
keyPath: /usr/local/cert/apiclient_cert.p12
transferBatchUrl: https://api.mch.weixin.qq.com/v3/fund-app/mch-transfer/transfer-bills
#获取access_token接口
getAccessTokenUrl: https://api.weixin.qq.com/cgi-bin/token
keyPemPath: /usr/local/cert/apiclient_key.pem
weixin:
mpAppId: wxad5b3d20a75974c0
mpAppSecret: 3b60a80c8e673986dd42f3cd6f2cf6b1
orderNotifyUrl: https://hotel.java996.icu/hotel/order/notify
replaceOrderNotifyUrl: https://hotel.java996.icu/hotel/order/replace/notify
replaceOrderNotifyUrl: https://hotel.java996.icu/hotel/order/replace/notify
mchId: 1684424511
mchKey: 0fdb77429ffdf206c151af76a663041c
serialNo: 617767B5F6790AA85EEDED28F82599AAF4830FB9
apiV3Key: 0fdb77429ffdf206c151af76a663041c
keyPemPath: apiclient_key.pem
wxpay:
#应用编号
appId: wxad5b3d20a75974c0
#商户号
mchId: 1684424511
# APIv2密钥
apiKey: 0fdb77429ffdf206c151af76a663041c
# APIv3密钥
apiV3Key: 0fdb77429ffdf206c151af76a663041c
# 微信支付V3-url前缀
baseUrl: https://api.mch.weixin.qq.com/v3
# 支付通知回调, pjm6m9.natappfree.cc 为内网穿透地址
notifyUrl: http://pjm6m9.natappfree.cc/pay/payNotify
# 退款通知回调, pjm6m9.natappfree.cc 为内网穿透地址
refundNotifyUrl: http://pjm6m9.natappfree.cc/pay/refundNotify
# 密钥路径,resources根目录下
keyPemPath: apiclient_key.pem
#商户证书序列号
serialNo: 617767B5F6790AA85EEDED28F82599AAF4830FB9
cainiao:
appKey: 251828
appSecret: 62Fyi41Yx047wbg7M2sL0SltPM25fsq8
accountId: 2218798171581
accessCode: d53a04398f95bf6ed4984bc444caf696
aliyun:
kuaidi:
appKey: 204797985
appSecret: pqQLX0uXZ725vq3px1Dp6FgLyil9Ac3Q
appCode: 0ba63f98943043e182cb25319459e966

+ 84
- 3
pom.xml View File

@ -60,7 +60,21 @@
<log4j2.version>2.17.0</log4j2.version>
<logback.version>1.2.9</logback.version>
<wechatpay-java.version>0.2.15</wechatpay-java.version>
<!--pay-->
<converter-simplexml.version>2.3.0</converter-simplexml.version>
<javax.ws.rs-api.version>2.1.1</javax.ws.rs-api.version>
<jersey-client.version>2.23.2</jersey-client.version>
<jersey-apache-connector.version>2.23.2</jersey-apache-connector.version>
<bcprov-jdk15on.version>1.59</bcprov-jdk15on.version>
<json-lib.version>2.2.3</json-lib.version>
<logging-interceptor.version>3.8.0</logging-interceptor.version>
<wechatpay-apache-httpclientd.version>0.5.0</wechatpay-apache-httpclientd.version>
<httpclient.version>4.5.3</httpclient.version>
<commons-httpclient.version>3.1</commons-httpclient.version>
<httpcore.version>4.4.10</httpcore.version>
<httpmime.version>4.5.3</httpmime.version>
</properties>
<modules>
@ -333,16 +347,83 @@
<artifactId>wechatpay-java</artifactId>
<version>${wechatpay-java.version}</version>
</dependency>
<!--pay-->
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>converter-simplexml</artifactId>
<version>${converter-simplexml.version}</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>${javax.ws.rs-api.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey-client.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.connectors</groupId>
<artifactId>jersey-apache-connector</artifactId>
<version>${jersey-apache-connector.version}</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>${bcprov-jdk15on.version}</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>${json-lib.version}</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>logging-interceptor</artifactId>
<version>${logging-interceptor.version}</version>
</dependency>
<dependency>
<groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-apache-httpclient</artifactId>
<version>${wechatpay-apache-httpclientd.version}</version>
</dependency>
<!--HttpClient-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${httpclient.version}</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>${commons-httpclient.version}</version>
</dependency>
<dependency>
<groupId>pac.sdk</groupId>
<artifactId>pac-sdk-cp</artifactId>
<version>1.0.0</version>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>${httpcore.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>${httpmime.version}</version>
</dependency>
</dependencies>
</dependencyManagement>


Loading…
Cancel
Save