config.html 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. {extend name="app/shop/view/base.html"/}
  2. {block name="resources"}
  3. <style>
  4. .input-text span{margin-right: 15px;}
  5. .form-wrap {margin-top: 0;}
  6. .file-upload {display: inline-block; margin-right: 5px;}
  7. .api-type-config {display: none}
  8. </style>
  9. {/block}
  10. {block name="main"}
  11. <div class="layui-form form-wrap">
  12. <div class="layui-form-item">
  13. <label class="layui-form-label">商户号:</label>
  14. <div class="layui-input-block">
  15. <input name="mch_id" type="text" value="{$info.value.mch_id ?? ''}" class="layui-input len-long" lay-verify="required">
  16. </div>
  17. <div class="word-aux"><span>[MCHID]</span>微信支付商户号</div>
  18. </div>
  19. <div class="layui-form-item">
  20. <label class="layui-form-label">支付接口类型:</label>
  21. <div class="layui-input-block">
  22. <input type="radio" title="v2" name="api_type" lay-filter="api_type" value="v2" {if !$info.value || ($info.value && $info.value.api_type eq 'v2')}checked{/if}>
  23. <input type="radio" title="v3" name="api_type" lay-filter="api_type" value="v3" {if $info.value && $info.value.api_type eq 'v3'}checked{/if}>
  24. </div>
  25. </div>
  26. <div class="layui-form-item api-type-config v2-config" {if empty($info.value) || ( ($info.value.api_type eq 'v2') || ($info.value.transfer_status == 1 && $info.value.transfer_type eq 'v2') ) }style="display:block"{/if}>
  27. <label class="layui-form-label"><span class="required">*</span>APIv2密钥 :</label>
  28. <div class="layui-input-block">
  29. <input name="pay_signkey" lay-verify="pay_signkey" type="text" value="{$info.value.pay_signkey ?? ''}" class="layui-input len-long">
  30. </div>
  31. <div class="word-aux">微信商户APIv2密钥 <a href="https://kf.qq.com/faq/180830UVRZR7180830Ij6ZZz.html" class="text-color" target="_blank">查看指引</a></div>
  32. </div>
  33. <div class="layui-form-item api-type-config v3-config" {if !empty($info.value) && ( ($info.value.api_type eq 'v3') || ($info.value.transfer_status == 1 && $info.value.transfer_type eq 'v3') ) }style="display:block"{/if}>
  34. <label class="layui-form-label"><span class="required">*</span>APIv3密钥 :</label>
  35. <div class="layui-input-block">
  36. <input name="v3_pay_signkey" lay-verify="v3_pay_signkey" type="text" value="{$info.value.v3_pay_signkey ?? ''}" class="layui-input len-long">
  37. </div>
  38. <div class="word-aux">微信商户APIv3密钥 <a href="https://kf.qq.com/faq/180830E36vyQ180830AZFZvu.html" class="text-color" target="_blank">查看指引</a></div>
  39. </div>
  40. <div class="layui-form-item">
  41. <label class="layui-form-label"><span class="required">*</span>支付证书cert:</label>
  42. <div class="layui-input-block">
  43. {notempty name="$info.value.apiclient_cert"}
  44. <p class="file-upload">已上传</p>
  45. {else/}
  46. <p class="file-upload">未上传</p>
  47. {/notempty}
  48. <button type="button" class="layui-btn" id="cert_upload">
  49. <i class="layui-icon">&#xe67c;</i>上传文件
  50. </button>
  51. <input type="hidden" name="apiclient_cert" class="layui-input len-long" value="{$info.value.apiclient_cert ?? ''}" lay-verify="apiclient_cert">
  52. </div>
  53. <div class="word-aux">上传apiclient_cert.pem文件</div>
  54. </div>
  55. <div class="layui-form-item">
  56. <label class="layui-form-label"><span class="required">*</span>支付证书key:</label>
  57. <div class="layui-input-block">
  58. {notempty name="$info.value.apiclient_key"}
  59. <p class="file-upload">已上传</p>
  60. {else/}
  61. <p class="file-upload">未上传</p>
  62. {/notempty}
  63. <button type="button" class="layui-btn" id="key_upload">
  64. <i class="layui-icon">&#xe67c;</i>上传文件
  65. </button>
  66. <input type="hidden" name="apiclient_key" class="layui-input len-long" value="{$info.value.apiclient_key ?? ''}" lay-verify="apiclient_key">
  67. </div>
  68. <div class="word-aux">上传apiclient_key.pem文件</div>
  69. <div class="word-aux">微信商户API证书 <a href="https://kf.qq.com/faq/161222NneAJf161222U7fARv.html" class="text-color" target="_blank">查看指引</a></div>
  70. </div>
  71. <input type="hidden" name="plateform_cert" class="layui-input len-long" value="{$info.value.plateform_cert ?? ''}">
  72. <div class="layui-form-item">
  73. <label class="layui-form-label">是否启用支付:</label>
  74. <div class="layui-input-inline">
  75. <input type="checkbox" name="pay_status" value="1" lay-skin="switch" {if condition="$info.value && $info.value.pay_status == 1"} checked {/if} />
  76. </div>
  77. </div>
  78. <div class="layui-form-item">
  79. <label class="layui-form-label">是否启用退款:</label>
  80. <div class="layui-input-inline">
  81. <input type="checkbox" name="refund_status" value="1" lay-skin="switch" {if condition="$info.value && $info.value.refund_status == 1"} checked {/if} />
  82. </div>
  83. </div>
  84. <div class="layui-form-item">
  85. <label class="layui-form-label">是否启用转账:</label>
  86. <div class="layui-input-inline">
  87. <input type="checkbox" name="transfer_status" value="1" lay-skin="switch" {if condition="$info.value && $info.value.transfer_status == 1"} checked {/if} lay-filter="transfer_status"/>
  88. </div>
  89. </div>
  90. <div class="transfer-config" {if condition="!$info.value || $info.value.transfer_status != 1"}style="display:none;"{/if}>
  91. <div class="layui-form-item">
  92. <label class="layui-form-label">转账使用产品:</label>
  93. <div class="layui-input-inline">
  94. <input type="radio" title="企业付款到零钱" name="transfer_type" lay-filter="transfer_type" value="v2" {if !$info.value || ($info.value && $info.value.transfer_type eq 'v2')}checked{/if}>
  95. <input type="radio" title="商家转账到零钱" name="transfer_type" lay-filter="transfer_type" value="v3" {if $info.value && $info.value.transfer_type eq 'v3'}checked{/if}>
  96. </div>
  97. </div>
  98. </div>
  99. <div class="form-row">
  100. <button class="layui-btn" lay-submit lay-filter="save">保存</button>
  101. <button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
  102. </div>
  103. </div>
  104. {/block}
  105. {block name="script"}
  106. <script>
  107. layui.use(['form'], function() {
  108. var form = layui.form,
  109. repeat_flag = false; //防重复标识
  110. form.render();
  111. form.on('switch(transfer_status)', function (data) {
  112. if ($(data.elem).is(':checked')) {
  113. $('.transfer-config').show()
  114. } else {
  115. $('.transfer-config').hide()
  116. }
  117. })
  118. form.on('radio(api_type)', function (data) {
  119. $('.api-type-config').hide();
  120. $('.' + data.value + '-config').show();
  121. $('.' + $('[name="transfer_type"]:checked').val() + '-config').show();
  122. })
  123. form.on('radio(transfer_type)', function (data) {
  124. $('.api-type-config').hide();
  125. $('.' + data.value + '-config').show()
  126. $('.' + $('[name="api_type"]:checked').val() + '-config').show();
  127. })
  128. new Upload({
  129. elem: '#cert_upload',
  130. url: ns.url("wechatpay://shop/pay/uploadwechatcert"),
  131. accept: 'file',
  132. callback:function (res) {
  133. if (res.code >= 0) {
  134. $("input[name='apiclient_cert']").val(res.data.path);
  135. $("input[name='apiclient_cert']").siblings(".file-upload").text("已上传");
  136. }
  137. }
  138. });
  139. new Upload({
  140. elem: '#key_upload',
  141. url: ns.url("wechatpay://shop/pay/uploadwechatcert"),
  142. accept: 'file',
  143. callback:function (res) {
  144. if (res.code >= 0) {
  145. $("input[name='apiclient_key']").val(res.data.path);
  146. $("input[name='apiclient_key']").siblings(".file-upload").text("已上传");
  147. }
  148. }
  149. });
  150. form.verify({
  151. pay_signkey: function(value){
  152. if (!$('.v2-config').is(':hidden') && !/[\S]+/.test(value)) return '请设置微信APIv2密钥';
  153. },
  154. v3_pay_signkey: function(value){
  155. if (!$('.v3-config').is(':hidden') && !/[\S]+/.test(value)) return '请设置微信APIv3密钥';
  156. },
  157. apiclient_cert: function(value){
  158. if (!/[\S]+/.test(value)) return '请上传apiclient_cert.pem文件';
  159. },
  160. apiclient_key: function(value){
  161. if (!/[\S]+/.test(value)) return '请上传apiclient_key.pem文件';
  162. }
  163. })
  164. /**
  165. * 监听提交
  166. */
  167. form.on('submit(save)', function(data) {
  168. if (repeat_flag) return false;
  169. repeat_flag = true;
  170. $.ajax({
  171. url: ns.url("wechatpay://shop/pay/config"),
  172. data: data.field,
  173. dataType: 'JSON',
  174. type: 'POST',
  175. success: function(res) {
  176. repeat_flag = false;
  177. if (res.code == 0) {
  178. layer.confirm('编辑成功', {
  179. title:'操作提示',
  180. btn: ['返回列表', '继续操作'],
  181. yes: function(){
  182. location.href = ns.url("shop/config/pay")
  183. },
  184. btn2: function() {
  185. location.reload();
  186. }
  187. });
  188. }else{
  189. layer.msg(res.message);
  190. }
  191. }
  192. });
  193. });
  194. });
  195. function back() {
  196. location.href = ns.url("shop/config/pay");
  197. }
  198. </script>
  199. {/block}