微支付开发(.net)

最近一周多进行微支付开发工做,总结一下关于微支付开发中遇到的问题。api

如写得不对请你们提出,第一次本身写文章。嘿嘿...数组

一、申请微支付,登录公众平台后(公众号为服务号并已认证),进入“服务”-“服务中心"-“商户功能”,完成基本资料的填写;微信

    JS API与Native APIapp

    JS API:就是经过微信端进入你的微商城,在你的微商城中选购好要购买商品,而后再经过微支付进行付款,经过getBrandWCPayRequest接口来调用微支付测试

    Native API:商家本身生成特定的URL,用户只须要直接点击这个连接或扫描这个连接二维码就能够直接进行支付,不须要选购商品什么的。编码

    这里只说说JS API加密

    JS API支付受权目录:就是你最终要进行支付的最后一级目录:http://www.xxxxx.com/支付文件全部目录或路径/ 最后"/"不要忘记spa

    维权通知URL和告警通知URL直接填写相关URL就行了,如:http://www.xxxxxx.com/tmall/warning.aspx.net

    以上几项必定要填对,若是资料审核经过后就很难改,目前是不容许改的,但不知道之后可不能够,在实际开发中,我发现仍是蛮多人填错。3d

二、第一步所有审核经过后,将会有邮件发送给你,包括开发须要的APPID,paySignKey,appSecret,财付通partnerId,partnerKey信息

三、进行开发及测试,必定要认真看文档,只提一下开发中可能遇到问题

    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,不要搞错了

相关文章
相关标签/搜索