集成 alipay 的通用版


一、引入依赖

<dependency>
    <groupId>com.alipay.sdkgroupId>
    <artifactId>alipay-sdk-javaartifactId>
    <version>3.3.87.ALLversion>
    <exclusions>
        <exclusion>
            <artifactId>commons-loggingartifactId>
            <groupId>commons-logginggroupId>
        exclusion>
    exclusions>
dependency>
<dependency>
    <groupId>commons-langgroupId>
    <artifactId>commons-langartifactId>
    <version>2.6version>
dependency>
<dependency>
    <groupId>commons-configurationgroupId>
    <artifactId>commons-configurationartifactId>
    <version>1.10version>
    <exclusions>
        <exclusion>
            <artifactId>commons-loggingartifactId>
            <groupId>commons-logginggroupId>
        exclusion>
    exclusions>
dependency>
<dependency>
    <groupId>commons-codecgroupId>
    <artifactId>commons-codecartifactId>
    <version>1.11version>
dependency>


<dependency>
    <groupId>com.google.zxinggroupId>
    <artifactId>coreartifactId>
    <version>3.2.1version>
dependency>

<dependency>
    <groupId>org.hamcrestgroupId>
    <artifactId>hamcrest-coreartifactId>
    <version>1.3version>
    <scope>testscope>
dependency>
<dependency>
    <groupId>com.google.code.gsongroupId>
    <artifactId>gsonartifactId>
    <version>2.8.5version>
dependency>

二、下载Demo

https://opendocs.alipay.com/open/54/104506/   1、拷贝Demo到项目中 (1)拷贝 TradePayDemo\src\com\alipay\demo\trade\ 目录下的文件到项目中;    (2)拷贝 TradePayDemo\src\ 下的配置文件 zfbinfo.properties 到项目中的 resources 目录下; (3)拷贝 TradePaySDK\src\com\alipay\demo\trade\ 目标下的文件到项目中;   

 拷贝完成的项目目录结构:

  注意:全局替换包路径方法:

三、支付宝沙箱环境的说明及配置

参考资料:https://blog.csdn.net/qq_42941671/article/details/108395619   https://docs.open.alipay.com/200/105311/     沙箱环境 (Beta) 是支付宝开放平台为您提供的与线上环境完全隔离的联调测试环境,在沙箱环境中完成的调用不会对线上数据造成任何影响,尤其适合涉及资金链路的能力的调试。

1、沙箱环境的登录

  点击“沙箱环境”,使用支付宝登录;   

2、沙箱环境的配置(zfbinfo.properties文件)

(1)支付宝网关名配置

  open_api_domain 要修改为沙箱环境的支付宝网关名:https://openapi.alipaydev.com/gateway.do

(2)appId的配置

  登录沙箱环境就可以看到应用的 appId 信息,将 appId 添加到 zfbinfo.properties 文件中;

  

(3)pid 的配置

  zfbinfo.properties 文件中的 pid 是账户ID,可以在右上角的 “账户中心” 中查看到 “账号ID” ;

  

 (4)公钥私钥对的生成和配置

  a. 密钥工具并安装:    下载地址:https://opendocs.alipay.com/common/02kipl       

   b.  打开安装的工具,并点击 “生成密钥”,就会生成对应的 ”应用私钥“ 和 ”应用公钥“;

   c.  复制 “私钥”配置为  private_key 的值复制 ”公钥“ 配置为  public_key 的值;

(5)支付宝公钥的获取和配置

  a. 在沙箱环境中的 ”开发信息“ 中选择 “自定义密钥”,并点击 ”设置并启用“;

   b.  拷贝我们在(4)中使用工具生成的公钥,填写到填写的公钥字符位置,点击 “保存设置” 生成对应的支付宝公钥;

   c. 将生成的支付包的公钥,配置为  alipay_public_key 的值;

四、业务代码

下支付宝订单,根据 response 信息生成二维码;

1、生成二维码

(1)当面付的 Demo 代码中,Main.java 的 test_trade_precreate() 方法 为生成支付二维码的方法,将方法的内容拷贝到 Service 的方法中; (2)Main.java 的静态代码块内容,拷贝到 Service 的初始化方法中;

 资源路径的映射配置

@Configuration
public class ResourceConfig implements WebMvcConfigurer {

    @Autowired
    private TradePayProp tradePayProp;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        String os = System.getProperty("os.name");
        //windows系统
        if(os.toLowerCase().startsWith("win")){
            /** 支付码图片QrCode图片存储路径 */
            // 将 "D:/code/temp/qr-code/**" 路径映射为 "/static/qrcode/" 路径
            // 可以使用 http://localhost:8088/static/qrcode/qr-20211217215530.png 访问二维码
            registry.addResourceHandler(tradePayProp.getHttpBasePath() +"/**")
                    .addResourceLocations("file:" + tradePayProp.getStorePath() + "/");
        }
        else{ //linux或者mac
            registry.addResourceHandler("/static/resources/**")
                    .addResourceLocations("file:/usr/local/resources/"); //静态资源
        }
    }
}

 代码地址:https://gitee.com/feng_218/alipay-demo/tree/master/src/main