商家 APP 如何接入新版支付宝支付,老版本商家如何升级

代码地址如下:
http://www.demodashi.com/demo/14006.html

前言

支付宝移动支付2.0版本对比1.0版本做了较大更新,新申请的商家都需要采用最新2.0版本 SDK 才可以成功接入,老版本需要升级的需要对 APP 进行重新签约才可以。

老版本支付宝支付:

签名方式rsa1(sha1),支付宝公钥是确定的,每个商家的都是一样的。

新版本支付宝支付:

签名方式rsa2(sha256),支付宝公钥每个商家都是不同的。

升级程序实现

老版本java服务端代码:

返回订单信息供客户端调起支付宝客户端:

public static String getOrderInfo(String subject, String body,
            String tradeNo, String price, String notifyurl) {
        // 签约合作者身份ID
        String orderInfo = "partner=" + "\"" + getAliPartnerId(tradeNo)
                + "\"";

        // 签约卖家支付宝账号
        orderInfo += "&seller_id=" + "\"" + getAliSellerId(tradeNo)
                + "\"";

        // 商户网站唯一订单号
        orderInfo += "&out_trade_no=" + "\"" + tradeNo + "\"";

        // 商品名称
        orderInfo += "&subject=" + "\"" + subject + "\"";

        // 商品详情
        orderInfo += "&body=" + "\"" + body + "\"";

        // 商品金额
        orderInfo += "&total_fee=" + "\"" + price + "\"";

        // 服务器异步通知页面路径
        orderInfo += "?ify_url=" + "\"" + notifyurl + "\"";

        // 服务接口名称, 固定值
        orderInfo += "&service=\"mobile.securitypay.pay\"";

        // 支付类型, 固定值
        orderInfo += "&payment_type=\"1\"";

        // 参数编码, 固定值
        orderInfo += "&_input_charset=\"utf-8\"";

        // 设置未付款交易的超时时间
        // 默认30分钟,一旦超时,该笔交易就会自动被关闭。
        // 取值范围:1m~15d。
        // m-分钟,h-小时,d-天,1c-当天(无论交易何时创建,都在0点关闭)。
        // 该参数数值不接受小数点,如1.5h,可转换为90m。
        // orderInfo += "&it_b_pay=\"30m\"";

        // extern_token为经过快登授权获取到的alipay_open_id,带上此参数用户将使用授权的账户进行支付
        // orderInfo += "&extern_token=" + "\"" + extern_token + "\"";

        // 支付宝处理完请求后,当前页面跳转到商户指定页面的路径,可空
        // orderInfo += "&return_url=\"m.alipay.com\"";

        // 调用银行卡支付,需配置此参数,参与签名, 固定值 (需要签约《无线银行卡快捷支付》才能使用)
        // orderInfo += "&paymethod=\"expressGateway\"";

        return orderInfo;
    }

支付完成之后回调:

String trade = getPara("out_trade_no");

       System.out.println("trade:" + trade);

       // 验证支付宝请求
       HashMap<String, String> paraMap = new HashMap<>();
       Enumeration<String> paraNames = getParaNames();

       for (Enumeration<String> e = paraNames; e.hasMoreElements();)
       {
           String thisName = e.nextElement().toString();
           System.out.println(thisName + "-------------" + getPara(thisName));
           paraMap.put(thisName, getPara(thisName));
       }
       if (!AlipayNotify.verify(paraMap))
       {
           renderText("false");
           return;
       }

       // 订单状态判断
       String trade_status = getPara("trade_status");
       if (trade_status.equals("WAIT_BUYER_PAY"))
       {
           logger.info("订单创建,等待用户支付");
           renderText("success");
           return;
       }else if (trade_status.equals("TRADE_SUCCESS")||trade_status.equals("TRADE_FINISHED")) {
           logger.info("订单支付成功,服务器处理");
           if (dealWithOrder(trade, role, getPara("total_fee")))
           {
               renderText("success");
               return;
           }
       }
       renderText("false");
       return;

新版本支付宝

java: 支付宝公钥每个商家相同

public static String getNewOrderInfo(String appId,String subject, String body,String tradeNo, String price, String notifyurl) throws AlipayApiException{
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",appId,getAliPrivateKey(tradeNo),"json","utf-8",Constants.PAY_ZHIFUBAO_PUBLIC_KEY,"RSA2");
        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
        AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
        //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
        model.setBody(body);
        model.setSubject(subject);
        model.setOutTradeNo(tradeNo);
        model.setTimeoutExpress("30m");//一般用不到这个
        model.setTotalAmount(price);//这个嘛就是钱喽
        model.setProductCode("QUICK_MSECURITY_PAY");//商家和支付宝签约的产品码,为固定值
        request.setBizModel(model);
        request.setNotifyUrl(notifyurl);//外网异步回调地址,是需要外网能够访问到的
        AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
        return response.getBody();//这里直接把订单信息给app端就好了,让他直接拿着去调起支付宝
    }

支付宝回调:支付宝公钥每个商家不同

    String trade = getPara("out_trade_no");
    // 验证支付宝请求
    HashMap<String, String> params = new HashMap<>();
    Map<String,String []> requestParams = getParaMap();
    for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
        String name = (String) iter.next();
        String[] values = (String[]) requestParams.get(name);
        String valueStr = "";
        for (int i = 0; i < values.length; i++) {
            valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
        }
        // 乱码解决,这段代码在出现乱码时使用。
        // valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
        params.put(name, valueStr);
     }
        if (!AlipaySignature.rsaCheckV1(params, aliPublicKey, "utf-8", "RSA2")) {
            renderText("false");
            return;
        }
        // 订单状态判断
        String trade_status = getPara("trade_status");
        if (trade_status.equals("TRADE_SUCCESS") || trade_status.equals("TRADE_FINISHED")) {
            logger.info("订单支付成功,服务器处理");
            if (dealWithOrder(trade, role, getPara("total_amount"))) {
                renderText("success");
                return;
            }
        }
        renderText("false");
        return;

项目结构图:

项目运行图:

其他

新老版本对比详细链接:https://docs.open.alipay.com/203/106514商家 APP 如何接入新版支付宝支付,老版本商家如何升级

代码地址如下:
http://www.demodashi.com/demo/14006.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

原文地址:https://www.cnblogs.com/demodashi/p/9711864.html

时间: 2024-10-07 18:57:07

商家 APP 如何接入新版支付宝支付,老版本商家如何升级的相关文章

使用Tornado异步接入第三方(支付宝)支付

目前国内比较流行的第三方支付主要有支付宝和微信支付,博主最近研究了下如何用Python接入支付宝支付,这里我以Tornado作为web框架,接入支付宝构造支付接口. 使用Tornado异步接入支付宝支付流程: 1. 进入蚂蚁金服开放平台填写开发者信息.应用信息 2. 配置RSA256密钥,生成支付宝和应用的密钥 3. 构造订单接口API,生成订单 4. 构造支付接口 1. 进入蚂蚁金服开放平台填写开发者信息.应用信息 这里通过沙箱环境开发测试接口,蚂蚁金服开放平台-->开发者中心-->研发者服

asp.net mvc 接入最新支付宝支付+退款 alipay-sdk-NET-20170615110549

第1步: https://openhome.alipay.com/developmentDocument.htm 第2步:下载sdk和demo https://docs.open.alipay.com/270/106291/ https://docs.open.alipay.com/54/103419 第3步:将SDK放到解决方案下并在解决方案下打开下载下来的SDK项目 第4步:新建项目,项目中新建一个类存放支付宝配置相关信息 登录支付宝进入开发者中心 https://openhome.alip

支付宝支付之扫码支付(电脑网站支付)、H5支付(手机网站支付)相关业务流程分析总结

前言 在上一篇文章<微信支付之扫码支付.公众号支付.H5支付.小程序支付相关业务流程分析总结>中,分析和总结了微信支付相关支付类型的业务流程,这里作为与微信支付平起平坐不相伯仲的支付宝支付,当然也是每个公司少不了的第三方支付接入选择. 因此,本篇文章主要分析和总结支付宝支付中的扫码支付.H5支付相关业务流程. 概述 1. 电脑网站支付 电脑网站支付,也称扫码支付,是专门针对电脑而开发的一种支付方式,既在网页展示一个动态生成的支付二维码,用户通过手机支付宝扫码以后可实现支付功能的一种支付方式.

手机网站和App如何接入支付宝简易版支付功能PHP版

接入支付宝准备工作:(关于账号可以是个体商户也可以是企业账号但必须有营业执照) 1.登录蚂蚁金服开放平台  2.创建应用,应用分类网页应用和移动应用.应用提交审核审核通过后得到Appid才能调用相应的接口权限 3.添加功能:一般有扫码付,电脑网站支付,手机网站支付,APP支付.看你的需求什么.移动应用选择APP支付或者是扫码付,而网页应用分为移动端和PC端. 4.商户签约 需要提交相关的资料 一般是要求你提供你的网站地址和APP包等要求 按照支付宝要求来签约相关的支付功能 5.配置你的应用开发配

Android app 第三方支付宝支付接入

支付宝的接入相对比较简单,看看支付宝官网的文档基本都能搞定,但是切记一点让你们的后台也要搞清楚支付宝的流程,不然对接起来是一件很蛋疼的事情. 开始搬砖 注意事项 开发前一定要阅读支付宝官方文档 强烈建议签名等处理在后台处理,我这个是测试是在自己本地写的,不要吐槽 想获取支付宝合作商户ID,及支付宝公钥请点击支付宝链接,生成密钥及PKCS8转码工具在文档中 添加android.permission.INTERNET权限和android.permission.ACCESS_NETWORK_STATE

腾腾流氓,云云更流氓(问微信怎样接入支付宝支付),手贱的赶紧点,你会感谢我的

草原上的两匹马! 打从当年微信开始布局公众号之初时,估计就已经想到了与支付宝正面冲突的场面,所以微信先来个瞒天过海,在春晚搞了个微信红包,那叫一个火呀,此时的云云隐隐感觉到些许不安. 早期的微信开发者可能都知道,微信公众号刚开始的时候接入支付要交巨额的保证金,根据行业不同,金额也不同,但也有大几万呢.这让很大一部分微型企业望而却步(老子创业时,注册公司的注册资金都免了,用个支付,你还要保证金),所以,大家果断用支付宝. 这样一来,腾哥的如意算盘算是打到自己脚面了,本打算可以用企业交的保证金拿去做

iOS支付宝支付(Alipay)详细接入流程以及项目中遇到的问题分析

iOS支付宝支付(Alipay)详细接入流程以及项目中遇到的问题分析 浏览: 149 发布日期: 2016-10-19  分类: ios 最近在项目中接入了微信支付和支付宝支付,总的来说没有那么坑,很多人都说文档不全什么的,确实没有面面 俱到,但是认真一步一步测试下还是妥妥的,再配合懂得后台,效率也是很高的,看了这篇文章,你也只要几分钟, 就能轻松接入支付宝,在别人投来崇拜的眼光的同时,你就能潇洒的回一句,略懂略懂......   先给大家我写的微信支付,很详细哦,喜欢的点个赞点击打开微信支付链

手机APP支付--整合支付宝支付控件

长话短说,本文根据支付宝官方说明文档,简单总结下,并且说明下开发过程碰到的问题以及该如何解决. 整合步骤: 1 登录商家服务网站,下载开发包,地址:https://b.alipay.com/order/techService.htm, 下方选择“移动支付” 2 下载的开发包里面包含整合文档<支付宝钱包支付接口开发包2.0标准版.pdf><支付宝钱包支付接口开发包2.0标准版接入与使用规则.pdf> 3 开发人员都请先看下<支付宝钱包支付接口开发包2.0标准版.pdf> 

iOS app集成支付宝支付流程及后台php订单签名处理

iOS app集成支付宝支付流程 1: 开通支付宝商户 由公司去支付宝 https://b.alipay.com/order/serviceIndex.htm 签约支付宝开通支付宝商家: 2:商户支付宝开通无线支付功能 开通商户支付宝之后,虽然可以获取到应用使用的 key和id,如果如果不开通无线支付功能的话,会在app集成的时间 提示商户未开通无线支付功能的错误: 开通商户支付宝-无线支付功能,请在商户支付宝后台,按要求提供审核材料开通: 3:在商户支付宝后台下载SDK 在商户支付宝后台,即可