支付宝手机支付接口金沙手机APP

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

这次介绍 手机网站支付

2017.3月支付宝手机网站支付升级2.0 官方文档

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

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

金沙手机APP 1金沙手机APP 2

//调用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;        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;        string form = response.Body;     Response.Write;

获取支付链接

form就是你需要的内容。   这里强调一下:官方SDK运行的结果  form 是一个FORM 表单Response.Write;,
如果你需要得到一个 链接地址的话,需要对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、添加应用—签约手机网站支付

2、配置密钥

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

用工具生成 2048 上传到
,对应的私钥 放到代码中,同时得到 放到代码中

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

生成方式一:使用支付宝提供的一键生成工具

步骤2:上传公钥&获取支付宝公钥

3、快速接入

内含JAVA、PHP、CSHARP三种编程语言。
下载各自DOME里面有介绍怎么使用,基本上都可以运行成功。

金沙手机APP 3

代码中这些配置相当重要,配置不对就会导致未将对象引用到实例这样的错误。

支付回调:

金沙手机APP 4金沙手机APP 5

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                             {                                //处理退款业务---退款成功                                                            }                            else                            {                                //处理订单业务---付款成功                                                            }                            //注意:                            //付款完成后,支付宝系统发送该交易状态通知                        }                        else if (trade_status == "TRADE_CLOSED")//未付款交易超时关闭,或支付完成后全额退款                        {                            if                             {                                //处理退款业务--退款成功                                                            }                        }                        Response.Write("success");  //必须输出success                    }                    else//验证失败                    {                        Response.Write("failure");                    }

支付回调

不懂的可以在下面留言~
希望大家可以顺利开发完成。

哥们
如果觉得对你有帮助了,不妨点个赞哈! O(∩_∩)O谢谢。

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

相关文章