위 챗 애플 릿 결제 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
}
})
},
궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OpenSSL 생 성 ssl 인증서텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.