欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

支付宝接入

程序员文章站 2022-05-30 08:17:44
...

一、支付宝的官网网址

 https://open.alipay.com/platform/home.htm

开发文档地址:

 https://docs.open.alipay.com/270

二、如何接入支付宝

1)在支付宝开发平台创建APP的应用 - 支付宝会返回一个商户的唯一标识APPID

2)配置应用

    选择应用的开发权限 - 创建应用后选择

    配置**(重要)

        哈希算法:
            MD5、SHA1(明文 -> 32位的字符串,不可逆的加密算法,(哈希)摘要算法) -> 密码加密
            Base64(二进制数据 -> 字符串 -> 二进制数据,编解码算法)
        
        对称加密(**,明文->**->密文,密文->**->明文)(DES、AES....)
            
        非对称加密(公钥-私钥,明文->私钥->密文,密文->公钥->明文)(RSA)

3)集成配置SDK,开始写代码

    1、添加支付宝依赖


<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.8.10.ALL</version>
</dependency>

    2、写代码


4)调用接口进行支付

    1、支付的流程图

支付宝接入
2、调用支付接口进行支付

@RequestMapping("/alipay")
public void aliPay(Integer oid, HttpServletResponse response){


//service根据oid查询订单对象
Orders orders = orderService.queryById(oid);
System.out.println("需要下单的订单信息:" + orders);


//获得支付宝核心对象
AlipayClient alipayClient = AliPayUtil.getAlipayClient();


//调用支付接口进行支付
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的request
alipayRequest.setReturnUrl("http://www.baidu.com");//用户支付完成后同步跳转的url
alipayRequest.setNotifyUrl("http://www.baidu.com");//支付完成后,异步通知商户支付结果
//交易支付的请求参数
alipayRequest.setBizContent("{" +
        "    \"out_trade_no\":\"" + orders.getOrderid() + "\"," +
        "    \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
        "    \"total_amount\":" + orders.getAllprice().doubleValue() + "," +
        "    \"subject\":\"" + orders.getOrderid() + "\"," +
        "    \"body\":\"" + orders.getOrderid() + "\"," +
        "    \"extend_params\":{" +
        "    \"sys_service_provider_id\":\"2088511833207846\"" +
        "    }"+
        "  }");//填充业务参数
String form="";
try {
    form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
} catch (AlipayApiException e) {
    e.printStackTrace();
}
response.setContentType("text/html;charset=UTF-8");
try {
    response.getWriter().write(form);//直接将完整的表单html输出到页面
    response.getWriter().flush();
    response.getWriter().close();
} catch (IOException e) {
    e.printStackTrace();
}
}