示例#1
0
    private void WxPayJS()
    {
        string siteUrl = MojoCube.Web.Site.Cache.GetDomain(strLanguage);  //获取网站的域名

        MojoCube.Web.Payment.List payment = new MojoCube.Web.Payment.List();
        payment.GetDataByType(2);

        MojoCube.Web.Order.List order = new MojoCube.Web.Order.List();
        order.GetData(int.Parse(ViewState["pk_Order"].ToString()));

        if (order.pk_Order == 0 || order.StatusID > 0 || order.fk_Member.ToString() != Session["Member_UserID"].ToString())
        {
            Response.Redirect(MojoCube.Web.Site.Cache.GetUrlExtension("Order", strLanguage));
        }

        appId = payment.AppID;
        string partnerId = payment.PartnerID;
        string key       = payment.KeyCode;
        string secret    = payment.Secret;
        int    price     = (int)(order.Amount * 100);
        string body      = order.Description;

        if (body.Length > 20)
        {
            body = body.Substring(0, 20);
        }

        //调用【网页授权获取用户信息】接口获取用户的openid和access_token
        GetOpenidAndAccessToken(appId, secret);

        UnifiedOrder order1 = new UnifiedOrder();

        order1.appid            = appId;
        order1.mch_id           = partnerId;
        order1.nonce_str        = TenpayUtil.getNoncestr();
        order1.body             = body;
        order1.out_trade_no     = order.OrderNumber;
        order1.total_fee        = price;
        order1.spbill_create_ip = Page.Request.UserHostAddress;
        order1.notify_url       = siteUrl + MojoCube.Web.Site.Cache.GetUrlExtension("WxPay_Notify", strLanguage);
        order1.trade_type       = "JSAPI";
        if (ViewState["OpenID"] != null)
        {
            order1.openid = ViewState["OpenID"].ToString();  //JSAPI必须传入openid
        }

        TenpayUtil tu = new TenpayUtil();

        prepayId  = tu.getPrepay_id(order1, key);
        nonceStr  = order1.nonce_str;
        timeStamp = TenpayUtil.getTimestamp();

        SortedDictionary <string, string> sParams = new SortedDictionary <string, string>();

        sParams.Add("appId", appId);
        sParams.Add("nonceStr", nonceStr);
        sParams.Add("package", "prepay_id=" + prepayId);
        sParams.Add("signType", "MD5");
        sParams.Add("timeStamp", timeStamp);
        sign = tu.getsign(sParams, key);
    }