ASP.NET支付宝扫码即时到账支付开发流程(下)

 接上一篇继续,用户在扫描完二维码支付的时候,会显示用户在请求数据中传递的一些数据,例如订单号之类的。如图:


用户交易完成之后,支付宝服务器会主动发起通知,调用商户在请求时设定好的页面路径(参数notify_url,如果商户没有设定,则不会进行该操作),即在biz_data数据中设定的url.

样例:


注:支付宝通知商户支付结果为 post 方法提交请求,以上 GET 方式仅为样例。


商户在接收到支付宝交易的通知数据后,必须向支付宝返回处理结果,简单的来说,就是向页面输出状态:

 Response.Write("success");

Response.Write("fail");
另外特别注意的是,前台页面必须不能有任何的html代码和空格
回调页面Notify_Url.aspx代码为

 

   protected void Page_Load(object sender, EventArgs e) { SortedDictionary<string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { Notify aliNotify = new Notify(); bool verifyResult = aliNotify.Verify(sPara, Request.Form["notify_id"], Request.Form["sign"]); if (verifyResult)//验证成功 { string notify_data = Request.Form["notify_data"]; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(notify_data); XmlNode root = xmlDoc.DocumentElement;//返回的根节点 string is_success = root.SelectSingleNode("trade_status").InnerText; if (is_success == "TRADE_FINISHED" || is_success == "TRADE_SUCCESS") { string temp = root.SelectSingleNode("subject").InnerText;//传 的时候把商品名称传成订单号了,所以接收到的也是订单号 string orderNo = temp.Split('-')[1];//订单号 string total_fee = root.SelectSingleNode("total_fee").InnerText;//订单金额 //用户可在这里处理订单情况,修改订单状态等,然后给支付宝服务器返回success,即Response.Write("success") Response.Write("success"); //请不要修改或删除 } else { Response.Write("fail"); //请不要修改或删除 } } else//验证失败 { Response.Write("fail"); } } else { Response.Write("无通知参数"); } }

其中接收到的notify_data数据是一堆xml,我们在接收 的时候可能会出现下面的错误(若没有,则忽略)


解决方法是在配置文件中加上下面这段代码

<system.web>

    <httpRuntime requestValidationMode="2.0" />

</system.web>

另外,在接收数据的页面上加上 ValidateRequest="false" 

至此,支付宝扫码开发的流程基本就结束了,其实也很简单,只要好好的研究文档和Demo,也很容易就做出来了。

如果各位朋友在开发中还有什么问题,可以联系我,我们共同交流。QQ470576160


 

开发包下载:http://www.7qizhi.com/resource-25.html

Demo下载:http://www.7qizhi.com/resource-37.html




转载于:https://www.cnblogs.com/wanzhongjun/p/6875368.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值