Beispiel #1
0
    /// <summary>
    /// 卡券签名
    /// 1.将 api_ticket(特别说明:api_ticket 相较 appsecret 安全性更高,同时兼容老版本文档中使用的 appsecret 作为签名凭证。)、app_id、location_id、times_tamp、nonce_str、card_id、card_type的value值进行字符串的字典序排序。
    /// 2.将所有参数字符串拼接成一个字符串进行sha1加密,得到cardSign。
    /// </summary>
    /// <param name="apiTicket"></param>
    /// <param name="noncestr"></param>
    /// <param name="timestamp"></param>
    /// <returns></returns>
    public static string MakeCardSign(string apiTicket, out string noncestr, out string timestamp)
    {
        string cardSign = string.Empty;

        try
        {
            string param = string.Empty;
            noncestr  = WeChatPayData.MakeNonceStr();
            timestamp = WeChatPayData.MakeTimeStamp();
            WeChatPayData signData = new WeChatPayData();
            signData.SetValue(apiTicket, apiTicket);
            signData.SetValue(Config.APPID, Config.APPID);
            signData.SetValue(timestamp, timestamp);
            signData.SetValue(noncestr, noncestr);
            //参与加密的参数value连接成字符串
            foreach (KeyValuePair <string, object> kvp in signData.GetValues())
            {
                param += kvp.Key;
            }

            Log.Debug("MakeJsAPISign", "SHA1 encrypt param : " + param);
            //SHA1加密
            cardSign = FormsAuthentication.HashPasswordForStoringInConfigFile(param, "SHA1");
            Log.Debug("MakeJsAPISign", "SHA1 encrypt result : " + cardSign);
        }
        catch (Exception ex)
        {
            Log.Error("MakeJsAPISign", ex.ToString());
            throw ex;
        }

        return(cardSign);
    }
Beispiel #2
0
        public string GetPrePayUrl(string out_trade_no)
        {
            Log.Info("微信端二维码生成开始...");

            WeChatPayData data = new WeChatPayData();

            data.SetValue("appid", BasicConfig.WeChat_AppId);                                //公众帐号id
            data.SetValue("mch_id", BasicConfig.WeChat_MchId);                               //商户号
            data.SetValue("nonce_str", GenerateNonceStr());                                  //随机字符串
            data.SetValue("product_id", out_trade_no);                                       //商品ID
            data.SetValue("time_stamp", DateTimeUtil.DateTimeToUnixTimestamp(DateTime.Now)); //时间戳
            data.SetValue("sign", data.MakeSign(BasicConfig.WeChat_AppKey));                 //签名
            string str = ToUrlParams(data.GetValues());                                      //转换为URL串
            string url = "weixin://wxpay/bizpayurl?" + str;

            Log.Info("微信端二维码生成结束,二维码Url : " + url);

            return(url);
        }