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 는 이 폴 더 를 조작 할 수 있 는 권한 이 있어 야 합 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.