开启左侧

支付宝支付对接整理(小程序,APP)

[复制链接]
在线会员 春风吹皱了露氺 发表于 2023-2-6 09:27:42 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
文章择要


  • 使用的创立

    • 创立使用
    • 树立减签方法
    • 设置聚拢(需要的永久皆是那多少个工具)

      • 留神事变


  • 效劳端SDK理解

    • Easy SDK(新版)

      • 根本使用
      • 留神事变

    • AlipayClient

      • 事情道理
      • 使用办法
      • 留神事变


  • 名目DEMO
简朴介绍一下,付出宝盛开仄台的大抵构造。

付出宝付出连接收拾整顿(小法式,APP)-1.jpg
1  创立使用。

盛开仄台能够创立多品种型的使用,(女伶 href="https://www.taojin168.com/cloud/" target="_blank">小法式,糊口号,网页&挪动使用,AR使用)。


付出宝付出连接收拾整顿(小法式,APP)-2.jpg
2  树立减签方法

每一个使用城市有一下多少个自己的配合属性


付出宝付出连接收拾整顿(小法式,APP)-3.jpg
此中最主要的即是APPID 战 交心的减签方法。
交心的减签方法,决定了您是使用证书籍减签仍是公钥减签。那二个挑选会间接招致效劳端使用的编程方法发作变革,那个随即再道。
减签方法的树立,能够检察那个民间文档,一步一步去便出成就。
使用证书籍减签,会获得如下多少个证书籍:使用公钥证书籍,阿里公钥证书籍,阿里根证书籍
使用公钥减签,只会获得使用公钥串,战使用公钥串
3 最小设置

证书籍减签最小设置
  1. /**
  2.      * APPID
  3.      */
  4.     private String appId;
  5.     /**
  6.      * 署名范例
  7.      */
  8.     private String signType = "RSA2";
  9.     /**
  10.      * 同步报告地点
  11.      */
  12.     private String notifyUrl;
  13.     /**
  14.      * 使用公钥串
  15.      */
  16.     private String merchantPrivateKey;
  17.     /**
  18.      * 使用公钥证书籍路子
  19.      */
  20.     private String merchantCertPath;
  21.     /**
  22.      *领取 宝公钥证书籍路子
  23.      */
  24.     private String alipayCertPath;
  25.     /**
  26.      *领取 宝根证书籍路子
  27.      */
  28.     private String alipayRootCertPath;
复造代码
公钥减签最小设置
  1. /**
  2.      * APPID
  3.      */
  4.     private String appId;
  5.     /**
  6.      * 署名范例
  7.      */
  8.     private String signType = "RSA2";
  9.     /**
  10.      * 同步报告地点
  11.      */
  12.     private String notifyUrl;
  13.     /**
  14.      * 使用公钥串
  15.      */
  16.     private String privateKey;
  17.     /**
  18.      *领取 宝公钥串
  19.      */
  20.     private String alipayPublicKeyPath;
复造代码
证书籍的路子正在新老版原的处置中差别,新版的Easy SDK能够绝对路子或者ClassPath减载证书籍。老版原的API只可颠末绝对路子减载证书籍。
最小设置的成立,是为了分歧办理中心属性。不论是颠末软编码,仍是颠末Spring @Value 的注进,皆该当连结最小设置的颠簸性,不克不及随逢变动。假设中心属性不敷使用,能够颠末承袭的方法,再来扩大对于应的减签方法的设置。
交下来,介绍一下效劳端对于应的SDK。

付出宝付出连接收拾整顿(小法式,APP)-4.jpg
1 Easy SDK的使用
起首要初初化设置
  1. // 1. 树立参数(全部只要树立一次)
  2. Factory.setOptions(getOptions());
复造代码
使用办法
  1. Factory.才气种别.场景种别.交心办法称呼( ... )
复造代码
留神事变
Easy SDK 的Config 设置类中,共时撑持公钥减签战证书籍减签,理论使用谁人,便把最小设置里的参数传过去便可。
因为Factory是个固态类,假设存留二个APPID 正在一个体系里,便出收共时使用Easy SDK。好比,小法式战APP正在一个体系里,这时候便出收使用Easy SDK,只可使用老版原的API。
民间示例
  1. import com.alipay.easysdk.factory.Factory;
  2. import com.alipay.easysdk.factory.Factory.Payment;
  3. import com.alipay.easysdk.kernel.Config;
  4. import com.alipay.easysdk.kernel.util.ResponseChecker;
  5. import com.alipay.easysdk.payment.facetoface.models.AlipayTradePrecreateResponse;
  6. public class Main {
  7.     public static void main(String[] args) throws Exception {
  8.         // 1. 树立参数(全部只要树立一次)
  9.         Factory.setOptions(getOptions());
  10.         try {
  11.             // 2. 倡议API挪用(以创立劈面付支款两维码为例)
  12.             AlipayTradePrecreateResponse response = Payment.FaceToFace()
  13.                     .preCreate("Apple iPhone11 128G", "2234567890", "5799.00");
  14.             // 3.处置 照应或者非常
  15.             if (ResponseChecker.success(response)) {
  16.                 System.out.println("挪用胜利");
  17.             } else {
  18.                 System.err.println("挪用失利,启事:" + response.msg + "," + response.subMsg);
  19.             }
  20.         } catch (Exception e) {
  21.             System.err.println("挪用遭受非常,启事:" + e.getMessage());
  22.             throw new RuntimeException(e.getMessage(), e);
  23.         }
  24.     }
  25.     private static Config getOptions() {
  26.         Config config = new Config();
  27.         config.protocol = "https";
  28.         config.gatewayHost = "openapi.alipay.com";
  29.         config.signType = "RSA2";
  30.         config.appId = "<-- 请挖写您的AppId,比方:2019091767145019 -->";
  31.         // 为制止公钥随源码保守,举荐从文献中读与公钥字符串而没有是写进源码中
  32.         config.merchantPrivateKey = "<-- 请挖写您的使用公钥,比方:MIIEvQIBADANB ... ... -->";
  33.         //注:证书籍文献路子撑持树立为文献体系中的路子或者CLASS_PATH中的路子,劣先从文献体系中减载,减载失利后会持续测验考试从CLASS_PATH中减载
  34.         config.merchantCertPath = "<-- 请挖写您的使用公钥证书籍文献路子,比方:/foo/appCertPublicKey_2019051064521003.crt -->";
  35.         config.alipayCertPath = "<-- 请挖写您的付出宝公钥证书籍文献路子,比方:/foo/alipayCertPublicKey_RSA2.crt -->";
  36.         config.alipayRootCertPath = "<-- 请挖写您的付出宝根证书籍文献路子,比方:/foo/alipayRootCert.crt -->";
  37.         //注:假设接纳非证书籍情势,则无需赋值上面的三个证书籍路子,改成赋值以下的付出宝公钥字符串便可
  38.         // config.alipayPublicKey = "<-- 请挖写您的付出宝公钥,比方:MIIBIjANBg... -->";
  39.         //可树立同步报告领受效劳地点(可选)
  40.         config.notifyUrl = "<-- 请挖写您的付出类交心同步报告领受效劳地点,比方:https://www.test.com/callback -->";
  41.         //可树立AES稀钥,挪用AES减解稀相干交心时需要(可选)
  42.         config.encryptKey = "<-- 请挖写您的AES稀钥,比方:aa4BtZ4tspm2wnXLb1ThQA== -->";
  43.         return config;
  44.     }
  45. }
复造代码
getOptions()能够承受一个参数,将设置传递进来,变换给Config,制止参数集降正在使用遍地。
2 AlipayClient 的使用
AlipayClient主要 是三个工具
担当恳求收收战承受的DefaultAlipayClient,他是AlipayClient的唯一完毕。
担当聚拢才气的AlipayRequest,每一个才气皆有一个完毕,好比分歧下单AlipayTradeCreateRequest。
担当承受前去参数的AlipayResponse,取每一个AlipayRequest对于应。好比AlipayTradeCreateResponse
咱们的最小设置参数传递给了AlipayClient,此中稀钥减签,使用机关函数便可产出DefaultAlipayClient。
  1. public DefaultAlipayClient(String serverUrl, String appId, String privateKey, String format,
  2.                                String charset, String alipayPublicKey, String signType) {
  3.         super(serverUrl, appId, format, charset, signType);
  4.         this.privateKey = privateKey;
  5.         this.signer = new DefaultSigner(privateKey);
  6.         this.alipayPublicKey = alipayPublicKey;
  7.         this.signChecker = new DefaultSignChecker(alipayPublicKey);
  8.     }
复造代码
证书籍减签则差别,需要使用那个机关
  1. public DefaultAlipayClient(CertAlipayRequest certAlipayRequest) throws AlipayApiException {
  2.         super(certAlipayRequest.getServerUrl(), certAlipayRequest.getAppId(), certAlipayRequest.getFormat(),
  3.                 certAlipayRequest.getCharset(), certAlipayRequest.getSignType(),
  4.                 certAlipayRequest.getCertPath(), certAlipayRequest.getCertContent(),
  5.                 certAlipayRequest.getAlipayPublicCertPath(), certAlipayRequest.getAlipayPublicCertContent(),
  6.                 certAlipayRequest.getRootCertPath(), certAlipayRequest.getRootCertContent(),
  7.                 certAlipayRequest.getProxyHost(), certAlipayRequest.getProxyPort(), certAlipayRequest.getEncryptType());
  8.         this.privateKey = certAlipayRequest.getPrivateKey();
  9.         this.signer = new DefaultSigner(certAlipayRequest.getPrivateKey());
  10.         this.encryptor = new DefaultEncryptor(certAlipayRequest.getEncryptor());
  11.         this.decryptor = new DefaultDecryptor(certAlipayRequest.getEncryptor());
  12.     }
复造代码
此中,CertAlipayRequest 对于应的即是证书籍减签的最小设置。
不论是这种减签方法,均可以把DefaultAlipayClient设置为单例Bean,没必要屡屡创立。
民间证书籍减签示例:
  1. //机关client
  2. CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
  3. //树立网闭地点
  4. certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
  5. //树立使用Id
  6. certAlipayRequest.setAppId(app_id);
  7. //树立使用公钥
  8. certAlipayRequest.setPrivateKey(privateKey);
  9. //树立恳求格局,牢固值json
  10. certAlipayRequest.setFormat("json");
  11. //树立字符散
  12. certAlipayRequest.setCharset(charset);
  13. //树立署名范例
  14. certAlipayRequest.setSignType(sign_type);
  15. //树立使用公钥证书籍路子
  16. certAlipayRequest.setCertPath(app_cert_path);
  17. //树立付出宝公钥证书籍路子
  18. certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
  19. //树立付出宝根证书籍路子
  20. certAlipayRequest.setRootCertPath(alipay_root_cert_path);
  21. //机关client
  22. AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
  23. //机关API恳求
  24. AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
  25. //收收恳求
  26. AlipayTradeQueryResponse response = alipayClient.certificateExecute(request);
复造代码
民间稀钥减签示例
  1. AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
  2. //真例化具体API对于应的request类,类称呼战交心称呼对于应,目前挪用交心称呼:alipay.user.userinfo.share
  3. AlipayUserUserinfoShareRequest request = new AlipayUserUserinfoShareRequest();
  4. //受权类交心施行API挪用时需要戴上accessToken
  5. AlipayUserUserinfoShareResponse response= alipayClient.execute(request,"accessToken");
  6. //营业处置
  7. //...
复造代码
小我私家以为,老版原的API 活络度下,能够适应一个体系多个APP场景。只要根据,上边的最小设置战证书籍的绝对路子去设置,便不甚么成就。
名目借正在上传中,待绝。

精彩评论2

avatar
在线会员 tkgvdkBWvT 发表于 2023-2-6 09:28:35 | 显示全部楼层
开通支付宝小程序了,每年要支付服务器费用吗?
回复

使用道具 举报

avatar
在线会员 rnlT 发表于 2023-2-6 09:28:57 | 显示全部楼层
小程序不需要支付费用。自己研发的部分要做好费用规划
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 qq_login

本版积分规则

发布主题
阅读排行更多+
用专业创造成效
400-778-7781
周一至周五 9:00-18:00
意见反馈:server@mailiao.group
紧急联系:181-67184787
ftqrcode

扫一扫关注我们

Powered by 职贝云数A新零售门户 X3.5© 2004-2025 职贝云数 Inc.( 蜀ICP备2024104722号 )