后端【新增】新增商家转账功能后台处理及接口回调获取。

This commit is contained in:
jianweie code
2025-07-29 00:51:57 +08:00
parent 596225acb1
commit c8b4bbd78d
38 changed files with 3385 additions and 436 deletions

View File

@@ -229,9 +229,11 @@ namespace CoreCms.Net.Web.Admin.Controllers
var jm = new AdminUiCallBack { code = 0 };
var weiChatPayTradeType = EnumHelper.EnumToList<WeiChatPayTradeType>();
var weChatPayIdentityVerificationMethods = EnumHelper.EnumToList<WeChatPayIdentityVerificationMethods>();
jm.data = new
{
weiChatPayTradeType
weiChatPayTradeType,
weChatPayIdentityVerificationMethods
};
return jm;
@@ -252,9 +254,12 @@ namespace CoreCms.Net.Web.Admin.Controllers
var jm = new AdminUiCallBack { code = 0 };
var weiChatPayTradeType = EnumHelper.EnumToList<WeiChatPayTradeType>();
var weChatPayIdentityVerificationMethods = EnumHelper.EnumToList<WeChatPayIdentityVerificationMethods>();
jm.data = new
{
weiChatPayTradeType
weiChatPayTradeType,
weChatPayIdentityVerificationMethods
};
return jm;
@@ -299,10 +304,13 @@ namespace CoreCms.Net.Web.Admin.Controllers
jm.code = 0;
var weiChatPayTradeType = EnumHelper.EnumToList<WeiChatPayTradeType>();
var weChatPayIdentityVerificationMethods = EnumHelper.EnumToList<WeChatPayIdentityVerificationMethods>();
jm.data = new
{
model,
weiChatPayTradeType
weiChatPayTradeType,
weChatPayIdentityVerificationMethods
};
return jm;

View File

@@ -1,128 +1,221 @@
<script type="text/html" template lay-done="layui.data.done(d);">
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsWeChatPayConfig-createForm" id="LAY-app-CoreCmsWeChatPayConfig-createForm">
<div class="layui-tab" lay-filter="test-handle" lay-allowclose="true">
<ul class="layui-tab-title">
<li class="layui-this" lay-id="11">基础设置</li>
<li lay-id="22">证书密钥配置</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<div class="layui-form-item">
<label for="appType" class="layui-form-label layui-form-required">应用类型</label>
<div class="layui-input-inline layui-inline-5">
<select name="appType" lay-verify="required" placeholder="请输入应用类型" lay-reqText="请输入应用类型">
<option value="">请选择所属应用类型</option>
{{# layui.each(d.params.data.weiChatPayTradeType, function(index, item){ }}
<option value="{{ item.title }}">{{ item.description }}</option>
{{# }); }}
</select>
</div>
<label for="appId" class="layui-form-label layui-form-required">应用AppID</label>
<div class="layui-input-inline layui-inline-5">
<input name="appId" lay-verify="required" class="layui-input" placeholder="请输入应用号" lay-reqText="请输入应用号" />
</div>
<label for="mchId" class="layui-form-label layui-form-required">商户号</label>
<div class="layui-input-inline layui-inline-5">
<input name="mchId" lay-verify="required" class="layui-input" placeholder="请输入商户号" lay-reqText="请输入商户号" />
<div class="layui-form-item">
<label for="appType" class="layui-form-label layui-form-required">应用类型</label>
<div class="layui-input-inline layui-inline-5">
<select name="appType" lay-verify="required" placeholder="请输入应用类型" lay-reqText="请输入应用类型">
<option value="">请选择所属应用类型</option>
{{# layui.each(d.params.data.weiChatPayTradeType, function(index, item){ }}
<option value="{{ item.title }}">{{ item.description }}</option>
{{# }); }}
</select>
</div>
<label for="appId" class="layui-form-label layui-form-required">应用AppID</label>
<div class="layui-input-inline layui-inline-5">
<input name="appId" lay-verify="required" class="layui-input" placeholder="请输入应用号" lay-reqText="请输入应用号" />
</div>
<label for="mchId" class="layui-form-label layui-form-required">商户号</label>
<div class="layui-input-inline layui-inline-5">
<input name="mchId" lay-verify="required" class="layui-input" placeholder="请输入商户号" lay-reqText="请输入商户号" />
</div>
</div>
<div class="layui-form-item">
<label for="subAppId" class="layui-form-label">子商户应用号</label>
<div class="layui-input-inline layui-inline-4">
<input name="subAppId" class="layui-input" placeholder="请输入子商户应用号" lay-reqText="请输入子商户应用号" />
</div>
<div class="layui-form-mid">
目前仅调用服务商API时使用子商户的公众号移动应用AppId
</div>
</div>
<div class="layui-form-item">
<label for="subMchId" class="layui-form-label">子商户号</label>
<div class="layui-input-inline layui-inline-4">
<input name="subMchId" class="layui-input" placeholder="请输入子商户号" lay-reqText="请输入子商户号" />
</div>
<div class="layui-form-mid">
目前仅调用服务商API时使用子商户的商户号
</div>
</div>
<div class="layui-form-item">
<label for="notifyUrl" class="layui-form-label layui-form-required">支付回调通知</label>
<div class="layui-input-inline layui-inline-10">
<input name="notifyUrl" lay-verify="required" class="layui-input" placeholder="请输入支付回调通知" lay-reqText="请输入支付回调通知" value="https://api.pro.demo.coreshop.cn/Notify/WeChatPay/Unifiedorder" />
</div>
<div class="layui-form-mid">
webApi端接口地址+/Notify/WeChatPay/Unifiedorder
</div>
</div>
<div class="layui-form-item">
<label for="refundUrl" class="layui-form-label layui-form-required">退款回调</label>
<div class="layui-input-inline layui-inline-10">
<input name="refundUrl" lay-verify="required" class="layui-input" placeholder="请输入退款回调" lay-reqText="请输入退款回调" value="https://api.pro.demo.coreshop.cn/Notify/WeChatPay/Refund" />
</div>
<div class="layui-form-mid">
webApi端接口地址+/Notify/WeChatPay/Refund
</div>
</div>
<div class="layui-form-item">
<label for="refundUrl" class="layui-form-label layui-form-required">提现回调通知</label>
<div class="layui-input-inline layui-inline-10">
<input name="transferBillsUrl" lay-verify="required" class="layui-input" placeholder="请输入提现回调通知" lay-reqText="请输入提现回调通知" value="https://api.pro.demo.coreshop.cn/Notify/WeChatPay/TransferBillsCallBack" />
</div>
<div class="layui-form-mid">
webApi端接口地址+/Notify/WeChatPay/TransferBillsCallBack
</div>
</div>
<div class="layui-form-item">
<label for="jumpUrl" class="layui-form-label">跳转地址</label>
<div class="layui-input-inline layui-inline-8">
<input name="jumpUrl" class="layui-input" placeholder="请输入跳转地址" lay-reqText="请输入跳转地址" />
</div>
<div class="layui-form-mid">
H5PC端支付成功或者支付失败后跳转的查询支付状态的地址默认可不填写
</div>
</div>
<div class="layui-form-item">
<label for="isEnable" class="layui-form-label layui-form-required">是否开启</label>
<div class="layui-input-inline layui-inline-4">
<input type="checkbox" lay-filter="switch" name="isEnable" lay-skin="switch" lay-text="开启|关闭">
</div>
<label for="isDefault" class="layui-form-label layui-form-required">是否本类默认</label>
<div class="layui-input-inline layui-inline-4">
<input type="checkbox" lay-filter="switch" name="isDefault" lay-skin="switch" lay-text="开启|关闭">
</div>
</div>
</div>
<div class="layui-tab-item">
<div class="layui-form-item">
<label for="rsaPublicKey" class="layui-form-label">RSA公钥弃用</label>
<div class="layui-input-inline layui-inline-8">
<input name="rsaPublicKey" class="layui-input" placeholder="请输入RSA公钥" lay-reqText="请输入RSA公钥" />
</div>
<div class="layui-form-mid">
目前仅"企业付款到银行卡API"使用调用"获取RSA加密公钥API"即可获取
</div>
</div>
<div class="layui-form-item">
<label for="apiKey" class="layui-form-label layui-form-required">APIv2密钥</label>
<div class="layui-input-inline layui-inline-12">
<input name="apiKey" lay-verify="required" class="layui-input" placeholder="请输入API秘钥" lay-reqText="请输入API秘钥" />
</div>
<div class="layui-form-mid">
apiV2密钥
</div>
</div>
<div class="layui-form-item">
<label for="apiV3Key" class="layui-form-label">APIv3密钥</label>
<div class="layui-input-inline layui-inline-12">
<input name="apiV3Key" class="layui-input" placeholder="请输入APIv3密钥" lay-reqText="请输入APIv3密钥" />
</div>
<div class="layui-form-mid">
只有开启了商家付款到零钱的功能才需要录入APIv3密钥用于提现
</div>
</div>
<div class="layui-form-item">
<label for="certificateSerialNumber" class="layui-form-label layui-form-required">商户证书序列号</label>
<div class="layui-input-inline layui-inline-12">
<input name="certificateSerialNumber" lay-verify="required|verifycertificateSerialNumber" class="layui-input" lay-reqText="请输入商户证书序列号" placeholder="请输入商户证书序列号" />
</div>
<div class="layui-form-mid">
微信支付商户=> 账户中心=> API安全=> 商户API证书=> 管理证书中获取
</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="certificate" class="layui-form-label layui-form-required">
商户证书文件apiclient_cert.p12内容请选择apiclient_cert.p12文件会自动上传获取base64内容不需要打开复制内容到这里
<button type="button" class="layui-btn layui-btn-xs layui-btn-danger" id="doUpload">
<i class="layui-icon">&#xe67c;</i>
</button>
</label>
<div class="layui-input-block">
<textarea name="certificate" id="certificateBox" lay-verify="required" placeholder="请选择【apiclient_cert.p12】文件" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="certificatePrivateKey" class="layui-form-label layui-form-required">商户证书文件apiclient_key.pem内容注意是直接复制文件内容进来</label>
<div class="layui-input-block">
<textarea name="certificatePrivateKey" id="certificatePrivateKey" placeholder="请复制商户证书文件内容" class="layui-textarea"></textarea>
</div>
<div class="layui-form-mid">
设置微信支付商户 API 证书私钥通常为 `apiclient_key.pem` 文件内容
</div>
</div>
<div class="layui-form-item">
<label for="payType" class="layui-form-label layui-form-required">高级模式</label>
<div class="layui-input-inline layui-inline-5">
<select name="payType" lay-verify="required" placeholder="请输入高级模式" lay-reqText="请输入高级模式">
<option value="">请选择高级模式</option>
{{# layui.each(d.params.data.weChatPayIdentityVerificationMethods, function(index, item){ }}
<option value="{{ item.value }}">{{ item.description }}</option>
{{# }); }}
</select>
</div>
<div class="layui-form-mid">
APIv3密钥模式下会用到目前主要是商家转账功能如果选择微信支付公钥模式下面平台公钥ID平台公钥内容必填
</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="platformSerialNumber" class="layui-form-label">平台证书序列号</label>
<div class="layui-input-block">
<input name="platformSerialNumber" class="layui-input" lay-reqText="请输入平台证书序列号" placeholder="请输入平台证书序列号" />
</div>
<div class="layui-form-mid">
注意这是平台证书序列号不是商户证书序列号
</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="platformPublicKeyId" class="layui-form-label">平台公钥ID</label>
<div class="layui-input-block">
<input name="platformPublicKeyId" lay-verify="required|verifyplatformPublicKeyId" class="layui-input" lay-reqText="请输入平台公钥ID" placeholder="请输入平台公钥ID" />
</div>
<div class="layui-form-mid">
微信支付商户=> 账户中心=> API安全=> 微信支付公钥 => 申请公钥中查看
</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="platformPublicKey" class="layui-form-label">平台公钥内容直接复制pub_key.pem文件内容粘贴此处即可</label>
<div class="layui-input-block">
<textarea name="platformPublicKey" id="platformPublicKey" placeholder="请复制平台公钥内容" class="layui-textarea"></textarea>
</div>
<div class="layui-form-mid">
微信支付商户=> 账户中心=> API安全=> 微信支付公钥 => 申请公钥中下载
</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label for="apiKey" class="layui-form-label layui-form-required">API秘钥</label>
<div class="layui-input-inline layui-inline-12">
<input name="apiKey" lay-verify="required" class="layui-input" placeholder="请输入API秘钥" lay-reqText="请输入API秘钥" />
</div>
<div class="layui-form-mid">
apiV2密钥
</div>
</div>
<div class="layui-form-item">
<label for="apiV3Key" class="layui-form-label">APIv3密钥</label>
<div class="layui-input-inline layui-inline-12">
<input name="apiV3Key" class="layui-input" placeholder="请输入APIv3密钥" lay-reqText="请输入APIv3密钥" />
</div>
<div class="layui-form-mid">
只有开启了商家付款到零钱的功能才需要录入APIv3密钥用于提现
</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="certificate" class="layui-form-label layui-form-required">
微信支付商户p12证书请选择apiclient_cert.p12文件
<button type="button" class="layui-btn layui-btn-xs layui-btn-danger" id="doUpload">
<i class="layui-icon">&#xe67c;</i>
</button>
</label>
<div class="layui-input-block">
<textarea name="certificate" id="certificateBox" lay-verify="required" placeholder="请选择【apiclient_cert.p12】文件" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item">
<label for="rsaPublicKey" class="layui-form-label">RSA公钥</label>
<div class="layui-input-inline layui-inline-8">
<input name="rsaPublicKey" class="layui-input" placeholder="请输入RSA公钥" lay-reqText="请输入RSA公钥" />
</div>
<div class="layui-form-mid">
目前仅"企业付款到银行卡API"使用调用"获取RSA加密公钥API"即可获取
</div>
</div>
<div class="layui-form-item">
<label for="subAppId" class="layui-form-label">子商户应用号</label>
<div class="layui-input-inline layui-inline-4">
<input name="subAppId" class="layui-input" placeholder="请输入子商户应用号" lay-reqText="请输入子商户应用号" />
</div>
<div class="layui-form-mid">
目前仅调用服务商API时使用子商户的公众号移动应用AppId
</div>
</div>
<div class="layui-form-item">
<label for="subMchId" class="layui-form-label">子商户号</label>
<div class="layui-input-inline layui-inline-4">
<input name="subMchId" class="layui-input" placeholder="请输入子商户号" lay-reqText="请输入子商户号" />
</div>
<div class="layui-form-mid">
目前仅调用服务商API时使用子商户的商户号
</div>
</div>
<div class="layui-form-item">
<label for="notifyUrl" class="layui-form-label layui-form-required">支付回调通知</label>
<div class="layui-input-inline layui-inline-8">
<input name="notifyUrl" lay-verify="required" class="layui-input" placeholder="请输入支付回调通知" lay-reqText="请输入支付回调通知" value="https://api.pro.demo.corecms.cn/Notify/WeChatPay/Unifiedorder" />
</div>
<div class="layui-form-mid">
webApi端接口地址+/Notify/WeChatPay/Unifiedorder
</div>
</div>
<div class="layui-form-item">
<label for="refundUrl" class="layui-form-label layui-form-required">退款回调</label>
<div class="layui-input-inline layui-inline-8">
<input name="refundUrl" lay-verify="required" class="layui-input" placeholder="请输入退款回调" lay-reqText="请输入退款回调" value="https://api.pro.demo.corecms.cn/Notify/WeChatPay/Refund" />
</div>
<div class="layui-form-mid">
webApi端接口地址+/Notify/WeChatPay/Refund
</div>
</div>
<div class="layui-form-item">
<label for="jumpUrl" class="layui-form-label">跳转地址</label>
<div class="layui-input-inline layui-inline-8">
<input name="jumpUrl" class="layui-input" placeholder="请输入跳转地址" lay-reqText="请输入跳转地址" />
</div>
<div class="layui-form-mid">
H5PC端支付成功或者支付失败后跳转的查询支付状态的地址默认可不填写
</div>
</div>
<div class="layui-form-item">
<label for="isEnable" class="layui-form-label layui-form-required">是否开启</label>
<div class="layui-input-inline layui-inline-4">
<input type="checkbox" lay-filter="switch" name="isEnable" lay-skin="switch" lay-text="开启|关闭">
</div>
<label for="isDefault" class="layui-form-label layui-form-required">是否本类默认</label>
<div class="layui-input-inline layui-inline-4">
<input type="checkbox" lay-filter="switch" name="isDefault" lay-skin="switch" lay-text="开启|关闭">
</div>
</div>
<div class="layui-form-item text-right core-hidden">
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsWeChatPayConfig-createForm-submit" id="LAY-app-CoreCmsWeChatPayConfig-createForm-submit" value="确认添加">
@@ -134,7 +227,7 @@
layui.data.done = function (d) {
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d.params.data); }
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg', 'tabs'],
function () {
var $ = layui.$
, form = layui.form
@@ -142,6 +235,7 @@
, laydate = layui.laydate
, upload = layui.upload
, cropperImg = layui.cropperImg
, tabs = layui.tabs
, coreHelper = layui.coreHelper;
var upload = layui.upload;

View File

@@ -2,127 +2,219 @@
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsWeChatPayConfig-editForm" id="LAY-app-CoreCmsWeChatPayConfig-editForm">
<input type="hidden" name="id" value="{{d.params.data.model.id || '' }}" />
<div class="layui-form-item">
<label for="appType" class="layui-form-label layui-form-required">应用类型</label>
<div class="layui-input-inline layui-inline-5">
<select name="appType" lay-verify="required" placeholder="请输入应用类型" lay-reqText="请输入应用类型">
<option value="">请选择所属应用类型</option>
{{# layui.each(d.params.data.weiChatPayTradeType, function(index, item){ }}
<option value="{{ item.title }}" {{item.title===d.params.data.model.appType?'selected="selected"':''}}>{{ item.description }}</option>
{{# }); }}
</select>
</div>
<label for="appId" class="layui-form-label layui-form-required">应用AppID</label>
<div class="layui-input-inline layui-inline-5">
<input name="appId" lay-verify="required" class="layui-input" placeholder="请输入应用号" lay-reqText="请输入应用号" value="{{d.params.data.model.appId || '' }}" />
</div>
<label for="mchId" class="layui-form-label layui-form-required">商户号</label>
<div class="layui-input-inline layui-inline-5">
<input name="mchId" lay-verify="required" class="layui-input" placeholder="请输入商户号" lay-reqText="请输入商户号" value="{{d.params.data.model.mchId || '' }}" />
<div class="layui-tab" lay-filter="test-handle" lay-allowclose="true">
<ul class="layui-tab-title">
<li class="layui-this" lay-id="11">基础设置</li>
<li lay-id="22">证书密钥配置</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<div class="layui-form-item">
<label for="appType" class="layui-form-label layui-form-required">应用类型</label>
<div class="layui-input-inline layui-inline-5">
<select name="appType" lay-verify="required" placeholder="请输入应用类型" lay-reqText="请输入应用类型">
<option value="">请选择所属应用类型</option>
{{# layui.each(d.params.data.weiChatPayTradeType, function(index, item){ }}
<option value="{{ item.title }}" {{item.title===d.params.data.model.appType?'selected="selected"':''}}>{{ item.description }}</option>
{{# }); }}
</select>
</div>
<label for="appId" class="layui-form-label layui-form-required">应用AppID</label>
<div class="layui-input-inline layui-inline-5">
<input name="appId" lay-verify="required" class="layui-input" placeholder="请输入应用号" lay-reqText="请输入应用号" value="{{d.params.data.model.appId || '' }}" />
</div>
<label for="mchId" class="layui-form-label layui-form-required">商户号</label>
<div class="layui-input-inline layui-inline-5">
<input name="mchId" lay-verify="required" class="layui-input" placeholder="请输入商户号" lay-reqText="请输入商户号" value="{{d.params.data.model.mchId || '' }}" />
</div>
</div>
<div class="layui-form-item">
<label for="subAppId" class="layui-form-label">子商户应用号</label>
<div class="layui-input-inline layui-inline-4">
<input name="subAppId" class="layui-input" placeholder="请输入子商户应用号" lay-reqText="请输入子商户应用号" value="{{d.params.data.model.subAppId || '' }}" />
</div>
<div class="layui-form-mid">
目前仅调用服务商API时使用子商户的公众号移动应用AppId
</div>
</div>
<div class="layui-form-item">
<label for="subMchId" class="layui-form-label">子商户号</label>
<div class="layui-input-inline layui-inline-4">
<input name="subMchId" class="layui-input" placeholder="请输入子商户号" lay-reqText="请输入子商户号" value="{{d.params.data.model.subMchId || '' }}" />
</div>
<div class="layui-form-mid">
目前仅调用服务商API时使用子商户的商户号
</div>
</div>
<div class="layui-form-item">
<label for="notifyUrl" class="layui-form-label layui-form-required">支付回调通知</label>
<div class="layui-input-inline layui-inline-10">
<input name="notifyUrl" lay-verify="required" class="layui-input" placeholder="请输入支付回调通知" lay-reqText="请输入支付回调通知" value="{{d.params.data.model.notifyUrl || '' }}" />
</div>
<div class="layui-form-mid">
webApi端接口地址+/Notify/WeChatPay/Unifiedorder
</div>
</div>
<div class="layui-form-item">
<label for="refundUrl" class="layui-form-label layui-form-required">退款回调</label>
<div class="layui-input-inline layui-inline-10">
<input name="refundUrl" lay-verify="required" class="layui-input" placeholder="请输入退款回调" lay-reqText="请输入退款回调" value="{{d.params.data.model.refundUrl || '' }}" />
</div>
<div class="layui-form-mid">
webApi端接口地址+/Notify/WeChatPay/Refund
</div>
</div>
<div class="layui-form-item">
<label for="refundUrl" class="layui-form-label layui-form-required">提现回调通知</label>
<div class="layui-input-inline layui-inline-10">
<input name="transferBillsUrl" lay-verify="required" class="layui-input" placeholder="请输入提现回调通知" lay-reqText="请输入提现回调通知" value="{{d.params.data.model.transferBillsUrl || '' }}" />
</div>
<div class="layui-form-mid">
webApi端接口地址+/Notify/WeChatPay/TransferBillsCallBack
</div>
</div>
<div class="layui-form-item">
<label for="jumpUrl" class="layui-form-label">跳转地址</label>
<div class="layui-input-inline layui-inline-8">
<input name="jumpUrl" class="layui-input" placeholder="请输入跳转地址" lay-reqText="请输入跳转地址" value="{{d.params.data.model.jumpUrl || '' }}" />
</div>
<div class="layui-form-mid">
H5PC端支付成功或者支付失败后跳转的查询支付状态的地址默认可不填写
</div>
</div>
<div class="layui-form-item">
<label for="isEnable" class="layui-form-label layui-form-required">是否开启</label>
<div class="layui-input-inline layui-inline-4">
<input type="checkbox" lay-filter="switch" name="isEnable" {{ d.params.data.model.isEnable ? 'checked' : '' }} lay-skin="switch" lay-text="开启|关闭">
</div>
<label for="isDefault" class="layui-form-label layui-form-required">是否本类默认</label>
<div class="layui-input-inline layui-inline-4">
<input type="checkbox" lay-filter="switch" name="isDefault" {{ d.params.data.model.isDefault ? 'checked' : '' }} lay-skin="switch" lay-text="开启|关闭">
</div>
</div>
</div>
<div class="layui-tab-item">
<div class="layui-form-item">
<label for="rsaPublicKey" class="layui-form-label">RSA公钥弃用</label>
<div class="layui-input-inline layui-inline-8">
<input name="rsaPublicKey" class="layui-input" placeholder="请输入RSA公钥" lay-reqText="请输入RSA公钥" value="{{d.params.data.model.rsaPublicKey || '' }}" />
</div>
<div class="layui-form-mid">
目前仅"企业付款到银行卡API"使用调用"获取RSA加密公钥API"即可获取
</div>
</div>
<div class="layui-form-item">
<label for="apiKey" class="layui-form-label layui-form-required">APIv2密钥</label>
<div class="layui-input-inline layui-inline-12">
<input name="apiKey" lay-verify="required" class="layui-input" placeholder="请输入API秘钥" lay-reqText="请输入API秘钥" value="{{d.params.data.model.apiKey || '' }}" />
</div>
<div class="layui-form-mid">
apiV2密钥
</div>
</div>
<div class="layui-form-item">
<label for="apiV3Key" class="layui-form-label">APIv3密钥</label>
<div class="layui-input-inline layui-inline-12">
<input name="apiV3Key" class="layui-input" placeholder="请输入APIv3密钥" lay-reqText="请输入APIv3密钥" value="{{d.params.data.model.apiV3Key || '' }}" />
</div>
<div class="layui-form-mid">
只有开启了商家付款到零钱的功能才需要录入APIv3密钥用于提现
</div>
</div>
<div class="layui-form-item">
<label for="certificateSerialNumber" class="layui-form-label layui-form-required">商户证书序列号</label>
<div class="layui-input-inline layui-inline-12">
<input name="certificateSerialNumber" lay-verify="required|verifycertificateSerialNumber" value="{{d.params.data.model.certificateSerialNumber || '' }}" class="layui-input" lay-reqText="请输入商户证书序列号" placeholder="请输入商户证书序列号" />
</div>
<div class="layui-form-mid">
微信支付商户=> 账户中心=> API安全=> 商户API证书=> 管理证书中获取
</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="certificate" class="layui-form-label layui-form-required">
商户证书文件apiclient_cert.p12内容请选择apiclient_cert.p12文件会自动上传获取base64内容不需要打开复制内容到这里
<button type="button" class="layui-btn layui-btn-xs layui-btn-danger" id="doUpload">
<i class="layui-icon">&#xe67c;</i>
</button>
</label>
<div class="layui-input-block">
<textarea name="certificate" id="certificateBox" lay-verify="required" placeholder="请选择【apiclient_cert.p12】文件" class="layui-textarea">{{d.params.data.model.certificate || '' }}</textarea>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="certificatePrivateKey" class="layui-form-label layui-form-required">商户证书文件apiclient_key.pem内容注意是直接复制文件内容进来</label>
<div class="layui-input-block">
<textarea name="certificatePrivateKey" id="certificatePrivateKey" placeholder="请复制商户证书文件内容" class="layui-textarea">{{d.params.data.model.certificatePrivateKey || '' }}</textarea>
</div>
<div class="layui-form-mid">
设置微信支付商户 API 证书私钥通常为 `apiclient_key.pem` 文件内容
</div>
</div>
<div class="layui-form-item">
<label for="payType" class="layui-form-label layui-form-required">高级模式</label>
<div class="layui-input-block">
<select name="payType" lay-verify="required" placeholder="请输入高级模式" lay-reqText="请输入高级模式">
<option value="">请选择高级模式</option>
{{# layui.each(d.params.data.weChatPayIdentityVerificationMethods, function(index, item){ }}
<option value="{{ item.value }}" {{item.value===d.params.data.model.payType?'selected="selected"':''}}>{{ item.description }}</option>
{{# }); }}
</select>
</div>
<div class="layui-form-mid">
APIv3密钥模式下会用到目前主要是商家转账功能如果选择微信支付公钥模式下面平台公钥ID平台公钥内容必填转换模式是指从平台证书模式切换到公钥模式
</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="platformSerialNumber" class="layui-form-label">平台证书序列号</label>
<div class="layui-input-block">
<input name="platformSerialNumber" value="{{d.params.data.model.platformSerialNumber || '' }}" class="layui-input" lay-reqText="请输入平台证书序列号" placeholder="请输入平台证书序列号" />
</div>
<div class="layui-form-mid">
注意这是平台证书序列号不是商户证书序列号
</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="platformPublicKeyId" class="layui-form-label">平台公钥ID</label>
<div class="layui-input-block">
<input name="platformPublicKeyId" value="{{d.params.data.model.platformPublicKeyId || '' }}" class="layui-input" lay-reqText="请输入平台公钥ID" placeholder="请输入平台公钥ID" />
</div>
<div class="layui-form-mid">
微信支付商户=> 账户中心=> API安全=> 微信支付公钥 => 申请公钥中查看
</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="platformPublicKey" class="layui-form-label">平台公钥内容直接复制pub_key.pem文件内容粘贴此处即可</label>
<div class="layui-input-block">
<textarea name="platformPublicKey" id="platformPublicKey" placeholder="请复制平台公钥内容" class="layui-textarea">{{d.params.data.model.platformPublicKey || '' }}</textarea>
</div>
<div class="layui-form-mid">
微信支付商户=> 账户中心=> API安全=> 微信支付公钥 => 申请公钥中下载
</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label for="apiKey" class="layui-form-label layui-form-required">API秘钥</label>
<div class="layui-input-inline layui-inline-12">
<input name="apiKey" lay-verify="required" class="layui-input" placeholder="请输入API秘钥" lay-reqText="请输入API秘钥" value="{{d.params.data.model.apiKey || '' }}" />
</div>
<div class="layui-form-mid">
apiV2密钥
</div>
</div>
<div class="layui-form-item">
<label for="apiV3Key" class="layui-form-label">APIv3密钥</label>
<div class="layui-input-inline layui-inline-12">
<input name="apiV3Key" class="layui-input" placeholder="请输入APIv3密钥" lay-reqText="请输入APIv3密钥" value="{{d.params.data.model.apiV3Key || '' }}" />
</div>
<div class="layui-form-mid">
只有开启了商家付款到零钱的功能才需要录入APIv3密钥用于提现
</div>
</div>
<div class="layui-form-item layui-form-text">
<label for="certificate" class="layui-form-label layui-form-required">
微信支付商户p12证书请选择apiclient_cert.p12文件
<button type="button" class="layui-btn layui-btn-xs layui-btn-danger" id="doUpload">
<i class="layui-icon">&#xe67c;</i>
</button>
</label>
<div class="layui-input-block">
<textarea name="certificate" id="certificateBox" lay-verify="required" placeholder="请选择【apiclient_cert.p12】文件" class="layui-textarea">{{d.params.data.model.certificate || '' }}</textarea>
</div>
</div>
<div class="layui-form-item">
<label for="rsaPublicKey" class="layui-form-label">RSA公钥</label>
<div class="layui-input-inline layui-inline-8">
<input name="rsaPublicKey" class="layui-input" placeholder="请输入RSA公钥" lay-reqText="请输入RSA公钥" value="{{d.params.data.model.rsaPublicKey || '' }}" />
</div>
<div class="layui-form-mid">
目前仅"企业付款到银行卡API"使用调用"获取RSA加密公钥API"即可获取
</div>
</div>
<div class="layui-form-item">
<label for="subAppId" class="layui-form-label">子商户应用号</label>
<div class="layui-input-inline layui-inline-4">
<input name="subAppId" class="layui-input" placeholder="请输入子商户应用号" lay-reqText="请输入子商户应用号" value="{{d.params.data.model.subAppId || '' }}" />
</div>
<div class="layui-form-mid">
目前仅调用服务商API时使用子商户的公众号移动应用AppId
</div>
</div>
<div class="layui-form-item">
<label for="subMchId" class="layui-form-label">子商户号</label>
<div class="layui-input-inline layui-inline-4">
<input name="subMchId" class="layui-input" placeholder="请输入子商户号" lay-reqText="请输入子商户号" value="{{d.params.data.model.subMchId || '' }}" />
</div>
<div class="layui-form-mid">
目前仅调用服务商API时使用子商户的商户号
</div>
</div>
<div class="layui-form-item">
<label for="notifyUrl" class="layui-form-label layui-form-required">支付回调通知</label>
<div class="layui-input-inline layui-inline-8">
<input name="notifyUrl" lay-verify="required" class="layui-input" placeholder="请输入支付回调通知" lay-reqText="请输入支付回调通知" value="{{d.params.data.model.notifyUrl || '' }}" />
</div>
<div class="layui-form-mid">
webApi端接口地址+/Notify/WeChatPay/Unifiedorder
</div>
</div>
<div class="layui-form-item">
<label for="refundUrl" class="layui-form-label layui-form-required">退款回调</label>
<div class="layui-input-inline layui-inline-8">
<input name="refundUrl" lay-verify="required" class="layui-input" placeholder="请输入退款回调" lay-reqText="请输入退款回调" value="{{d.params.data.model.refundUrl || '' }}" />
</div>
<div class="layui-form-mid">
webApi端接口地址+/Notify/WeChatPay/Refund
</div>
</div>
<div class="layui-form-item">
<label for="jumpUrl" class="layui-form-label">跳转地址</label>
<div class="layui-input-inline layui-inline-8">
<input name="jumpUrl" class="layui-input" placeholder="请输入跳转地址" lay-reqText="请输入跳转地址" value="{{d.params.data.model.jumpUrl || '' }}" />
</div>
<div class="layui-form-mid">
H5PC端支付成功或者支付失败后跳转的查询支付状态的地址默认可不填写
</div>
</div>
<div class="layui-form-item">
<label for="isEnable" class="layui-form-label layui-form-required">是否开启</label>
<div class="layui-input-inline layui-inline-4">
<input type="checkbox" lay-filter="switch" name="isEnable" {{ d.params.data.model.isEnable ? 'checked' : '' }} lay-skin="switch" lay-text="开启|关闭">
</div>
<label for="isDefault" class="layui-form-label layui-form-required">是否本类默认</label>
<div class="layui-input-inline layui-inline-4">
<input type="checkbox" lay-filter="switch" name="isDefault" {{ d.params.data.model.isDefault ? 'checked' : '' }} lay-skin="switch" lay-text="开启|关闭">
</div>
</div>
<div class="layui-form-item text-right core-hidden">
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsWeChatPayConfig-editForm-submit" id="LAY-app-CoreCmsWeChatPayConfig-editForm-submit" value="确认编辑">

View File

@@ -154,12 +154,12 @@
{ field: 'apiKey', title: 'API秘钥', sort: false, width: 155 },
//{ field: 'apiV3Key', title: 'APIv3密钥', sort: false, width: 105 },
//{ field: 'certificate', title: 'p12证书base64', sort: false, width: 105 },
{ field: 'rsaPublicKey', title: 'RSA公钥', sort: false, width: 105 },
{ field: 'subAppId', title: '子商户应用号', sort: false, width: 105 },
{ field: 'subMchId', title: '子商户号', sort: false, width: 105 },
//{ field: 'rsaPublicKey', title: 'RSA公钥', sort: false, width: 105 },
//{ field: 'subAppId', title: '子商户应用号', sort: false, width: 105 },
//{ field: 'subMchId', title: '子商户号', sort: false, width: 105 },
{ field: 'notifyUrl', title: '支付回调通知', sort: false },
{ field: 'refundUrl', title: '退款回调', sort: false },
{ field: 'jumpUrl', title: '跳转地址', sort: false },
{ field: 'transferBillsUrl', title: '提现回调通知', sort: false },
{ field: 'isEnable', title: '是否开启', width: 95, templet: '#switch_isEnable', sort: false, unresize: true },
{ field: 'isDefault', title: '是否本类默认', width: 95, templet: '#switch_isDefault', sort: false, unresize: true },
//{ field: 'appType', title: '应用类型', sort: false, width: 105 },
@@ -246,7 +246,7 @@
});
});
// 禁止弹窗出现滚动条
$(layero).children('.layui-layer-content').css('overflow', 'visible');
//$(layero).children('.layui-layer-content').css('overflow', 'visible');
}
, btn: ['确定', '取消']
, yes: function (index, layero) {
@@ -292,7 +292,7 @@
});
})
// 禁止弹窗出现滚动条
$(layero).children('.layui-layer-content').css('overflow', 'visible');
//$(layero).children('.layui-layer-content').css('overflow', 'visible');
}
, btn: ['确定', '取消']
, yes: function (index, layero) {