위 챗 애플 릿 결제 c\#배경 실현 방법

위 챗 애플 릿 결제 c\#배경 구현
오늘 은 여러분 께 비교적 간단 한 결제 백 스테이지 처 리 를 가 져 다 드 리 겠 습 니 다.
먼저 공식 c\#템 플 릿(WxPayAPI)을 다운로드 하고 템 플 릿(WxPayAPI)을 서버 에 추가 한 다음 WxPayAPI 프로젝트 디 렉 터 리 에 두 개의'일반 처리 프로그램'(GetOpenid.ashx,pay.ashx 로 이름 변경)을 추가 합 니 다.
이후 business 디 렉 터 리 에 있 는 JsApipay.cs 를 열 고 JsApipay.cs 에서 다음 두 곳 을 수정 합 니 다.

그리고 GetOpenid.ashx 에 코드 를 다음 과 같이 추가 합 니 다.

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   
      
    }
pay.ashx 에 코드 를 추가 하면 다음 과 같 습 니 다.

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   
    }
 그리고 발표 하 시 면 됩 니 다.
 위 챗 애플 릿 의 코드 는 다음 과 같 습 니 다.


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 
   } 
  }) 
 }, 

궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기