.NET接入微信支付(一)JS API接入 V3
前段时间刚接完银联支付,完事后又接了微信支付,前段时间一直急着上线,微信的接入一直没有时间处理,今天我们就来整理一下微信支付的接入方法和要点。

配置:
首先呢微信支付需要通过审核,审核啥的准备工作我就不说了。
这里有个微信配置

这里的授权目录影响着后面的支付能不能成功进行,
本文讲的主要是JS API。
支付流程:
首先用调用微信统一支付接口,接口成功后返回一个预支付的回话标识(prepay_id),这个标识的有效期是2个小时。然后使用这个预支付标识,调用微信内置浏览器的WeixinJSBridge
对象,完成支付。
代码部分:
1.请求预支付标识部分
Dictionary<string, string> param = new Dictionary<string, string>();
//appid
param.Add("appid", appid);
//商户号
param.Add("mch_id", mch_id);
//支付类型
param.Add("trade_type", "JSAPI");
//随机字符串
param.Add("nonce_str", WeiXinPayUtil.GetNoncestr());
//商品描述
param.Add("body", request.Body);
//商品详情
param.Add("detail", request.Detail);
//回调地址
param.Add("notify_url","");
//商户订单号
param.Add("out_trade_no", "");
//支付金额
param.Add("total_fee", (payfee * 100).ToString("#"));
//终端IP
param.Add("spbill_create_ip", "");
//Openid
param.Add("openid", "");
//签名
param.Add("sign", WeiXinMD5Util.Sign(WeixinTradeConfig.FormatBizQueryParaMapForUnifiedPay(dict),
WeixinTradeConfig.key));
string postData = WeixinTradeXmlDocument.DictionaryToXmlString(dict);
//获取统一支付接口的数据
var result = WeiXinRequestPlus.PostXmlResponse<GetTradeWeiXinPayResult>(WeixinTradeConfig.
WeiXin_Pay_UnifiedPrePayUrl,postData);
//准备返回的数据
Dictionary<string, string> requestdict = new Dictionary<string, string>();
requestdict.Add("appId", “appid”);
requestdict.Add("package", string.Format("prepay_id={0}", result.Prepay_Id));
//时间戳
requestdict.Add("timeStamp", WeiXinPayUtil.GetTimestamp());
//随机值
requestdict.Add("nonceStr", WeiXinPayUtil.GetNoncestr());
requestdict.Add("signType", "MD5");
TradeWeiXinPayModule weixmodule = new TradeWeiXinPayModule()
{
PayMethod = TradePayMethods.WeixinPay,
Prepayid = result.Prepay_Id,
Appid = WeixinTradeConfig.appid,
NonceStr = requestdict["nonceStr"],
TimeStamp = requestdict["timeStamp"],
SerialID = request.SerialIDString,
PaySign = WeiXinMD5Util.Sign(WeixinTradeConfig.FormatBizQueryParaMapForUnifiedPay(requestdict),
WeixinTradeConfig.key)
};
2.关于上面请求预支付用到的一些公用方法,我也不一一列出来了,文件已打包,
weixinpayTool.zip
3.收集步骤一返回的参数,生成一段JS,并在微信中打开,
<script>
function onBridgeReady() {
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": "@Model.Appid", //公众号名称,由商户传入
"timeStamp": "@Model.Timestamp", //时间戳
"nonceStr": "@Model.Noncestr", //随机串
"package": "@Model.Prepayid", //扩展包
"signType": "MD5", //微信签名算法:MD5
"paySign": "@Model.Paysign" //微信签名
},
function (res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
window.location.href = "";
} else {
if(confrim("您并未支付成功,是否继续付款?"){
window.location.reload();
}else{
//用户不想付款了 跳走
}
}
}
);
}
if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady',
onBridgeReady, false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady',
onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady',
onBridgeReady);
}
} else {
onBridgeReady();
} </script>
有一点别忘了修改了这段js所在的html必须在微信的授权目录中打开。
如果你在开发中发现本文有什么BUG,敬请留言告诉我~
原文地址:http://www.lorna.com.cn/Articles/Index/b2a594a1-6dff-4fe2-ae2f-0671a915a5d5
.NET接入微信支付(一)JS API接入 V3的更多相关文章
- 在Web应用中接入微信支付的流程之极简清晰版
在Web应用中接入微信支付的流程之极简清晰版 背景: 在Web应用中接入微信支付,我以为只是调用几个API稍作调试即可. 没想到微信的API和官方文档里隐坑无数,致我抱着怀疑人生的心情悲愤踩遍了丫们布 ...
- 在Web应用中接入微信支付的流程之极简清晰版 (转)
在Web应用中接入微信支付的流程之极简清晰版 背景: 在Web应用中接入微信支付,我以为只是调用几个API稍作调试即可. 没想到微信的API和官方文档里隐坑无数,致我抱着怀疑人生的心情悲愤踩遍了丫们布 ...
- Unity接入微信支付SDK 2022年版安卓篇
最近1年转了UE开发,博客更新的比较少,技术栈宽了不少,以后有空尽量多更新,也方便总结记忆 Unity接入微信支付整个过程坑比较多,网上之前的教程要么比较老,要么比较零碎,只能东拼西凑摸索,跑通后还是 ...
- 微信公众平台Js API(WeixinApi)
微信公众平台Js API(WeixinApi): https://github.com/zxlie/WeixinApi#user-content-3%E9%9A%90%E8%97%8F%E5%BA%9 ...
- 为产品接入微信支付解决方案(公司&个人)
微信支付个人及公司的区别 H5支付:主要实现的效果是在非微信内网页中点击支付,拉起微信APP内的微信支付进行付款. APP支付:主要实现的效果是在APP内部点击支付,拉起微信APP内的微信支付进行付款 ...
- 微信支付相关js
import $ from "jquery" /*支付功能开始*/let ip="";let nonceStr;let appId;let mchId;let ...
- 微信支付回调 敏感信息解密 v3 php
今天博主用了一波微信的v3版本的支付,支付成功后发现回调跟v2的完全不一样,于是去看了了一波v3的文档,发现信息是经过加密的,需要解密才能获取的到 但是最悲催的是文档上没写怎么解密的,经过了一下午的百 ...
- iOS - WXPay 微信支付
1.微信支付申请 微信支付官方集成指引 微信支付官方集成指导视频 微信 APP 支付开发者文档 微信公众平台 微信开放平台 微信商户平台 1.1 微信 APP 支付申请步骤 APP 支付:APP 支付 ...
- 微信支付之扫码、APP、小程序支付接入详解
做电商平台的小伙伴都知道,支付服务是必不可少的一部分,今天我们开始就说说支付服务的接入及实现.目前在国内,几乎90%中小公司的支付系统都离不开微信支付和支付宝支付.那么大家要思考了,为什么微信支付和支 ...
随机推荐
- React-Native在gitHub下载的Demo不能运行问题!!!
1.目前找到的最可行的运行React-Native Demo的解决方案 请参考:http://blog.csdn.net/shubinniu/article/details/52873250 2.检查 ...
- 【python】-- try except (异常捕获)、断言
try except (异常捕获) 当程序出错了,但是我们又不想让用户看到这个错误,而且我在写程序的时候已经预料到了它可以出现这样的错误,出现这样的错误代表着什么,我们可以提前捕获这些个错误 1.异常 ...
- Unicode Category
Lu(letter,uppercase):大写字母. Ll(letter.lowercase):小写字母. Lt(letter,titlecase):词首字母大写的字母. Lm(letter,modi ...
- Linux安装过程记录信息
全新的linux安装完成后,会在root目录下有一下三个文件,记录了Linux的安装细节 anaconda-ks.cfg 以Kickstart配置文件的格式记录安装过程中设置的选项信息 install ...
- C#DataSet/DataAdapter
DataReader必须持续连接,所以在调用方法SqlDataReader作为返回类型时候,必须在方法外关闭流,很不方便. DataAdapter用于对数据源检索数据并填充到DataSet中的表.Da ...
- pinpoint agent线程模型
pinpoint agent线程模型 以下分析基于pinpoint1.7.1版本 pinpoint agent主要使用到的异步线程有4个 DeadlockMonitorThread : 死锁监测线程, ...
- PAT 天梯赛 L2-010. 排座位 【并查集】
题目链接 https://www.patest.cn/contests/gplt/L2-010 思路 因为 题意中 朋友的朋友 就是朋友 那么 朋友的关系 用 并查集 保存 但是 敌对关系 只有直接的 ...
- socket编程详解
http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html http://blog.csdn.net/hguisu/article/de ...
- 事件监听机制——鼠标事件MouseEvent
鼠标事件 鼠标事件包括鼠标的双击.左击.右击.中间键等等,本文进行事件加载进行简单介绍,具体可以参考键盘事件. import java.awt.*; import java.awt.event.*; ...
- [原创]java WEB学习笔记33:Session 案例 之 购物车
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...