jsp调起微信支付问题

zhangfengyi 2016-12-02 01:46:46
jsp 写的调起支付页面,输入金额,调起支付接口,但是在实际使用的过程中,发现调起两次支付接口,不知道是前台jsp页面有问题,还是后台页面有问题
截图如下:

前台页面如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%
String mer=request.getParameter("merchantno");
String mern=request.getParameter("merchantname");
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<script type="text/javascript">
var root = "netpay-portal"; //js中存放当前页面的root路径方便调用
</script>

<script type="text/javascript" src="netpay-portal/js/jquery/jquery-1.7.2.js"></script>
<html>
<head>
<base href="<%=basePath%>">

<title><%=mern%></title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
<meta name="format-detection" content="telephone=no">
<title>订单确认</title>
<link rel="stylesheet" type="text/css" href="netpay-portal/css/bills/style.css">
<style type="text/css">
.ums_button span {
background-color: #dedcda;
}
.ums_form .ums_text {
border-top: 1px solid #dddddd;
}
</style>


</head>

<body>
<%
String ss="";
String str= request.getHeader("user-agent");
int ali=str.indexOf("AlipayClient");
if(ali>=0)
{
ss="AlipayClient";
}
int mic=str.indexOf("MicroMessenger");
if(mic>=0)
{
ss="MicroMessenger";
}
%>

<input type="hidden" name="payUrl" id="payUrl" value="http://www.j.com:8080/hylEsaPayClient/hylPayForm?merchant=<%=mer%>&brow=<%=ss %>&merchantname=<%=mern %>"/>
<input type="hidden" name="browserType" id="browserType" value="generalBrowser"/>
<input type="hidden" name="payable" id="payable" value="true"/>

<article>
<section>
<div class="ums_top">
<div></div>
<p id="productName"><%=mern%></p>
</div>
</section>
<section>
<div class="ums_form ums_padding_left16" id="descForm">
<div class="ums_text">
<span class="ums_text_label">商品详情</span>
<span class="ums_text_value ums_margin_right8"></span>
</div>
</div>
</section>
<section>
<!--<input type="hidden" name="merchant" value="000194502820161" />-->
<div class="ums_form ums_padding_left16" id="amountForm">
<div class="ums_input">
<span class="ums_input_label">付款金额</span>
<div class="ums_input_content">
<input type="text" placeholder="请输入付款金额"
style="ime-mode:disabled"
oninput="closeBtShow(this)"
onKeyUp="amount(this)"
id="amount">
</div>
<span style="display:none" onclick="clearInput(this)" class="ums_input_icon ums_icon_close"></span>
</div>
<div class="ums_input">
<div class="ums_input_content">
<input type="text" placeholder="付款附言(25字以内)"
style="ime-mode:disabled"
oninput="closeBtShow(this)"
maxlength="25"
id="memo">
</div>
<span style="display:none" onclick="clearInput(this)" class="ums_input_icon ums_icon_close"></span>
</div>
</div>
</section>


<div class="ums_button" id="payButton" onclick="pay()">
<span>立即支付</span>
</div>

<div class="ums_line_height42 ums_text_align_center ums_font_size12">
<span class="ums_color_light_grey">由</span>
<span class="ums_color_normal_grey">**有限公司</span>
<span class="ums_color_light_grey">提供支付服务</span>
</div>
</article>

<script type="text/javascript" src="netpay-portal/js/common/common.js"></script>
<script type="text/javascript">
var payUrl = $("#payUrl").val();
var browserType = $("#browserType").val();
var payable = $("#payable").val();

var isNextBtnClick = false;
function pay() {
if (!isNextBtnClick) {
isNextBtnClick = true;
setTimeout(function () {
isNextBtnClick = false;
}, 10 * 1000);

if ($("#amount").val() != "") {
$("#payButton>span").css("background-color", "#cb4c12");
var amount = toNumber($("#amount").val());
var memo = trim($("#memo").val());
//var merch=trim($("merchant").val());
//amount = "" + amount.mul(100);
amount = "" + amount;
var url = payUrl + "&amount=" + amount;
//url+="&merchant="+merch;
if (!isEmpty(memo)) {
url += "&memo=" + memo;
}
window.location.href = url;
}
}
}

$(function () {
if ("" == "") {
$("#descForm").hide();
$("#amountForm").css("margin-top", "0");
$("#amountForm").css("border-top", "none");
$("#amountForm>div").css("border-top", "1px solid #dddddd");
} else {
$("#amountForm").css("margin-top", "10px");
$("#descForm").css("border-top", "none");
}

if ("true" == payable) {
return;
}

$("#payButton").css("display", "none");
});

function clearInput(obj) {
$(obj).prev().find("input").val("");
$(obj).hide();
if ($("#amount").val() == "") {
$("#payButton>span").css("background-color", "#dedcda");
}

}
function closeBtShow(obj) {
if ($(obj).val() != "" && $(obj).val() != undefined) {
$(obj).parent().next().css("display", "");
if ($("#amount").val() != "") {
$("#payButton>span").css("background-color", "#ff5816");
}
}
else {
if ($("#amount").val() == "") {
$("#payButton>span").css("background-color", "#dedcda");
}
$(obj).parent().next().hide();
}
}
Number.prototype.mul = function (arg) {
var m = 0, s1 = this.toString(), s2 = arg.toString();
try {
m += s1.split(".")[1].length;
} catch (e) {
}
try {
m += s2.split(".")[1].length;
} catch (e) {
}
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
};
function toNumber(x) {
//去掉空格
var temp = trim(x);
//为空或不是数字则返回空
if (isEmpty(temp) || isNaN(temp)) {
return "";
}
return Number(temp);
}

/**
* 实时动态强制更改用户录入
* arg1 inputObject
**/
function amount(th){
var regStrs = [
['^0(\\d+)$', '$1'], //禁止录入整数部分两位以上,但首位为0
['[^\\d\\.]+$', ''], //禁止录入任何非数字和点
['\\.(\\d?)\\.+', '.$1'], //禁止录入两个以上的点
['^(\\d+\\.\\d{2}).+', '$1'] //禁止录入小数点后两位以上
];
for(i=0; i<regStrs.length; i++){
var reg = new RegExp(regStrs[i][0]);
th.value = th.value.replace(reg, regStrs[i][1]);
}
}

</script>

</body>
</html>
...全文
1182 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38359457 2017-06-15
  • 打赏
  • 举报
回复
有DEMO吗
张--小涛涛 2016-12-16
  • 打赏
  • 举报
回复
这个场景确实是公众号H5支付。 完成这个场景的前提是 你们公司/平台 需要申请一个公众号,并且通过认证,然后开通微信支付,微信会再给你们一个商户号。 你说的用户扫码说白了就是引导用户在微信中进入你们的业务地址【付款网页】 在用户扫码后,需要开发人员做的事情按顺序如下: 1、用户扫二维码后的地址并不是真实的业务链接,而是【微信网页授权链接】,在【微信网页授权链接中】附加有业务链接。只有在用户同意授权后才会进入你们的业务域名。 2、此时,用户网页中展现的是你们的页面,但是经过第一步,微信已经将相关网页权限赋予了你们的业务域名。你在此页面调用微信js接口获取到用户的openid、输入金额调用下单接口进行下单获取到prepared_id【预支付交易码】, 3、获取到了预支付交易码后便可以调用微信js支付接口掉起来微信支付功能。 现在总结一下, 上述第一条:依赖微信网页授权的实现,具体参考【https://mp.weixin.qq.com/wiki?id=mp1445241432&lang=zh_CN】 上述第二条:依赖微信支付下单接口,这里使用H5下单具体参考【https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1】 上述第三条:依赖网页支付接口,具体参考【https://mp.weixin.qq.com/wiki?id=mp1445241432&lang=zh_CN】中14.1
zhangfengyi 2016-12-15
  • 打赏
  • 举报
回复
引用 7 楼 jintaohahahaha 的回复:
微信扫码支付场景是用户无需任何操作,商户调用微信支付接口进行下单,微信会回传给商户一个二维码信息,由商户展示给用户。用户只需要使用微信扫一扫扫描二维码便可以支付。 在你一楼中我看见了请输入金额和立即支付按钮,我想这个应该是用户页面吧。如果这样的话就不符合微信扫码支付场景了,更像公众号H5支付的业务场景。
目前我们的这个应用场景: 我们有N多商户,为每个商户分配一个二维码,用户需要支付的时候用微信或支付宝扫描二维码,输入金额,完成支付。比如饭店是我们的商户,我们给他分配一个二维码,用户去消费的时候扫描二维码,输入金额,完成支付。 这个场景是公众号H5支持的业务场景吗,如果是的话,我需要怎样做,申请公众帐号吗? 我现在没有申请公众帐号,也没有申请服务号,直接用微信扫描支付
张--小涛涛 2016-12-15
  • 打赏
  • 举报
回复
微信扫码支付场景是用户无需任何操作,商户调用微信支付接口进行下单,微信会回传给商户一个二维码信息,由商户展示给用户。用户只需要使用微信扫一扫扫描二维码便可以支付。 在你一楼中我看见了请输入金额和立即支付按钮,我想这个应该是用户页面吧。如果这样的话就不符合微信扫码支付场景了,更像公众号H5支付的业务场景。
zhangfengyi 2016-12-10
  • 打赏
  • 举报
回复
引用 5 楼 jintaohahahaha 的回复:
你是下图的哪一种,我只弄过 公众号H5支付 扫码支付
扫码支付,第三方的接口,只要微信调起就重复执行两次,当时我想会不会调用微信接口的问题,把所有调用微信接口全部注释掉,还是重复执行,而支付宝就没有这个问题,这就奇怪了。
zhangfengyi 2016-12-08
  • 打赏
  • 举报
回复
引用 3 楼 jintaohahahaha 的回复:
你的支付用的是jssdk支付吗?
使用的是第三方的支付接口
张--小涛涛 2016-12-08
  • 打赏
  • 举报
回复
你是下图的哪一种,我只弄过 公众号H5支付 扫码支付
张--小涛涛 2016-12-06
  • 打赏
  • 举报
回复
你的支付用的是jssdk支付吗?
zhangfengyi 2016-12-04
  • 打赏
  • 举报
回复
大家没人知道为什么吗

3,143

社区成员

发帖
与我相关
我的任务
社区描述
微信开发即微信公众平台开发,将企业信息、服务、活动等内容通过微信网页的方式进行表现,通过二次开发可以将公众账号由一个媒体型营销工具转化成提供服务的产品。
社区管理员
  • 微信开发
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧