支付宝手机支付接口

描述: 网站需要调用 支付宝支付功能------

这次介绍 手机网站支付

2017.3月支付宝手机网站支付升级2.0(认真看)     官方文档

升级后,可以直接在网站中调起  移动端APP支付,这才是为什么升级的主要原因-----必备!

最新SDK---AopSdk.dll         下载 后,在你需要的项目中引用dll,服务端写的很简单,

 

//调用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 表单Response.Write(form);

如果你需要得到一个 链接地址的话,需要对SDK修改,如下打开sdk源代码找到这个方法。

    #region IAopClient Members
    public T pageExecute<T>(IAopRequest<T> request) where T : AopResponse
    {
        return pageExecute<T>(request, null, "POST");     ------改成 GET,获取的就是 支付url,重新编译引用。
    }
    #endregion

 

开发中需要注意的配置事项:

1、添加应用---签约手机网站支付

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.wTflnJ&treeId=60&articleId=104788&docType=1

2、配置密钥(认真看)

https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.hAazoO&treeId=60&articleId=104740&docType=1

 

步骤1:RSA公私钥生成(保存好,后期开发用到 这个“应用公钥”)

 用工具生成 2048(选非java的) 上传到 【应用公钥】,对应的私钥 放到代码中【商户的私钥】,同时得到 【支付宝公钥】放到代码中

这个搞不对的话,那会一直报错 说什么 秘钥不正确

生成方式一(推荐):使用支付宝提供的一键生成工具(内附使用说明)

步骤2:上传公钥&获取支付宝公钥(重要)

 

 

3、快速接入

内含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谢谢。

                                                                                                      点我送 阿里云幸运娟1         阿里云幸运娟  2     阿里云幸运娟  3    

 

posted on 2017-03-29 11:02  o笨小孩o  阅读(4087)  评论(0编辑  收藏  举报