WeChat-JSAPI支付
官方API:打开连接
特别注意----JSAPI只能在微信环境下 测试!2017-04-19
配置:微信公众号中 添加微信支付配置--请认真填写配置并获取下面对应的数据才能正常运行。
=======================【基本信息设置】====================
/* 微信公众号信息配置
* APPID:绑定支付的APPID(必须配置)
* MCHID:商户号(必须配置)
* KEY:商户支付密钥,参考开户邮件设置(必须配置)
* APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置)
*/
public const string APPID = AuthConnect.WeChat_AppId;
public const string MCHID = "";
public const string KEY = AuthConnect.WeChat_AppPayKey;
public const string APPSECRET = AuthConnect.WeChat_AppKey;
1、首先引用API基类:OrderDetail.cs、TenpayUtil.cs、QueryOrder.cs、UnifiedOrder.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支付的更多相关文章
- 微信JSApi支付~订单号和微信交易号
返回目录 谈谈transactionId和out_trade_no 前一篇微信JSApi支付~坑和如何填坑文章反映不错,所以又写了个后篇,呵呵. 每个第三方在线支付系统中都会有至少两类订单号,其一为支 ...
- 微信JSAPI支付
最近在微信H5页面内集成微信JSAPI支付,遇到不少问题,现将集成步骤及遇到的问题记录如下: 1.官方下载SDK,下载地址:https://pay.weixin.qq.com/wiki/doc/api ...
- 微信JSApi支付~集成到MVC环境后的最后一个坑(网上没有这种解决方案)
返回目录 大叔第一人 之前写了关于微信的坑<微信JSApi支付~坑和如何填坑>,今天将微信的jsapi支付封装到了MVC环境里,当然也出现了一些新的坑,如支付参数应该是Json对象而不是J ...
- 微信JSApi支付~坑和如何填坑
返回目录 微信一直用着不爽,这几天研究它的jsapi支付,即在微信内打开H5页面,完成支付的过程,在这个过程中,你将会遇到各种各样的问题,而大叔将把这些问题的解决方法写一下,希望可以给你带来帮助! 一 ...
- asp.net微信jsapi支付
1.前台页面: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head ru ...
- 微信支付系列(2)——jsapi支付源码解析
版权声明:转载请注明出处:http://blog.csdn.net/m0sh1 http://www.share345.com 在微信支付 开发者文档页面 下载最新的 PHP SDK http://m ...
- 微信JSAPI支付(比较详细) 关于getRrandWCPayRequest:fail_invalid appid 错误
原文:微信JSAPI支付(比较详细) 关于getRrandWCPayRequest:fail_invalid appid 错误 首先微信支付需注册 微信公从平台开发 和 微信支付商户平台 关于4个密 ...
- 微信JSAPI支付 跟 所遇到的那些坑
首先介绍一下我在调用微信支付接口使用的是 weixin.senparc SDK,非常方便好用开源的一个微信开发SDK. weixin.senparc SDK 官网:http://weixin.senp ...
- 微信JSAPI支付回调
在微信支付中,当用户支付成功后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答. 在经历了千幸万苦之,填完了所有的JSAPI支付的坑后(微信JSAPI支付 跟 所遇到的那些坑) ...
- 微信公众号JSAPI支付-多公众号向同一商户号支付的问题解决
一.背景 项目提供公众号商城集成,在公众号里进行商品的购买,并与多家公众号合作增加渠道流量. . 二.实现 有关微信公众号.商户号的开通与支付绑定不细说 从背景里可知,我们需要实现多个公众号购买向同一 ...
随机推荐
- eclipse调整字体大小
window->preferences->general->appearance->colors and fonts-> 双击Text Font 就调整字体大小了
- 使用Xib创建自定义视图(不是cell)时需要注意的问题
开发项目过程中,有些地方不免会用到Xib来提高开发效率,如果你的手速够快,写代码建视图,我并不反对这样做.因为我以前也是纯手写代码开发. 进入正题,Xib好用,但是这些下面这些问题需要注意一下. 问题 ...
- JVM内存结构 JVM的类加载机制
JVM内存结构: 1.java虚拟机栈:存放的是对象的引用(指针)和局部变量 2.程序计数器:每个线程都有一个程序计数器,跟踪代码运行到哪个位置了 3.堆:对象.数组 4.方法区:字节流(字节码文件) ...
- Java Calendar类总结
在实际项目当中,我们经常会涉及到对时间的处理,例如登陆网站,我们会看到网站首页显示XXX,欢迎您!今天是XXXX年....某些网站会记录下用户登陆的时间,比如银行的一些网站,对于这些经常需要处理的问题 ...
- Flash Builder4注册机
我的Eclipse下的Flash Builder 4正式版已经过期,之前在网上找到的注册码,都不能用了, 花了很久时间,才找到这个注册机. Flash Builder 4 注册机 Serial Cra ...
- 【c++ primer, 5e】定义类相关的非成员函数
练习 7.6 & 7.7 #include <iostream> #include <string> using namespace std; // Sales_dat ...
- linux卸载mysql
第二.停止MYSQL运行以及卸载老版本 service mysqld stop #暂停MYSQL yum remove mysql mysql-* #卸载老版本MYSQL 通过上面的命令,我们先停止 ...
- 2017阿里C++研发工程师-校招-笔试模拟
题目描述: 猎人把一对兔子婴儿(一公一母称为一对)放到一个荒岛上,两年之后,它们生00下一对小兔,之后开始每年都会生下一对小兔.生下的小兔又会以同样的方式继续繁殖. 兔子的寿命都是x(x>=3) ...
- spring定时器(注解的形式)
最近有个需求,要在凌晨的时候,根据某几张表生成一张定时任务表里的数据,数据的状态为0(未整改),然后在当天晚上,再把这些数据的状态没改变的,改变状态为1(待整改),然后要用到定时器,百度了一下用注解形 ...
- LeetCode——Unique Binary Search Trees II
Question Given an integer n, generate all structurally unique BST's (binary search trees) that store ...