Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Erläuterung der Beispiele für C#-Hintergrundimplementierungsmethoden für die Bezahlung des WeChat-Miniprogramms

Ausführliche Erläuterung der Beispiele für C#-Hintergrundimplementierungsmethoden für die Bezahlung des WeChat-Miniprogramms

小云云
小云云Original
2018-01-09 13:02:324448Durchsuche

In diesem Artikel werden hauptsächlich relevante Informationen zur C#-Hintergrundimplementierungsmethode des WeChat-Miniprogramms vorgestellt. Ich hoffe, dass dieser Artikel jedem helfen kann, eine solche Funktion zu realisieren.

WeChat-Miniprogramm-Zahlungs-C#-Hintergrundimplementierung

Heute stellen wir Ihnen eine relativ einfache Zahlungshintergrundverarbeitung vor

Laden Sie zunächst das offizielle C# herunter Vorlage (WxPayAPI), fügen Sie die Vorlage (WxPayAPI) zum Server hinzu und fügen Sie dann zwei „allgemeine Handler“ im WxPayAPI-Projektverzeichnis hinzu (umbenannt in GetOpenid.ashx, pay.ashx)

und öffnen Sie dann das Unternehmensverzeichnis Ändern Sie JsApiPay.cs unter JsApiPay.cs die folgenden zwei Stellen in JsApiPay.cs

und fügen Sie dann den folgenden Code zu GetOpenid.ashx hinzu:


public class GetOpenid : IHttpHandler 
  { 
    public string openid { get; set; } 
 
    public void ProcessRequest(HttpContext context) 
    { 
       
      string code = HttpContext.Current.Request.QueryString["code"]; 
      WxPayData data = new WxPayData(); 
      data.SetValue("appid", WxPayConfig.APPID); 
      data.SetValue("secret", WxPayConfig.APPSECRET); 
      data.SetValue("code", code); 
      data.SetValue("grant_type", "authorization_code"); 
      string url = "https://api.weixin.qq.com/sns/oauth2/access_token?" + data.ToUrl(); 
 
      //请求url以获取数据 
      string result = HttpService.Get(url); 
 
      Log.Debug(this.GetType().ToString(), "GetOpenidAndAccessTokenFromCode response : " + result); 
 
      //保存access_token,用于收货地址获取 
      JsonData jd = JsonMapper.ToObject(result); 
      //access_token = (string)jd["access_token"]; 
 
      //获取用户openid 
      openid = (string)jd["openid"]; 
      context.Response.Write(openid);//获取H5调起JS API参数 
      
    }

Fügen Sie den folgenden Code zu pay.ashx hinzu:


public class pay : IHttpHandler 
  { 
    
    public void ProcessRequest(HttpContext context) 
    {        
      context.Response.ContentType = "text/plain"; 
      
      string openid = HttpContext.Current.Request.QueryString["openid"]; 
      string total_fee = HttpContext.Current.Request.QueryString["total_fee"]; 
      JsApiPay jsApiPay = new JsApiPay(context); 
      jsApiPay.openid = openid; 
      jsApiPay.total_fee = int.Parse(total_fee); 
      WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult(); 
      context.Response.Write(jsApiPay.GetJsApiParameters());//获取H5调起JS API参数 
    }

Veröffentlichen Sie ihn dann (denken Sie daran, die entsprechende Informationsanwendung auszufüllen). usw. )

Der Code des WeChat-Applets lautet wie folgt:


wxpay: function () { 
  var that = this 
  //登陆获取code 
  wx.login({ 
   success: function (res) { 
    console.log(res.code) 
    //获取openid 
    that.getOpenId(res.code) 
   } 
  }); 
 }, 
 getOpenId: function (code) { 
//获取openID 
   
  var that = this; 
  wx.request({ 
   url: 'http://*******/WxPayAPI/GetOpenid.ashx?code='+ code , //改为自己的域名
   data: {}, 
  // method: 'GET', 
   success: function (res) { 
   var a12=res.data 
   that.generateOrder(a12) 
   //console.log(a12) 
   }, 
   fail: function () { 
    // fail 
   }, 
   complete: function () { 
    // complete 
   } 
  }) 
 }, 
/**生成商户订单 */ 
 generateOrder: function (openid) { 
  var that = this; 
  //console.log(openid) 
  //统一支付 
  wx.request({ 
   url: 'http://*******/WxPayAPI/pay.ashx', //改为自己的域名
   //method: 'GET', 
   data: { 
    total_fee: 1,//1分 
    openid: openid, 
   }, 
   header: { 
    'content-type': 'application/json' 
   }, 
  
   success: function (res) { 
  
    var pay = res.data 
    //发起支付 
      
    var timeStamp = pay.timeStamp; 
    var packages = pay.package; 
    var paySign = pay.paySign; 
    var nonceStr = pay.nonceStr; 
    var param = { "timeStamp": timeStamp, "package": packages, "paySign": paySign, "signType": "MD5", "nonceStr": nonceStr }; 
     
    that.pay(param) 
   }, 
  }) 
 }, 
  
 /* 支付  */ 
 pay: function (param) { 
  
  wx.requestPayment({ 
   timeStamp: param.timeStamp, 
   nonceStr: param.nonceStr, 
   package: param.package, 
   signType: param.signType, 
   paySign: param.paySign, 
   success: function (res) { 
    // success 
     
    wx.navigateBack({ 
     delta: 1, // 回退前 delta(默认为1) 页面 
     success: function (res1) { 
      wx.showToast({ 
       title: '支付成功', 
       icon: 'success', 
       duration: 2000 
      }); 
       
     }, 
     fail: function () { 
      // fail 
        
     }, 
     complete: function () { 
        
     } 
    }) 
   }, 
   fail: function (res) { 
    // fail 
   }, 
   complete: function () { 
    // complete 
   } 
  }) 
 },

Verwandte Empfehlungen:

WeChat-Applet-Zahlung und -Rückerstattung Beispielzahlung für einen Zahlungsprozess

So implementieren Sie die Zahlung und Rückerstattung des WeChat-Miniprogramms in PHP

Detaillierte Erklärung des WeChat-Miniprogramms Zusammenfassung der Fehler bei der Entwicklung der Zahlungsfunktion

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Beispiele für C#-Hintergrundimplementierungsmethoden für die Bezahlung des WeChat-Miniprogramms. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn