微信支付接口调用H5(C#)
H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付。主要用于触屏版的手机浏览器请求微信支付的场景。可以方便的从外部浏览器唤起微信支付。
//微信H5支付
public string WeChatH5Pay(string OrderID, string Total)/ /这里的OrderID是我传过来的订单号,Total是订单金额。
{
OrderID = OrderID + DateTime.Now.ToString("fff");
//微信配置的参数
WXConfig wx = new WXConfig();
//换算金额,以分为单位
int TotalMoney = Convert.ToInt32(Convert.ToDecimal(Total) * 100);
//string redirect_uri = HttpUtility.UrlEncode(url);
string redirect_uri = HttpUtility.UrlEncode(url2);
Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null);
//APPID
packageReqHandler.SetParameter("appid", wx.GetAppID());
//商户号
packageReqHandler.SetParameter("mch_id", wx.GetMchID());
//随机字符串
packageReqHandler.SetParameter("nonce_str", TenPayUtil.GetNoncestr());
//body商品描述
packageReqHandler.SetParameter("body", "商品描述");
//订单号
packageReqHandler.SetParameter("out_trade_no", OrderID);
//金额,以分为单位
packageReqHandler.SetParameter("total_fee", TotalMoney.ToString());
//终端IP
packageReqHandler.SetParameter("spbill_create_ip", GetIP());
//回调地址
packageReqHandler.SetParameter("notify_url", "回调地址");
//微信内部为JSAPI 微信H5为MWEB
packageReqHandler.SetParameter("trade_type", "MWEB");
//注:key为商户平台设置的密钥key
packageReqHandler.SetParameter("sign", packageReqHandler.CreateMd5Sign("key", wx.GetKey()));
string data = packageReqHandler.ParseXML();
var urlFormat = "https://api.mch.weixin.qq.com/pay/unifiedorder";
var result2 = Common.HttpHelper.HttpPost(urlFormat, null, packageReqHandler.ParseXML());
//获取微信支付的mweb_url
string mweb_url = "";
var res = XDocument.Parse(result2);
if (res.Element("xml").Element("return_code").Value == "SUCCESS")
{
mweb_url = res.Element("xml").Element("mweb_url").Value;
}
else
{
return res.ToString();
}
//string parameters = GetJsApiParameters(prepay_id);
return mweb_url;
}
这里返回的 mweb_url 就是调用微信支付的的url
具体的流程参考微信开发文档 https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4
微信支付接口调用H5(C#)的更多相关文章
- 微信小程序PHP 微信支付接口调用
小程序端 /** * 微信支付接口 */ wxPaymoney:function (out_trade_no, true_money){ //out_trade_no 后台统一下单接口需要用 var ...
- 微信支付接口调用问题(android正常,iphone调不起)
转自:http://blog.csdn.net/tt123123/article/details/53897035 碰到的问题 :根据微信提供的示例代码(ASP.NET),配置好一切后, 用andro ...
- 微信JS支付代码_前端调用微信支付接口
转自:http://dditblog.com/itshare_553.html 跟大家分享一段微信支付的js代码片段.V3版的微信支付没有paySignKey参数.基本上是直接复制就可以使用了.改一改 ...
- 微信支付开发(7) H5支付
关键字:微信支付 微信支付v3 H5支付 wap支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv3_h5.html 本文 ...
- JAVA微信支付接口开发——支付
微信支付接口开发--支付 这几天在做支付服务,系统接入了支付宝.微信.银联三方支付接口.个人感觉支付宝的接口开发较为简单,并且易于测试. 关于数据传输,微信是用xml,所以需要对xml进行解析. 1. ...
- php微信支付接口开发程序
php微信支付接口开发程序讲解 微信支付接口现在也慢慢的像支付宝一个可以利用api接口来实现第三方网站或应用进行支付了, 下文整理了一个php微信支付接口开发程序并且己测试,有兴趣的朋友可进入参考. ...
- 如何使用 RESTClient 调试微信支付接口
我们知道微信支付使用http协议进行api调用,body 使用xml格式,使用的一般http在线调试工具,无法进行xml数据的post. RESTClient 做的很好,支持各种http 方法,bod ...
- php微信支付接口开发程序(流程已通)
php微信支付接口开发程序(流程已通) 来源:未知 时间:2014-12-11 17:11 阅读数:11843 作者:xxadmin [导读] 微信支付接口现在也慢慢的像支付宝一个可以利 ...
- 微信支付接口--超详细带注释代码--Demo
如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 如果对你有帮助的话麻烦点个[推荐]~最好还可以follow一下我的GitHub~感谢观看! 微 ...
随机推荐
- Floyd-Warshall算法计算有向图的传递闭包
Floyd-Warshall算法是用来求解所有结点对最短路径的知名算法,其还有一个重要的用途就是求解有向图的传递闭包,下面就让我来介绍算法导论中关于有向图闭包计算的有关记载吧. 有向图的传递闭包:我们 ...
- paloalto防火墙安装内容和软件更新
1.为了确保您始终不会受到最新威胁(包括尚未发现的威胁)的攻击,您必须确保防火墙始终具有 Palo Alto Networks 发布的最新更新内容及软件. • Antivirus(防病毒)— 包括新的 ...
- 路飞ORM练习
# a.查看所有学位课并打印学位课名称以及授课老师 # degree_list = DegreeCourse.objects.all().values('name', 'teachers__name' ...
- Oracle通过SCN做增量备份修复DG
DG由于网络原因或者bug原因经常不同步,有时隔得时间久了,就会丢失归档日志,或者长时间的归档恢复较慢,有一种可以基于scn的方式来恢复DG库,使用基于scn的增量备份来恢复standby库可以节省大 ...
- VNC 分辨率修改
正确的: vncserver -geometry 1280x1024 错误的: vncserver -geometry 1280*1024
- linux jdk 环境变量
一.jdk的安装 1.下载 jdk-7u79-linux-i586.tar.gz 2.tar -zxvf jdk-7u79-linux-i586.tar.gz 解压 3.mv jdk1.7.0_79 ...
- Java上传和下载
1.文件的上传 [1] 简介 > 将一个客户端的本地的文件发送到服务器中保存. > 上传文件是通过流的形式将文件发送给服务器. [2] 表单的设置 > 向服务器上传一个文件时,表单要 ...
- [入门]在Mac OS X下使用和配置Android Studio
Android Studio可谓是安卓开发的XCode,流畅的速度+顺眼的UI足以秒杀Eclipse.在Mac OS X可以通过如下的途径获得Android Studio 最新版本的Android ...
- python的语法小结之生成器和迭代器
生成器: 首先介绍一下列表生成式:a=[x for x in range(10)] >>>>>>[0, 1, 2, 3, 4, 5, 6 ...
- 在不安装sqlite3的时候使用sqlite3数据库以及问题/usr/bin/ld: skipping incompatible.....的解决
在没有安装sqlite3的linux机器上,怎么在不安装的情况下使用sqlite3的数据库呢: 其中只需要2个文件即可: 数据库的动态库libsqlite3.so,sqlite3.h. 另外,一些系统 ...