新版支付宝开放平台  手机网页支付 整个流程

在支付宝签约如下产品

然后,使用支付宝最新的签名工具生成商户的私钥和公钥

值得注意的是,如果是.net c# 请选择PKCS1,我只采用1024密钥长度。

然后来到支付宝的账号管理中心:

在如图的开放平台密钥页所示处,将上述软件生成的商户公钥设置到应用公钥处,然后设置授权回调地址,设置完后,点开查看并保存支付宝公钥,用于加密及验签。

基它地方不要设置,不要动。

下载最新的.net 支付宝SDK,引入工程

然后,在自己工程中配置支付宝参数 :

发起支付:

IAopClient client = new DefaultAopClient(AlipayConfig.Alipay_Server, AlipayConfig.APPID, AlipayConfig.APP_PRIVATE_KEY, "json", "1.0", "RSA", AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, false);
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
request.SetNotifyUrl(AlipayConfig.Asynchronous_Notice_Location_Alipay);
request.SetReturnUrl(AlipayConfig.Synchronous_Notice_Location_Alipay);
string desc = "商城充值";
string subject = "hahahaha";
string out_trade_no = payDetail.Id.ToString();
string total_amount = payDetail.Price.ToString("F2");
request.BizContent = "{" +
"    \"body\":\" " + desc + "\"," +
"    \"subject\":\"" + subject + "\"," +
"    \"out_trade_no\":\"" + out_trade_no + "\"," +
"    \"timeout_express\":\"90m\"," +
"    \"total_amount\":+"+ total_amount + "," +
"    \"product_code\":\"QUICK_WAP_WAY\"" +
"  }";
AlipayTradeWapPayResponse response = client.pageExecute(request);
string form = response.Body;
form = form.Replace("<script>document.forms['alipaysubmit'].submit();</script>", "");
form = form.Replace("<form id='alipaysubmit' name='alipaysubmit' action='https://openapi.alipay.com/gateway.do?charset=UTF-8' method='POST'>", "<form id='alipaysubmit' name='alipaysubmit' action='https://openapi.alipay.com/gateway.do?charset=UTF-8' method='POST' style='display:none;'>");
ViewBag.Content = form;


然后在页面上调用表单提交:
function check() {var ua = window.navigator.userAgent.toLowerCase();if (ua.match(/MicroMessenger/i) == 'micromessenger') {alert('请点击右上角菜单,在浏览器中打开本页面完成支付。');} else {document.forms['alipaysubmit'].submit();}}
然后,异步通知页验签:
         public Dictionary<string, string> GetRequestPost(HttpRequestBase request){int i = 0;Dictionary<string, string> sArray = new Dictionary<string, string>();System.Collections.Specialized.NameValueCollection coll;coll = request.Form;String[] requestItem = coll.AllKeys;for (i = 0; i < requestItem.Length; i++){sArray.Add(requestItem[i], request.Form[requestItem[i]]);}return sArray;}
  try{bool flag = Aop.Api.Util.AlipaySignature.RSACheckV1(GetRequestPost(Request), AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, "RSA", false);if(flag){log4net.LogManager.GetLogger("root").Info("支付宝签名验证成功");//1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,//2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),//3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email),//4、验证app_id是否为该商户本身。上述1、2、3、4有任何一个验证不通过,则表明本次通知是异常通知,务必忽略。//在上述验证通过后商户必须根据支付宝不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。//在支付宝的业务通知中,只有交易通知状态为TRADE_SUCCESS或TRADE_FINISHED时,支付宝才会认定为买家付款成功。//商户订单号string out_trade_no = Request.Form["out_trade_no"] ;log4net.LogManager.GetLogger("root").Info("商户订单号" + out_trade_no);string app_id = Request.Form["app_id"];log4net.LogManager.GetLogger("root").Info("app_id:" + app_id);if (app_id != AlipayConfig.APPID){log4net.LogManager.GetLogger("root").Info("app_id != AlipayConfig.APPID" );return Content("fail");}string trade_no = Request.Form["trade_no"] ;log4net.LogManager.GetLogger("root").Info("支付宝交易号" + trade_no);//交易状态string trade_status =  Request.Form["trade_status"] ;log4net.LogManager.GetLogger("root").Info("交易状态" + trade_status);string gmt_payment= Request.Form["gmt_payment"] ;log4net.LogManager.GetLogger("root").Info("交易支付时间:" + gmt_payment);string total_amount= Request.Form["total_amount"] ;log4net.LogManager.GetLogger("root").Info("交易金额:" + total_amount);decimal money=total_amount.ParseTo<decimal>(0);if (Request.Form["trade_status"] == "TRADE_FINISHED" || Request.Form["trade_status"] == "TRADE_SUCCESS"){DealPay_Alipay(out_trade_no, trade_no, gmt_payment, money);return Content("success");}else{return Content("fail");}//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——}}catch (CustomerException ex){log4net.LogManager.GetLogger("root").Info("ex:" + ex.Message);return Content("fail");}catch (Exception ex){log4net.LogManager.GetLogger("root").Info("ex:" + ex.Message + ex.InnerException.Message + ex.StackTrace);return Content("fail");}return Content("fail");

同步通知页:
  if (!String.IsNullOrEmpty(Request.Form["trade_no"]) || !String.IsNullOrEmpty(Request.QueryString["trade_no"])){return View();}else{return RedirectToAction("AlipayFail");}
												

新版支付宝开放平台 手机网页支付 整个流程相关推荐

  1. 微信开放平台手机APP支付

                PHP对接APP微信支付 微信开放平台手机APP支付总结 1. 微信开放平台手机APP支付总结 支付功能链接: https://pay.weixin.qq.com/wiki/d ...

  2. 【微信支付】微信端的手机网页支付 开发流程

    -----------------------------------------------------------------------------------------------1.微信 ...

  3. 支付宝三(手机网页支付)

    1. 下载支付demo https://doc.open.alipay.com/doc2/detail?treeId=60&articleId=103564&docType=1 2. ...

  4. 支付宝开放平台2.0申请手机电脑支付接口流程说明(带图)

    前言: 支付宝官方文档过于详细,相当于给了本词典,而你仅仅想要查2个词.此文档是作为技术人员线性了解接口申请对接资料的快捷方式 流程: 0.客户的支付宝账号资料或扫码登陆,域名,空间等基本信息 * 客 ...

  5. android支付宝开放平台开发,支付宝开放平台支付更新升级全解析

    由于支付宝增加开放平台的概念,支付申请和调用有了较大的更新和升级,本篇文章会带你介绍开放平台的支付申请方式和新支付接口和之前的区别. 0 系列文章 1 背景介绍 支付宝现在开始着重推开发平台这个概念, ...

  6. 在线支付系列【24】支付宝开放平台产品介绍

    有道无术,术尚可求,有术无道,止于术. 文章目录 前言 支付产品 App 支付 手机网站支付 电脑网站支付 新当面资金授权 当面付 营销产品 营销活动送红包 会员产品 App 支付宝登录 人脸认证 信 ...

  7. Django学习记录10——Django使用支付宝付款(电脑支付,手机网页支付,面对面扫码)

    目录 一.注册支付宝开放平台账号 1.注册 2.创建公私秘钥 2.项目中添加公私密钥 二.生成二维码 1.安装模块等 2.模块的结构 3.电脑支付 4.手机支付 5.面对面扫码(真二维码支付) 三.小 ...

  8. Node接入支付宝开放平台的沙箱实现支付功能

    一些重要的支付宝沙箱文档及网址 支付宝开放平台:https://open.alipay.com/ 简单介绍:https://www.yuque.com/chenqiu/alipay-node-sdk/ ...

  9. 对接支付宝服务商当面付手机网页支付

    一.前期准备: SpringBoot对接支付宝当面付和手机网站支付_springboot 支付宝当面付_Biubiubiuexo的博客-CSDN博客 配置成功后获得到我们开发需要的:支付宝公钥.商户私 ...

最新文章

  1. C#获取键盘和鼠标操作的时间的类
  2. 分享几个matlab的下载安装包吧,一周有效期,过期不候
  3. 文字描边_学会这种描边效果,你的PPT也能这么好看
  4. Intelligent Warehouse(小米邀请赛)
  5. 【LeetCode】剑指 Offer 63. 股票的最大利润
  6. 安卓3d游戏开发引擎_微信小游戏开发怎么选游戏引擎
  7. 免费领取QQ音乐会员
  8. 一款好看透明个人主页源码
  9. 计算机安全模式无法启动,电脑无法启动,电脑安全模式进不去解决方法大全?...
  10. 启动计算机显示屏没反应,电脑开机后显示器无反应怎么办
  11. php 字符c二进制文件内容,科学网—C读写二进制文件与文本文件 - 张凌的博文
  12. Linux 常用系统故障(修复MBR扇区故障、修复GRUB引导故障、遗忘root用户密码、修复文件系统、磁盘配额等)
  13. 详解awk(一)awk基础知识、选项、程序段解析与实例
  14. 关于登陆界面背景图片缩放变形的解决方法
  15. 武汉大学计算机学院保研清华,保研到清华、北大的外校学生,武大最多、山大次之...
  16. 加州大学计算机硕士,加州大学伯克利分校cs专业
  17. STM32自平衡小车
  18. 动画中OAD OVA SP都是是什么?和TV动漫都有什么区别?
  19. Libra 白皮书 2.0 中文版
  20. 哥伦比亚大学本科计算机专业,哥伦比亚大学计算机专业全球排名第几?

热门文章

  1. MICCAI 2022 | CLFC:基于对比学习的多模态脑肿瘤分割与单模态正常脑图像的特征比较
  2. Hadoop之机架感知
  3. JS与CSS交互及JavaScript 特效之四大家族
  4. 2019深圳中学学区房划分
  5. ESP32设备驱动-TM1637-驱动4位7段数码管
  6. 易语言之超级列表框的使用及json解析
  7. Matlab 图片颜色反转 批量
  8. Ubuntu windows 双硬盘 双系统 引导
  9. HTML5期末大作业:美食网页制作——餐饮料里(12页) HTML+CSS+JavaScript 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
  10. 【stata笔记】从规律混乱的字符串中提取某个类别的字符(以CGSS2010的地区变量为例)