java实现支付宝接口

您所在的位置:网站首页 java做支付需要什么技术 java实现支付宝接口

java实现支付宝接口

2024-07-03 17:48:17| 来源: 网络整理| 查看: 265

支付宝支付流程及注意事项(沙箱测试版) ---demo已做升级

​ 项目demo下载-CSDN(新-推荐):https://download.csdn.net/download/qq_39938758/11751843

 项目demo下载-CSDN(旧):https://download.csdn.net/download/qq_39938758/10581629

一、准备工作

1、springbootdemo

下载springboot得demo

2、idea开发工具(有的跳过)

idea下载链接

3、获得沙箱帐号

注册蚂蚁金服开发者账号(免费,不像苹果会收取费用)

注册地址:https://open.alipay.com,用你的支付宝账号扫码登录,完善个人信息,选择服务类型(我选的是自研)。

进入沙箱,第一次需要填写信息!(我已经有了所以就不需要了)

记得把下面生成的商户公钥保存到沙箱上

4、生成2048位商户公私钥(私钥保存与支付宝)

进入官方地址:https://docs.open.alipay.com/291/105971

下载生成工具

支付宝-支付流程

 

生成公私钥,并且保存

 

标题

 

保存公私钥

把支付宝公钥 保存到沙箱环境。

 

5、pom.xml文件依赖alipay得jar包

  com.alipay.sdk   alipay-sdk-java   3.0.0 ​   commons-logging   commons-logging   1.1.1 ​   com.alibaba   fastjson   1.2.33   org.projectlombok   lombok 二、支付宝支付代码流程

Demo项目结构: 请下载lombok插件

标题

第一步: 配置alipay.properties

# 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号 app_id = 2016091600527203 # 商户私钥,您的PKCS8格式RSA2私钥 merchant_private_key = MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCAWY4SMml0Y9cWjf/19/zTFu9YFsmsV/QiD/9yk37MNrYxElo6hcdWbxBMX984kZVMs9WR0y3LcoENo43dOch+5UWsmHdMdX/DLJ4p4qx7JuYKUIcYT89dzAJe6e0LN/b7Sng7MoN9QD/iuzGTfHehZ2nU9VqBE7OW05m74MfT9rEYjLuJQc7IGezFV3uBbAUjtHUhIzq4iQ5shMf8JewbWXAh45FhHadD6yVFxPDmkyQJSRlfE39jXN+I4RILegMeJJNu5Mzd5GmTGukksLOoCBVoWpa5CgoPymBHosQpWgpjw5ItCJ4o0ttxnKW10kWQxcE+5E7nwTMpXdy3/veRAgMBAAECggEAdgtnmh7ZVF2a7biOCDgbRD2cxcS3mRWPiGB0TXmQLdvH9xvs9lQhwMIHGGc4kvt6eAAR1buHK81VGikpiaTiXKsbSKE1X5HVfrkjglxizCU7f5MOnPKSQq8mIws8o4vGUNnt+Gv9+Q1FdI88Cmx4Tm8hK+a4ZWysSHS2uNAEmVG5EB5zZmAG/N+oXGRQ+Kisf5pO27AQpc7bC1w6FZ1Te1wZKEX+5GPZc7dRLINvbzX7eEXiAE9Rv3RzRU+98HGXgA3kMTmQXqN24y2NIKOB5TZz8zsuUmW+haoxvRoL4fxnIhuaH39lwvsJyQa/T8kLWw9+2CmVDvEfWk/y2sDkAQKBgQDuWkOdlwJIySzXwTNlPQ7q0X3GJ3rjkgG0xysIHP69GCk5WwxlKx8WOORfnoPpYT0V8G1IYfy7RpVzqRkx3mYOEEk1OQGVhGRPuDnjhdyc39NVcrPU2P09aVnOp074Fwr7ei7tUAhSNJE0YNgyteq4pDRCl3cggeqQB/KWrgFj0QKBgQCJ2kxHaH8zPVGot3NdGhnuw9KibdPL3kx2n6ZSBL5IGQZk0sMCsnfb2dHCTZJhZs9MCG7okpBD9m0JsmY9b3FEupbA4YbF+4PKId+ShlUJNY2RDPNzb3kyYbEFzHcUJo7qFkeASTWIxKeZYXhtWT0Ue0Zf+lnsalKcm/dq8bgHwQKBgA0yyF24l/LJ2QbVdvAbMnFESm+njgF9+0Q0Zyia2mxEIzw+02/itGT5n4O/9lP9A3Hsj1CbxG/mV65A5dlCFGqg8jzVPEY4P4m+jM4RgobZSg2IPXcC0PsOk1+DGjdYp04HlQOlE+DhckzxM+eS9T1mMlKhqoINT5zMI92+IuuRAoGAcTPc0/8SBcfjGQOdLuVSSmpwvIYoGRByBi/QayYOBDLYt08EaWCZYOccg80j2eyNasi6Gy7QXZ8tp3rizqyHfYMkbTxGaqrCbOkoKbE6f5eEq4rRGQh/pEnpDvP7DYckcULecJCt76ReZWxPcqyHphwdjI+P7L7bHFRP93iMQYECgYAk/zyG+5qjEcAnyIptvrgxSklBz/2P1AEex4ZcJpkc3EgYB5sSqiSt4tpAb3s+XfQkP/+5djgGdFSIn4QmczSSf/35cck8G+bISOPoZ08wGRv8LzhXXRVpIooAtEYnJk+Xp3E1RcFmuq2IZCRX7IU3AMFRg941vW+4EAdKmk6oPQ== # 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 alipay_public_key = MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgFmOEjJpdGPXFo3/9ff80xbvWBbJrFf0Ig//cpN+zDa2MRJaOoXHVm8QTF/fOJGVTLPVkdMty3KBDaON3TnIfuVFrJh3THV/wyyeKeKseybmClCHGE/PXcwCXuntCzf2+0p4OzKDfUA/4rsxk3x3oWdp1PVagROzltOZu+DH0/axGIy7iUHOyBnsxVd7gWwFI7R1ISM6uIkObITH/CXsG1lwIeORYR2nQ+slRcTw5pMkCUkZXxN/Y1zfiOESC3oDHiSTbuTM3eRpkxrpJLCzqAgVaFqWuQoKD8pgR6LEKVoKY8OSLQieKNLbcZyltdJFkMXBPuRO58EzKV3ct/73kQIDAQAB # 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数 notify_url = http://外网ip:端口/error.html # 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数 return_url = http://外网ip:端口/sccess.html # 签名方式 sign_type = RSA2 # 字符编码格式 charset = utf-8 # 支付宝网关 gatewayUrl = https://openapi.alipaydev.com/gateway.do # 支付宝网关 log_path = "C:\\"

第二步: 编写测试页面 index.html

       Title 支付宝demo测试   *商户订单 :       *订单名称 :       *付款金额 :         商品描述 :        

第三步: 编写参数bean

/*支付实体对象*/ @Data @Accessors(chain = true) public class AlipayBean {    /*商户订单号,必填*/    private String out_trade_no;    /*订单名称,必填*/    private String subject;    /*付款金额,必填*/    private StringBuffer total_amount;    /*商品描述,可空*/    private String body;    /*超时时间参数*/    private String timeout_express="10m";    private String product_code="FAST_INSTANT_TRADE_PAY"; }

第四步: 编写应用加载完成加载相关配置参数

/* 应用启动加载文件*/ @Component public class PropertiesConfig implements ApplicationListener {    //保存加载配置参数    private static Map aliPropertiesMap = new HashMap();        /*获取配置参数值*/    public static String getKey(String key) {        return aliPropertiesMap.get(key);   }        /*监听启动完成,执行配置加载到aliPropertiesMap*/    public void onApplicationEvent(ApplicationEvent event) {        if (event instanceof ApplicationReadyEvent) {            this.init(aliPropertiesMap);//应用启动加载       }   } ​    /*初始化加载aliPropertiesMap*/    public void init(Map map) {        // 获得PathMatchingResourcePatternResolver对象        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();        try {            //加载resource文件(也可以加载resources)            Resource resources = resolver.getResource("classpath:config/alipay.properties");            PropertiesFactoryBean config = new PropertiesFactoryBean();            config.setLocation(resources);            config.afterPropertiesSet();            Properties prop = config.getObject();            //循环遍历所有得键值对并且存入集合            for (String key : prop.stringPropertyNames()) {                map.put(key, (String) prop.get(key));           }       } catch (Exception e) {            new Exception("配置文件加载失败");       }   } }

第五步: 编写支付宝util

/* 支付宝 */ public class AlipayUtil {    public static String connect(AlipayBean alipayBean) throws AlipayApiException {         //1、获得初始化的AlipayClient        AlipayClient alipayClient = new DefaultAlipayClient(                PropertiesConfig.getKey("gatewayUrl"),//支付宝网关                PropertiesConfig.getKey("app_id"),//appid                PropertiesConfig.getKey("merchant_private_key"),//商户私钥                "json",                PropertiesConfig.getKey("charset"),//字符编码格式                PropertiesConfig.getKey("alipay_public_key"),//支付宝公钥                PropertiesConfig.getKey("sign_type")//签名方式       );        //2、设置请求参数        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();        //页面跳转同步通知页面路径        alipayRequest.setReturnUrl(PropertiesConfig.getKey("return_url"));        // 服务器异步通知页面路径        alipayRequest.setNotifyUrl(PropertiesConfig.getKey("notify_url"));        //封装参数        alipayRequest.setBizContent(JSON.toJSONString(alipayBean)); ​        //3、请求支付宝进行付款,并获取支付结果        String result = alipayClient.pageExecute(alipayRequest).getBody();        //返回付款信息        return  result;   } }

第六步: 编写业务层

/*支付服务*/ public interface PayService {    /*支付宝*/    String aliPay(AlipayBean alipayBean) throws AlipayApiException; }   /* 支付服务 */ @Service(value = "alipayOrderService") public class PayServiceImpl implements PayService {    @Override    public String aliPay(AlipayBean alipayBean) throws AlipayApiException {        return AlipayUtil.connect(alipayBean);   } }

第七步:编写web接口测试

/* 订单接口 */ @RestController() @RequestMapping("order") public class OrderController {    @Resource    private PayService payService;//调用支付服务 ​    /*阿里支付*/    @PostMapping(value = "alipay")    public String alipay(String out_trade_no,String subject,String total_amount,String body) throws AlipayApiException { ​        return  payService.aliPay(new AlipayBean()                 .setBody(body)                 .setOut_trade_no(out_trade_no)                 .setTotal_amount(new StringBuffer().append(total_amount))                 .setSubject(subject));   } }

 

三、测试验证

 

 

备注1:相关注意事项

1、注意下载lombok插件和依赖lombokjar

2、其中service可以不要的,直接接口调用util文件也可以,当然你也可以直接在接口写连接加载都可以

备注2:支付宝相关资料链接

1、实现支付宝支付功能

2、叫你如何用支付宝测试扫一扫付钱功能

备注3:个人说明

* 沙箱版和正式流程无误,只是参数变化  和需要把应用增加到支付宝里面


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭