.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%中小公司的支付系统都离不开微信支付和支付宝支付.那么大家要思考了,为什么微信支付和支 ...
随机推荐
- spider_action
spider from mobile to mobile to mobile from selenium import webdriver from selenium.webdriver.chrome ...
- GTK+重拾--07 GTK+中的事件
(一):写在前面 在这一个小节中,我们主要是学习GTK+2.0中最重要的部分.就是信号和事件.GTK+函数工具库是基于"事件"系统的.全部的GUI应用都是基于"事件&qu ...
- myBatis中使用Map进行遍历
myBatis中使用Map获取key, value的方式 第一次的配置 <trim prefix=" tags =case" suffix="end"&g ...
- 图片加载Picasso
https://github.com/square/picasso 基本用法 // 基本用法 // 普通加载图片 Picasso.with(PicassoActivity.this) .load(&q ...
- 每天一个Linux命令(29)du命令
du命令是对文件和目录磁盘使用的空间的查看. (1)用法: 用法: du [选项] [文件] (2)功能: 功能: 报告磁盘空间使用情况 (3) ...
- vim 的复制粘贴命令,以及使用寄存器来存放要复制的内容;
一,y(yanks)复制,p(paste)粘贴: yy 复制当前行,2yy,复制2行: Y 复制整行:Y=yy; p 粘贴到光标后: P 粘贴到光标前: 注意vim会知道你复制内容的是整行还是一个矩 ...
- poj 3126 Prime Path 【bfs】
题目地址:http://poj.org/problem?id=3126 Input One line with a positive number: the number of test cases ...
- 吴恩达机器学习笔记(三) —— Regularization正则化
主要内容: 一.欠拟合和过拟合(over-fitting) 二.解决过拟合的两种方法 三.正则化线性回归 四.正则化logistic回归 五.正则化的原理 一.欠拟合和过拟合(over-fitting ...
- Linux学习之CentOS(一)--CentOS6.6下Mysql数据库的安装与配置
在这里我是通过yum来进行mysql数据库的安装的,通过这种方式进行安装,可以将跟mysql相关的一些服务.jar包都给我们安装好,所以省去了很多不必要的麻烦!!! [root@larry ~]# c ...
- Build Antlr4 projects with eclipse java project template.
from:https://shijinglu.wordpress.com/2015/01/22/build-antlr4-projects-with-eclipse-java-project-temp ...