描述: 网站须要调用 支付宝支付功能------html
升级后,能够直接在网站中调起 移动端APP支付,这才是为何升级的主要缘由-----必备!java
最新SDK---AopSdk.dll 下载 后,在你须要的项目中引用dll,服务端写的很简单,express
//调用Ali封装好的接口获取支付连接 IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", Config.partner2, Config.private_key2, "json", "1.0", "RSA2", "alipay_public_key", "utf-8", false); AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest(); request.SetNotifyUrl(notifyUrl); request.SetReturnUrl(showUrl); request.BizContent = "{" + " \'body\':\'"+ body +"\'," + " \'subject\':\'"+ subject +"\'," + " \'out_trade_no\':\'" + outTradeNo + "\'," + " \'timeout_express\':\'30m\'," + " \'total_amount\':" + totalFee + "," + " \'product_code\':\'QUICK_WAP_PAY\'" + " }"; AlipayTradeWapPayResponse response = client.pageExecute(request); string form = response.Body; Response.Write(form);
form就是你须要的内容。 这里强调一下:官方SDK运行的结果 form 是一个FORM 表单,
若是你须要获得一个 连接地址的话,须要对SDK修改,以下打开sdk源代码找到这个方法。
Response.Write(form);
#region IAopClient Members
public T pageExecute<T>(IAopRequest<T> request) where T : AopResponse
{
return pageExecute<T>(request, null, "POST"); ------改为 GET,获取的就是 支付url,从新编译引用。 } #endregion
开发中须要注意的配置事项:编程
步骤1:RSA公私钥生成(保存好,后期开发用到 这个“应用公钥”)编程语言
用工具生成 2048(选非java的) 上传到 【应用公钥】,对应的私钥 放到代码中【商户的私钥】,同时获得 【支付宝公钥】放到代码中ide
这个搞不对的话,那会一直报错 说什么 秘钥不正确工具
生成方式一(推荐):使用支付宝提供的一键生成工具(内附使用说明)网站
步骤2:上传公钥&获取支付宝公钥(重要)
内含JAVA、PHP、CSHARP(C#)三种编程语言。 下载各自DOME里面有介绍怎么使用,基本上均可以运行成功。
代码中这些配置至关重要,配置不对就会致使 未将对象引用到实例这样的错误。
支付回调:
if (verifyResult)//验证成功 { bool isRefund = false; string batch_no = string.Empty; if(sPara.ContainsKey("out_biz_no")) { isRefund = true; batch_no = sPara["out_biz_no"]; } //商户订单号 string out_trade_no = Request.Form["out_trade_no"]; //支付宝交易号 string trade_no = Request.Form["trade_no"]; //交易状态 string trade_status = Request.Form["trade_status"]; string buyer_id = Request.Form["buyer_id"]; string buyer_emial = Request.Form["buyer_logon_id"]; if (string.IsNullOrEmpty(out_trade_no)) { throw new Exception("商户订单号不能为空"); } out_trade_no, trade_no, trade_status)); if (trade_status == "TRADE_FINISHED") { //判断该笔订单是否在商户网站中已经作过处理 //若是没有作过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的 //若是有作过处理,不执行商户的业务程序 //处理业务逻辑 //注意: //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 } else if (trade_status == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经作过处理 //若是没有作过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的 //若是有作过处理,不执行商户的业务程序 if (isRefund) { //处理退款业务---退款成功 } else { //处理订单业务---付款成功 } //注意: //付款完成后,支付宝系统发送该交易状态通知 } else if (trade_status == "TRADE_CLOSED")//未付款交易超时关闭,或支付完成后全额退款 { if (isRefund) { //处理退款业务--退款成功 } } Response.Write("success"); //必须输出success } else//验证失败 { Response.Write("failure"); }
不懂的能够在下面留言~ 但愿你们能够顺利开发完成。
哥们 若是以为对你有帮助了,不妨点个赞哈! O(∩_∩)O谢谢。