dailiboy 2018-05-14 07:18 采纳率: 14.3%
浏览 1928
已采纳

微信H5支付,如何在后台.cs文档中调用前台JS的callpay()方法。ASP.NET

由于在支付前需要对数据库进行操作。所以我需要在数据操作完成后才进行支付。。
而我在后台使用两种方法来调用前台的callpay()方法,都无法使用。

ClientScript.RegisterStartupScript(this.GetType(), "myscript", "<script>callpay();</script>");
Response.Write("<script type='text/javascript'>function callpay()</script>");

请问我该如何处理,采用什么方式才能从后台调用前台JS的callpay()方法。

我很笨,所以需要能清楚的指定,该如何处理。。。
我现在把两个文件的代码贴出来,请大家看看。。
pay.aspx

 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="pay.aspx.cs" Inherits="Sczhw.pay" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>眉山鑫本科技--易捷通-综合生活服务平台</title>
    <meta name="viewport" content="width=640px, maximum-scale=1.0, user-scalable=no"/>
    <script type="text/javascript" src="/scripts/jquery-1.4.1.js"></script>
    <script type="text/javascript" src="/scripts/jquery-1.4.1.min.js"></script>
    <script type="text/javascript" src="/scripts/jquery-1.4.1-vsdoc.js"></script>
    <script type="text/javascript" src="/scripts/jQuery.md5.js"></script>
    <script type="text/javascript">
        $(function () {
            $(window).bind('resize load', function() {
                $("body").css("zoom", $(window).width() / 640);
                $("body").css("display", "block");
                $("body").css("zoom", $(window).width() / 640);
            });
        })
    </script>
   <script type="text/javascript">

       //调用微信JS api 支付
       function jsApiCall()
       {
           WeixinJSBridge.invoke(
           'getBrandWCPayRequest',
           <%=wxJsApiParam%>,//josn串
                    function (res)
                    {
                        if (res.err_msg == "get_brand_wcpay_request:ok")
                        {
                            var OrderId=$("#OrderId").val();
                            var orderProductName=$("#orderProductName").val();
                            var orderMoneySum=$("#orderMoneySum").val();

                            window.location.href="http://msxinben.cn/fk.aspx?OrderId="+OrderId+"&orderMoneySum="+orderMoneySum+"&orderProductName="+orderProductName;//支付成功后的跳转页面

                        }else
                        {
                            WeixinJSBridge.call('closeWindow');
                        }

                    }
                    );
       }

       //function yzbd()
       //{
       //    var i = 0;

       //    if(i == 0)
       //    {
       //        callpay();  
       //    }
       //}

       function callpay()
       {
           if (typeof WeixinJSBridge == "undefined")
           {
               if (document.addEventListener)
               {
                   document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
               }
               else if (document.attachEvent)
               {
                   document.attachEvent('WeixinJSBridgeReady', jsApiCall);
                   document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
               }
           }
           else
           {
               jsApiCall();
           }
       }

           </script>
    <style type="text/css">
        .font20{font-size:20px; width:300px;}
    </style>
</head>
<body style="margin:0 0 0 0;">
    <form id="form1" runat="server">
    <div style="width:640px; height:308px; background:url(/images/newhead.jpg);"></div>
    <div style="width:640px;">
        <table style="font-size:14px; width:640px; vertical-align:middle; font-size:20px; font-weight:bold;">
            <tr style="height:30px;">
                <td style="text-align:right;">公司名称:</td>
                <td style="text-align:left;"><asp:TextBox runat="Server" ID="companyText" CssClass="font20"></asp:TextBox>(必填)</td>
            </tr>
            <tr style="height:20px;">
                <td colspan="2"><asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="companyText"
                            ErrorMessage="请输入公司名称!"></asp:RequiredFieldValidator></td>
            </tr>
            <tr style="height:30px;">
                <td style="text-align:right;">纳税人识别号:</td>
                <td style="text-align:left;"><asp:TextBox runat="Server" ID="noText" CssClass="font20"></asp:TextBox>(必填)</td>
            </tr>
            <tr style="height:20px;">
                <td colspan="2"><asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="noText"
                            ErrorMessage="请输入纳税人识别号!"></asp:RequiredFieldValidator></td>
            </tr>
            <tr style="height:30px;">
                <td style="text-align:right;">联系人:</td>
                <td style="text-align:left;"><asp:TextBox runat="Server" ID="menText" CssClass="font20"></asp:TextBox>(必填)</td>
            </tr>
            <tr style="height:20px;">
                <td colspan="2"><asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="menText"
                            ErrorMessage="请输入联系人!"></asp:RequiredFieldValidator></td>
            </tr>
            <tr style="height:30px;">
                <td style="text-align:right;">联系人手机号码:</td>
                <td style="text-align:left;"><asp:TextBox runat="Server" ID="menphoneText" CssClass="font20"></asp:TextBox>(必填)</td>
            </tr>
            <tr style="height:20px;">
                <td colspan="2"><asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="menphoneText"
                            ErrorMessage="请输入联系人电话!"></asp:RequiredFieldValidator></td>
            </tr>
            <tr style="height:30px;">
                <td style="text-align:right;">联系人邮箱:</td>
                <td style="text-align:left;"><asp:TextBox runat="Server" ID="emailText" CssClass="font20"></asp:TextBox></td>
            </tr>
            <tr style="background-image:url(/images/midbg.jpg); height:259px;">
                <td colspan="2"></td>
            </tr>
            <tr>
                <td style="text-align:center;" colspan="2"><asp:ImageButton ImageUrl="/images/quedingbtn.jpg" runat="server" ID="submitbtn" OnClick="submitBtn_Click" AlternateText="确定" /></td>
            </tr>
        </table>
    </div>
    <div style="width:640px; height:77px; background:url(/images/newfoot.jpg);"></div>
    </form>
</body>
</html>

pay.aspx.cs

 using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.IO;

namespace Sczhw
{
    public partial class pay : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                    JsApiPay jsApiPay = new JsApiPay(this);
                    try
                    {
                        string total_fee = "0.01";// Request["total_fee"];
                        orderMoneySum = total_fee;
                        string ParkName = "服务费";// Request["ParkName"];
                        orderProductName = ParkName+"停车费用";
                        OrderId = "145448545";// Request["OrderId"];
                        if (string.IsNullOrWhiteSpace(total_fee)||total_fee=="0")
                        {
                            throw new WxPayException("<span style='color:#FF0000;font-size:20px'>" + "费用为零,请求参数错误" + "</span>");
                        }

                        jsApiPay.total_fee =int.Parse((Convert.ToDouble(total_fee)*100).ToString());
                        Money = (Convert.ToDouble(jsApiPay.total_fee)/100).ToString();
                        jsApiPay.orderid = OrderId;
                        //JSAPI支付预处理
                        try
                        {
                            Common common = new Common(Context);
                            jsApiPay.openid = common.GetOpenId();
                            if (Common.OpenId == "Openid")
                            {
                                throw new WxPayException("OpenId为空无法下单!");
                            }
                            jsApiPay.access_token = Common.access_token;

                            WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult(ParkName);//ParkName不能是空,这是一个大坑
                            wxJsApiParam = jsApiPay.GetJsApiParameters();//获取H5调起JS API参数 
                        }
                        catch (Exception ex)
                        {
                            Response.Write("<span style='color:#FF0000;font-size:20px'>" + "下单失败,请返回重试:" + ex.InnerException.Message + "</span>");
                        }
                    }
                    catch (Exception ex)
                    {
                        Response.Write("<span style='color:#FF0000;font-size:20px'>" + "页面加载出错,请重试:" + ex.Message + "</span>");
                    }
            }
        }

        public string wxJsApiParam { get; set; } //H5调起JS API参数
        public string Money { get; set; }
        public string OrderId { get; set; }
        public string orderMoneySum { get; set; }//商品金额
        public string orderProductName { get; set; }//商品名称

        protected void submitBtn_Click(object sender, ImageClickEventArgs e)
        {
            Session["companyVar"] = companyText.Text.ToString();
            Session["noVar"] = noText.Text.ToString();
            Session["menVar"] = menText.Text.ToString();
            Session["menphoneVar"] = menphoneText.Text.ToString();
            Session["emailVar"] = emailText.Text.ToString();
            Session["dateVar"] = DateTime.Now.ToString();
            //ClientScript.RegisterStartupScript(this.GetType(), "myscript", "<script>callpay();</script>");
            Response.Write("<script type='text/javascript'>function callpay()</script>");
        }
    }
}
  • 写回答

3条回答

  • Go 旅城通票 2018-05-14 08:01
    关注
     Response.Write是在aspx的html最前面输出
    ClientScript.RegisterStartupScript在runat=server的表单后输出的,你的callpay方法要在runat=server的表单表单前定义,如果在runat=server的表单表单后方法没定义当然报错,而且完全没有必要服务器端注册或者输出,直接放置<script>callpay();</script>在aspx页面上就行了,这个代码块只需要放在callpay定义之后就行
    
    <form runat="server"></form>
    <script>function callpay() { alert('123') }</script>
    <script>callpay();</script>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿