Java支付宝支付-PC电脑网站支付接口

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Shining_QX/article/details/79288170

目录(未完成有问题可先留言)


接口概述


场景介绍

  1. 买家通过商户网站选择商品下单并点击支付;
  2. 页面跳转至支付宝收银台页面,用户可使用手机支付宝扫码支付或在收银台页面进行支付宝网页登录支付;
  3. 付款成功后将跳回商户的支付成功页面(商户所设置的同步通知return_url);

接口应用

Demo及参数详解

以下代码以Java语言为例:

1.配置文件(AlipayConfig.java):
  • 配置文件中相关公共请求参数详见【JAVA支付宝支付——创建应用及参数配置】
  • 若条件暂时无法创建应用也可使用【沙箱应用】进行接口调试,沙箱应用参数配置详见【JAVA支付宝支付——沙箱应用】
  • 创建应用及查看参数地址:【创建应用】

代码:

public class AlipayConfig {
    // 创建应用所得到的APPID,收款方支付宝账户对应此参数(15位数字)
    public static String app_id = "2018*******6673";
    // 商户私钥,您的PKCS8格式RSA2私钥,即为创建应用中配置参数时使用密钥生成工具所生成的商户应用私钥
    public static String merchant_private_key = "MIIEvwIB*********W6A==";
    // 支付宝公钥(非商户应用公钥),即为创建应用中配置参数时使用密钥生成工具生成的商户应用公钥配置在应用公钥后所对应生成的支付宝公钥
    public static String alipay_public_key = "MIIB*********IDAQAB";
    // 页面跳转同步通知地址路径,即支付成功后支付宝索要跳转到的商户页面或地址(需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问)
    public static String return_url = "http://www.20180131.cn/return_url.jsp";
    // 服务器异步通地址路径,支付宝在支付成功后跳转同步通知地址(前台)的同时,会异步(后台)向此地址发送成功的通知,以防前台页面关闭造成前台接收不到支付成功通知,故在此地址可对商户后台进行支付状态修改。(需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问)
    public static String notify_url = "http://www.peibingying520.cn/notify_url.jsp";
    // 签名方式(私钥)
    public static String sign_type = "RSA2";
    // 字符编码格式
    public static String charset = "utf-8";
    // 支付宝网关(注意沙箱应用与正式环境此参数不同)
    //public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";(沙箱环境)
    public static String gatewayUrl = "https://openapi.alipay.com/gateway.do";(正式环境)
}
2.支付接口(alipay.trade.page.pay.jsp)
  • 以下为电脑网页支付发送请求java代码

代码:

    //获得初始化的AlipayClient,请勿更改参数顺序
    AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
    //设置请求参数
    AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
    //设置支付宝同步通知地址
    alipayRequest.setReturnUrl(AlipayConfig.return_url);
    //设置支付宝异步通知地址
    alipayRequest.setNotifyUrl(AlipayConfig.notify_url);    
    //以下为用户请求参数,此处为接收来自前台的表单提交的参数
    //商户订单号,商户网站订单系统中唯一订单号,必填

    String out_trade_no =new String(request.getParameter("WIDout_trade_no ").getBytes("ISO-8859-1"),"UTF-8");
    //付款金额,必填
    String total_amount =new String(request.getParameter("WIDtotal_amount ").getBytes("ISO-8859-1"),"UTF-8");
    //交易标题,必填
    String subject = new String(request.getParameter("WIDsubject ").getBytes("ISO-8859-1"),"UTF-8");
    //交易描述,可空
    String body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"),"UTF-8");

    //业务请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递
    alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\"," 
            + "\"total_amount\":\""+ total_amount +"\"," 
            + "\"subject\":\""+ subject +"\"," 
            + "\"body\":\""+ body +"\"," 
            + "\"timeout_express\":\"30m\","//该笔订单允许的最晚付款时间,逾期将关闭交易。
            + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");//销售产品码,与支付宝签约的产品码名称。 注:目前仅支持FAST_INSTANT_TRADE_PAY

    //发送请求,支付宝将返回一个支付请求的表单数据串
    String result = alipayClient.pageExecute(alipayRequest).getBody();
    //将返回结果输出至页面,将再次向支付宝发起请求,此次请求将直接跳转至支付宝支付页面
    out.println(result);//此处为jsp页面的输出方式

下载地址汇总

猜你喜欢

转载自blog.csdn.net/Shining_QX/article/details/79288170
今日推荐