WeChat-JSAPI支付
Posted 山水之间
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WeChat-JSAPI支付相关的知识,希望对你有一定的参考价值。
特别注意----JSAPI只能在微信环境下 测试!2017-04-19
配置:微信公众号中 添加微信支付配置--请认真填写配置并获取下面对应的数据才能正常运行。
=======================【基本信息设置】==================== /* 微信公众号信息配置 * APPID:绑定支付的APPID(必须配置) * MCHID:商户号(必须配置) * KEY:商户支付密钥,参考开户邮件设置(必须配置) * APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置) */ public const string APPID = AuthConnect.WeChat_AppId; public const string MCHID = "0000000"; public const string KEY = AuthConnect.WeChat_AppPayKey; public const string APPSECRET = AuthConnect.WeChat_AppKey;
1、首先引用API基类:OrderDetail.cs、TenpayUtil.cs、---可以到我的github上获取
2、C# 服务端代码---获取JSAPI需要的各个参数,并返回给前端
UnifiedOrder order = new UnifiedOrder(); order.appid = AppId; order.mch_id = partnerId; order.nonce_str = TenpayUtil.getNoncestr(); order.body = body; order.out_trade_no = orderNumber; order.total_fee = Price; order.spbill_create_ip = Page.Request.UserHostAddress; order.notify_url = "Notify.aspx"; order.trade_type = "JSAPI"; if (ViewState["OpenID"] != null) { order.openid = ViewState["OpenID"].ToString(); //JSAPI必须传入openid } TenpayUtil tu = new TenpayUtil(); PrepayId = tu.getPrepay_id(order, key); string package = "prepay_id=" + PrepayId; NonceStr = order.nonce_str; TimeStamp = TenpayUtil.getTimestamp(); SortedDictionary<string, string> sParams = new SortedDictionary<string, string>(); sParams.Add("appId", AppId); sParams.Add("nonceStr", NonceStr); sParams.Add("package", package); sParams.Add("signType", "MD5"); sParams.Add("timeStamp", TimeStamp); Sign = tu.getsign(sParams, key); Json = "{\"code\":\"1\",\"data\":{\"appId\":\"" + AppId + "\",\"nonceStr\":\"" + NonceStr + "\",\"package\":\"" + package + "\",\"timeStamp\":\"" + TimeStamp + "\",\"signType\":\"MD5\",\"paySign\":\"" + Sign + "\"}}";
3、前端JS---:接收后台传过来的参数,如果正确无误就可以在微信中调起支付功能。
$.post("/Pay/PayApi.aspx", ret, function (result) { var result = JSON.parse(result); //后台获取到的参数 if (result.code == 1) { WeixinJSBridge.invoke(‘getBrandWCPayRequest‘, result.data, function (res) { // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。 switch (res.errMsg) { case "get_brand_wcpay_request:ok": alert("支付成功"); break; case "get_brand_wcpay_request:cancel": alert("支付取消"); break; default: alert("支付失败"); break; } } ); } }
大功告成! 祝君好运~
以上是关于WeChat-JSAPI支付的主要内容,如果未能解决你的问题,请参考以下文章