zoukankan      html  css  js  c++  java
  • [支付宝]手机网站支付快速接入

    参考开发文档:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.FjX7f6&treeId=193&articleId=105285&docType=1#s0

    文档中其它地方还好理解,倒是第三步有点容易让人误会,下面是第三步中的一张表,红色字体解释了让人容易误会的地方:

    配置通用接入参数:

    参数名称参数说明
    APP_ID 开放平台应用的APPID,详见创建应用并获取APPID,应用审核上线后生成的一个appid
    APP_PRIVATE_KEY 开发者应用私钥,详见配置密钥,注意:这个私钥是secret_key_tools工具生成的pkcs8结尾的私钥文件
    CHARSET 请求和签名使用的字符编码格式,支持GBK和UTF-8
    ALIPAY_PUBLIC_KEY 支付宝公钥,详见配置密钥,配置应用公钥后生成的支付宝公钥

    即时交易开发文档:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.xXBAjT&treeId=62&articleId=104743&docType=1,不知道为什么新版本开发文档中找不到即时交易,并且沙箱模式不支持即时交易。

    下面代码是我使用支付宝沙箱模式做的一个demo:

     1 /**
     2  * 阿里支付平台接入参数配置类
     3  * @author gaojunming
     4  *
     5  */
     6 public class Config {
     7     //商户UID
     8     public static final String SELLER_ID="2088102169470215";
     9     /*以下为通用接入参数*/
    10     //开放平台应用的APPID
    11     public static final String APP_ID="2016080100142192";
    12     //请求和签名使用的字符编码格式
    13     public static final String CHARSET="UTF-8";
    14     //支付宝公钥
    15     public static final String ALIPAY_PUBLIC_KEY="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIgHnOn7LLILlKETd6BFRJ0GqgS2Y3mn1wMQmyh9zEyWlz5p1zrahRahbXAfCfSqshSNfqOmAQzSHRVjCqjsAw1jyqrXaPdKBmr90DIpIxmIyKXv4GGAkPyJ/6FTFY99uhpiq0qadD/uSzQsefWo0aTvP/65zi3eof7TcZ32oWpwIDAQAB";
    16     //开发者应用私钥
    17     public static final String APP_PRIVATE_KEY="MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAN2tw80/8XA6vE6qLwIKlFCo8yEZ3+YMvwbWJJK/2QX+oTcriMC26XOGrMlXRIGPTWgS6UPLwArd8H1R4oHHBhx6teHjLyN0NBPBd5Zdzf9e4I9sKQNXOF4siury0eJVUWAQOps5s5k06vdpsBzjX+Sh3Zi3BANgBX6Wq4LszY8lAgMBAAECgYAPf6Se5weUVybvQQrEU8UG1qkY+VwkE2QPsE0iTXN47dKLrumCv8cWoqXV9dn+TOyWiCvy533nxJiZym3RsP6GQeEczEzcqCUMOtRamxU3HVoVz8oevnJjv4ieXLhMqCXCAWtreW4SJMlqid637PM8i9Oh1yzquvyrvq6nf7NpwQJBAPbPl/8OYt29KhrPK2Rth8Hjq5Lpq5MRbrE8maoOImJmmJ+lM1FgcFXF1hseSrhHbv9BuYfyiqcRDfznTnwhMI0CQQDl7qGkHnbINL2htWlUWC/0hrbS4ckKX80RzSZplGf7uLXUn9wSQNucPIWUOeRJ+6iHq0+NACgpgxfNXmXr/C75AkAtOMw4x4IF7usQDnV86TS+qeB+AqKVR9RoVRoytnRGY1YDqllEx87NaHpabapzKWOFEZ3U8vPEuLM/a4JN7CbhAkEAxKaygn43kwVghlR0kFmYMiehZ30KB6Bl8GqoBraRtH2GriJHAymLafVtPZfBwvDEc7w1nl9a+h4Plmq8+vbFaQJBAIzz0mA55/pkdIMUruAm8bsRmCeWhktMemyJPGjqs3wRz2y67V4DpVkh0vVI1osEw44/MfRIykAsZrItr/eIYYQ=";
    18     //支付宝网关
    19     public static final String URL="https://openapi.alipaydev.com/gateway.do";//注意沙箱模式的支付宝网关和正式支付宝网关是不同的
    20 }
     1 /**
     2  * 阿里支付平台功能类
     3  * 
     4  * @author gaojunming
     5  *
     6  */
     7 public class Alipay {
     8     // 初始化alipayClient对象
     9     public static AlipayClient alipayClient = new DefaultAlipayClient(
    10             Config.URL, Config.APP_ID, Config.APP_PRIVATE_KEY, "json",
    11             Config.CHARSET, Config.ALIPAY_PUBLIC_KEY);
    12 
    13     /**
    14      * wap支付
    15      * 
    16      * @return
    17      * @throws AlipayApiException
    18      */
    19     public static AlipayTradeWapPayResponse pay(String content) throws AlipayApiException {
    20         // 创建API对应的request
    21         AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();
    22         // 在公共参数中设置回跳和通知地址(应用提供给支付宝的请求路径),沙箱模式中不起作用(不知道是不是这个原因,支付宝技术客服告诉我正式上线后就没问题)
    23         alipayRequest.setReturnUrl("http://xxx.com/xxx");
    24         alipayRequest.setNotifyUrl("http://xxx.com/xxx");
    25         // 填充业务参数
    26         alipayRequest.setBizContent(content);
    27         AlipayTradeWapPayResponse alipayResponse = alipayClient
    28                 .pageExecute(alipayRequest);
    29         return alipayResponse;
    30     }
    31 }
     1 /**
     2      * 移动端网页支付
     3      * @param content    业务参数
     4      * @throws IOException
     5      * @throws AlipayApiException
     6      */
     7     @RequestMapping(value="wab/pay",method=RequestMethod.POST)
     8     public void wapPay(@RequestParam(value = "content", required = true) String content) throws IOException, AlipayApiException {
     9         //设置将发送到客户端的响应的内容类型
    10         response.setContentType("text/html;charset="+Config.CHARSET);
    11         AlipayTradeWapPayResponse alipayResponse= Alipay.pay(content);
    12         String from= alipayResponse.getBody();
    13         System.out.println(from);
    14         //输出支付宝返回的表单页面
    15         printHtml(from);
    16     }

    支付宝开放平台支持中心:https://support.open.alipay.com/alipay/support/index.htm

  • 相关阅读:
    ActiveMQ( 一) 同步,异步,阻塞 JMS 消息模型
    rocketmq (一)运行原理以及使用问题
    Springboot+ActiveMQ(ActiveMQ消息持久化,保证JMS的可靠性,消费者幂等性)
    ActiveMQ(下载,启动,java程序中 如何操作)
    ActiveMQ(为什么要使用消息中间件,JMS传输模型)
    java(线程池的创建方式,和线程池的原理)
    java多线程
    Zookeeper实现负载均衡
    Zookeeper实现分布式锁
    SpringCloud-断路器(Hystrix)
  • 原文地址:https://www.cnblogs.com/hihtml5/p/6212096.html
Copyright © 2011-2022 走看看