C\#공중전화 개발 자가 사용자 에 게 보 너 스 를 지급 합 니 다.

11986 단어 C#공중 호상여금
보너스 기능 에 대한 간단 한 소개:
1.업 체 가 인 터 페 이 스 를 호출 할 때 발송 대상 을 지정 하고 금액 을 발송 하 는 방식 으로 보 너 스 를 지급 한다.이런 방식 으로 업 체 가 다양한 활동 장면 에 유연 하 게 활용 할 수 있다.
2.보 너 스 를 수령 한 후에 사용자 의 자금 은 위 챗 잔돈 에 직접 들 어가 복잡 한 수상 절 차 를 피하 고 사용자 에 게 위 챗 결제 원생 의 유창 한 체험 을 제공 합 니 다.
현금 보너스 홈 페이지
현금 보너스 인 터 페 이 스 를 호출 하려 면 인증서 에 사용 해 야 합 니 다.상점 플랫폼 에 가서 인증 서 를 다운로드 하 십시오.
홈 페이지 상세 인증서 소개
현금 보 너 스 를 보 내 는 것 은 상점 플랫폼 잔액 에서 공제 하 는 것 이기 때문에 상점 플랫폼 의 계좌 잔액 은 반드시 충분 한 잔액 이 있어 야 한다.
다음은 보너스 인터페이스 상세 코드 호출:
1.서명 한 MD5 암호 화 클래스:

/// <summary>
/// MD5UtilHelper      。
/// </summary>
public class MD5UtilHelper
{
 public MD5UtilHelper()
 {
  //
  // TODO:            
  //
 }

 /// <summary>
   ///      MD5    
 /// </summary>
 /// <param name="encypStr"></param>
 /// <param name="charset"></param>
 /// <returns></returns>
 public static string GetMD5(string encypStr, string charset)
 {
  string retStr;
  MD5CryptoServiceProvider m5 = new MD5CryptoServiceProvider();

  //  md5  
  byte[] inputBye;
  byte[] outputBye;

  //  GB2312               .
  try
  {
   inputBye = Encoding.GetEncoding(charset).GetBytes(encypStr);
  }
  catch (Exception ex)
  {
   inputBye = Encoding.GetEncoding("GB2312").GetBytes(encypStr);
  }
  outputBye = m5.ComputeHash(inputBye);

  retStr = System.BitConverter.ToString(outputBye);
  retStr = retStr.Replace("-", "").ToUpper();
  return retStr;
 }
}
2.처리 매개 변수의 종류:

public class RequestHandler
 {

  public RequestHandler(HttpContext httpContext)
  {
   Parameters = new Hashtable();

   this.HttpContext = httpContext ?? HttpContext.Current;

  }
  /// <summary>
  ///   
  /// </summary>
  private string Key;

  protected HttpContext HttpContext;

  /// <summary>
  ///      
  /// </summary>
  protected Hashtable Parameters;

  /// <summary>
  /// debug  
  /// </summary>
  private string DebugInfo;

  /// <summary>
  ///      
  /// </summary>
  public virtual void Init()
  {
  }
  /// <summary>
  ///   debug  
  /// </summary>
  /// <returns></returns>
  public String GetDebugInfo()
  {
   return DebugInfo;
  }
  /// <summary>
  ///     
  /// </summary>
  /// <returns></returns>
  public string GetKey()
  {
   return Key;
  }
  /// <summary>
  ///     
  /// </summary>
  /// <param name="key"></param>
  public void SetKey(string key)
  {
   this.Key = key;
  }

  /// <summary>
  ///      
  /// </summary>
  /// <param name="parameter"></param>
  /// <param name="parameterValue"></param>
  public void SetParameter(string parameter, string parameterValue)
  {
   if (parameter != null && parameter != "")
   {
    if (Parameters.Contains(parameter))
    {
     Parameters.Remove(parameter);
    }

    Parameters.Add(parameter, parameterValue);
   }
  }


  /// <summary>
  ///   md5  ,   :     a-z  ,            
  /// </summary>
  /// <param name="key">   </param>
  /// <param name="value">   </param>
  /// key value            
  /// <returns></returns>
  public virtual string CreateMd5Sign(string key, string value)
  {
   StringBuilder sb = new StringBuilder();

   ArrayList akeys = new ArrayList(Parameters.Keys);
   akeys.Sort();

   foreach (string k in akeys)
   {
    string v = (string)Parameters[k];
    if (null != v && "".CompareTo(v) != 0
     && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0)
    {
     sb.Append(k + "=" + v + "&");
    }
   }

   sb.Append(key + "=" + value);
   string sign = MD5UtilHelper.GetMD5(sb.ToString(), GetCharset()).ToUpper();

   return sign;
  }

  /// <summary>
  ///   XML
  /// </summary>
  /// <returns></returns>
  public string ParseXML()
  {
   StringBuilder sb = new StringBuilder();
   sb.Append("<xml>");
   foreach (string k in Parameters.Keys)
   {
    string v = (string)Parameters[k];
    if (Regex.IsMatch(v, @"^[0-9.]$"))
    {

     sb.Append("<" + k + ">" + v + "</" + k + ">");
    }
    else
    {
     sb.Append("<" + k + "><![CDATA[" + v + "]]></" + k + ">");
    }

   }
   sb.Append("</xml>");
   return sb.ToString();
  }


  /// <summary>
  ///   debug  
  /// </summary>
  /// <param name="debugInfo"></param>
  public void SetDebugInfo(String debugInfo)
  {
   this.DebugInfo = debugInfo;
  }

  public Hashtable GetAllParameters()
  {
   return this.Parameters;
  }

  protected virtual string GetCharset()
  {
   return this.HttpContext.Request.ContentEncoding.BodyName;
  }
 }
3.현금 보너스 처리 유형:

 /// <summary>
 ///          
 /// </summary>
 public static class TenPay
 {

  #region         
  /// <summary>
  ///               
  ///             openid     
  /// </summary>
  /// <param name="certPassword">apiclient_cert.p12        </param>
  /// <param name="data">      post xml  </param>
  /// <param name="certPath">apiclient_cert.p12       (  :E:\projects\  \        \    API  </param>
  /// <param name="timeOut"></param>
  /// <returns></returns>
  public static string Sendredpack(string data, string certPassword,string certPath, int timeOut = Config.TIME_OUT)
  {
   var urlFormat = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
   string cert = certPath;

   ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
   X509Certificate2 cer = new X509Certificate2(cert, certPassword, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);

   var formDataBytes = data == null ? new byte[0] : Encoding.UTF8.GetBytes(data);
   MemoryStream ms = new MemoryStream();
   ms.Write(formDataBytes, 0, formDataBytes.Length);
   ms.Seek(0, SeekOrigin.Begin);//        

   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlFormat);
   request.ClientCertificates.Add(cer);
   request.Method = "POST";
   request.Timeout = timeOut;

   request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36";

   #region       
   if (ms != null)
   {
    ms.Position = 0;
    //     
    Stream requestStream = request.GetRequestStream();
    byte[] buffer = new byte[1024];
    int bytesRead = 0;
    while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) != 0)
    {
     requestStream.Write(buffer, 0, bytesRead);
    }
    ms.Close();//      
   }
   #endregion

   HttpWebResponse response = (HttpWebResponse)request.GetResponse();

   using (Stream responseStream = response.GetResponseStream())
   {
    using (StreamReader myStreamReader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8")))
    {
     string retString = myStreamReader.ReadToEnd();
     return retString;
    }
   }
  }
  private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
  {
   if (errors == SslPolicyErrors.None)
    return true;
   return false;
  }
  #endregion

 }
4.현금 보너스 인터페이스 호출

#region     
bool fals = false; //          
string xmlResult = null; //         xml
string certPath = null; //           
string data = null; //             
try
{
 //        
 RequestHandler packageReqHandler = new RequestHandler(null);
 //   
 packageReqHandler.Init();
 string nonceStr = TenPayV3Util.GetNoncestr(); //   
 //  package    
 packageReqHandler.SetParameter("nonce_str", nonceStr); //     ,   32 
 packageReqHandler.SetParameter("mch_billno", System.Configuration.ConfigurationManager.AppSettings["TenPayV3_MchId"] + model.JournalNumber);//     (         )  :mch_id+yyyymmdd+10           。             ,         。
 packageReqHandler.SetParameter("mch_id", System.Configuration.ConfigurationManager.AppSettings["TenPayV3_MchId"]); //          
 packageReqHandler.SetParameter("wxappid", System.Configuration.ConfigurationManager.AppSettings["TenPayV3_AppId"]);//         ID(   corpid   appId)。       appid       appid( mp.weixin.qq.com   ),   APP appid( open.weixin.qq.com   )。 
 packageReqHandler.SetParameter("send_name", "  ");//    
 packageReqHandler.SetParameter("re_openid", model.BankCard); //  openid           wxappid  openid
 packageReqHandler.SetParameter("total_amount", Convert.ToInt32((decimal)(model.Amount * 100M)).ToString(CultureInfo.InvariantCulture)); //        
 packageReqHandler.SetParameter("total_num", "1"); //       
 packageReqHandler.SetParameter("wishing", "    "); //     
 packageReqHandler.SetParameter("client_ip", HttpContext.Current.Request.UserHostAddress);//Ip  
 packageReqHandler.SetParameter("act_name", "    ");//    
 packageReqHandler.SetParameter("remark", "    ");  //  
 string sign = packageReqHandler.CreateMd5Sign("key", System.Configuration.ConfigurationManager.AppSettings["TenPayV3_Key"]);
 packageReqHandler.SetParameter("sign", sign);      //  
 data = packageReqHandler.ParseXML();
 certPath = Server.MapPath("~/") + System.Configuration.ConfigurationManager.AppSettings["certPath"];
 xmlResult = Sendredpack(data, System.Configuration.ConfigurationManager.AppSettings["TenPayV3_MchId"],certPath);
 var res = XDocument.Parse(xmlResult);
 string return_code = res.Element("xml").Element("return_code").Value;
 if ("SUCCESS".Equals(return_code))
 {
  string result_code = res.Element("xml").Element("result_code").Value;
  if ("SUCCESS".Equals(result_code))
  {
   fals = true;
  }
 }
}
catch (Exception exception)
{
}
#endregion
메모:인증서 가 있 는 폴 더 권한,IIS 는 이 폴 더 를 조작 할 수 있 는 권한 이 있어 야 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기