微支付开发(.net)
最近一周多进行微支付开发工作,总结一下关于微支付开发中遇到的问题。
如写得不对请大家提出,第一次自己写文章。嘿嘿...
1、申请微支付,登陆公众平台后(公众号为服务号并已认证),进入“服务”-“服务中心"-“商户功能”,完成基本资料的填写;
JS API与Native API
JS API:就是通过微信端进入你的微商城,在你的微商城中选购好要购买商品,然后再通过微支付进行付款,通过getBrandWCPayRequest接口来调用微支付
Native API:商家自己生成特定的URL,用户只需要直接点击这个链接或扫描这个链接二维码就可以直接进行支付,不需要选购商品什么的。
这里只说说JS API
JS API支付授权目录:就是你最终要进行支付的最后一级目录:http://www.xxxxx.com/支付文件所有目录或路径/ 最后"/"不要忘记
维权通知URL和告警通知URL直接填写相关URL就好了,如:http://www.xxxxxx.com/tmall/warning.aspx
以上几项一定要填对,如果资料审核通过后就很难改,目前是不允许改的,但不知道以后可不可以,在实际开发中,我发现还是蛮多人填错。
2、第一步全部审核通过后,将会有邮件发送给你,包括开发需要的APPID,paySignKey,appSecret,财付通partnerId,partnerKey信息
3、进行开发及测试,一定要认真看文档,只提一下开发中可能遇到问题
a.如需要测试,请先登陆公众平台,填好测试的地址及白名单


b.测试只能在申请微支付的公众号中进行测试
c.如使用.net版本DEMO需要注意的地方:WxPayHelper.cs这个类中的CreateBizPackage()方法,注意大小写及顺序
nativeObj.Add("appId",AppId);
nativeObj.Add("package",GetCftPackage());
nativeObj.Add("timestamp", ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString());
nativeObj.Add("noncestr",Wxpay.CommonUtil.CreateNoncestr());
nativeObj.Add("paySign",GetBizSign(nativeObj));
nativeObj.Add("signType",SignType);
需要换成以下代码:

nativeObj.Add("appId",AppId);
nativeObj.Add("timeStamp", ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000).ToString());
nativeObj.Add("nonceStr", Wxpay.CommonUtil.CreateNoncestr());
nativeObj.Add("package",GetCftPackage());
nativeObj.Add("paySign", GetBizSign(nativeObj));
nativeObj.Add("signType", SignType);

否则可能会出现支付签名不对的情况;
另外,相应的MD5加密和SHA加密的编码也需要更改,如不更改,可能会出现,body全是英文可以进行付款,但如果有中文,就无法进行付款了。
byte[] btInput = System.Text.Encoding.Default.GetBytes(s); ======> byte[] btInput = System.Text.Encoding.UTF8.GetBytes(s);
JS API调用支付方法这里就不贴了,文档里面有;
d.关于支付成功后,后台通知页面,需要使用Request.QueryString来接收数据,不要使用Request.Form,要不然你会接收不到数据,同时也需要处理发送过来的xml数据
可以使用
Stream inputStream = Request.InputStream;
byte[] b = new byte[inputStream.Length];
//将输入流读入字节数组
inputStream.Read(b, 0, (int)inputStream.Length);
//将字节数组转换为经过编码的字符串
string inputStr = System.Text.Encoding.UTF8.GetString(b);
然后用XmlDocument 来处理数据
f.订单的查询及其它工作,相信你把支付搞定,应该是不成问题的。要注意的就是什么字段需要参与加密什么的。
g.订单查询等请使用文档提供的api,注意是https,不要搞错了
微支付开发(.net)的更多相关文章
- Delphi XE7 用indy开发微信公众平台所有功能,可刷阅读,可刷赞,可加推广(除微支付)
http://www.cnblogs.com/devinlee/p/4565933.html Delphi XE7 用indy开发微信公众平台所有功能,可刷阅读,可刷赞,可加推广(除微支付) 关注作者 ...
- 微信支付开发出现redirect_uri参数错误的解决方法
我们在进行微信支付开发的时候会遇到出现“redirect_uri参数错误”这种情况,怎么办呢?下面就是我总结出现这种“redirect_uri参数错误”的七种可能情况,以及解决方式. 1.可能原因①: ...
- Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲
Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台: 微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...
- php大力力 [048节] php一点支付开发资料,很散
https://beecloud.cn/activity/jsbutton/?index=4&t=1441261629019 https://beecloud.cn/download/ php ...
- PHP微信支付开发实例
这篇文章主要为大家详细介绍了PHP微信支付开发过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 PHP微信支付开发过程,分享给大家,供大家参考,具体内容如下 1.开发环境 Thinkphp 3. ...
- 微信支付开发(11) Native支付
关键字:微信公众平台 微信支付 Native原生支付作者:方倍工作室原文:http://www.cnblogs.com/txw1958/p/wxpay-native.html 由于微信支付接口更新,本 ...
- Android开发 --微信支付开发(转载!)(开发工具:Eclipse)
Android_APP 微信支付接口开发 日期:2015-10-06 12:47:33 作者: 来源: 人气:3549 1.首先说一下我们在开发微信支付接口的时候遇到最多和最疑惑的问题,那就是明明 a ...
- 微信支付开发+{ping++}微信支付托管
------------------------微信支付接口------------------------------- 微信支付开发并没有想象中的那么难,主要是微信提供了sdk. 微信公众号必须是 ...
- PHP微信支付开发之扫描支付(模式二)后如何回调
其实在写这篇文章的时候感觉自己已经落伍了,不过笔者在百度上搜索"微信支付开发之扫描支付(模式二)后如何回调"寻找答案时,发现依旧有很多朋友没有解决这个问题,所以就把自己的解决思路分 ...
随机推荐
- Redis与Memcached的比较
网络IO模型 Memcached 是多线程,非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接受请求后,将连接描述字pipe 传递给worker线程,进行读写IO, ...
- C 字符/字符串常用函数
string.h中常用函数 char * strchr(char * str ,char ch); 从字符串str中查找首次出现字符ch的位置,若存在返回查找后的地址,若不存在则返回NULL void ...
- 用VirtualBox构建MySQL测试环境笔记
网络环境: 宿主机:Win7 VirtualBox 4.1.4 + Ubuntu 11.10 server 64bit 宿主机使用网线的时候,客户机在Bridged Adapter模式下,使用Athe ...
- bootstrap table 行号 显示行号 添加行号 bootstrap-table 行号
思想:借助bootstrap-table 本身的index属性, 巧妙的的通过formatter 实现 { field: 'Number', title: 'Number', formatter: f ...
- Django初体验
为什么使用Django 快速开发 使用python 数据库ORM系统 大量内置应用 后台管理系统 admin 用户认证系统 auth 会话系统 sessions 安全性高 表单验证 SQL注入 跨站点 ...
- poj 1113 Mall
Mall 水题:注意题目上面有一个至少离城堡的距离为L,其实思考一下就知道是指离凸包(凸多边形)的距离为L,这时很容易知道外围的圆的圆心角叠加之后就是一个整圆:和poj2187一样使用graham形成 ...
- C语言小知识
1.数组初始化 a[5] = {1}; //1,0,0,0,0 a[5] = {0}; //0,0,0,0,0 a[3][3] = {1}; //1,0,0;0,0,0;0,0,0 a[3][ ...
- CODEVS 2055 集合划分
[题目描述] 对于从1到N(1<=N<=39)的连续整数集合,划分成两个子集合,使得每个集合的数字之和相等. 举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数字 ...
- nodejs child process
//Create child processvar thread = require('child_process'); var msg = thread.fork(__dirname + '/chi ...
- VS Extension: Create a txt file and set the content
使用 Visual Studio Extension 创建一个文本文件,并填入内容. 需要引用 EnvDTE C:\Program Files (x86)\Microsoft Visual Studi ...