<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      支付寶企業轉賬到支付寶賬戶

      準備工作

      1. 注冊企業支付寶,企業認證
      2. 產品中心(支付寶商家平臺)->簽約轉賬到支付寶賬戶
      3. 創建應用(支付寶開放平臺)默認簽約會有一個應用

      相關網站

      注意事項

      • 創建的支付寶應用需要綁定對應的產品才可以使用
      • 應用需要上線審核通過接口才可以調用
      • 接口加簽方式必須使用證書方式
      • 轉賬需要賬號和實名認證姓名一致

      代碼示例

      阿里SDK

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

      單例模式工具類

      本示例所有證書都放在resource/certs目錄下載加載,方便遷移,如果放在其他路徑,項目遷移每次都需手動上傳服務器。

      import com.alipay.api.AlipayApiException;
      import com.alipay.api.AlipayClient;
      import com.alipay.api.AlipayConfig;
      import com.alipay.api.DefaultAlipayClient;
      import com.alipay.api.domain.AlipayFundTransUniTransferModel;
      import com.alipay.api.domain.Participant;
      import com.alipay.api.internal.util.file.FileUtils;
      import com.alipay.api.request.AlipayFundTransUniTransferRequest;
      import com.alipay.api.response.AlipayFundTransUniTransferResponse;
      import lombok.extern.slf4j.Slf4j;
      import org.springframework.core.io.ClassPathResource;
      
      import java.io.*;
      import java.nio.charset.Charset;
      import java.nio.charset.StandardCharsets;
      
      /**
       * @description:
       * @author: Mr.Fang
       * @create: 2023-9-8 
       **/
      @Slf4j
      public class AlipayUtil {
      
          private String URL = "https://openapi.alipay.com/gateway.do";
          private String APPID = "應用APPID";
          private String app_private_key = "certs/appPrivate.txt";
          private String CHARSET = "UTF8";
          private String FORMAT = "json";
          private String SIGN_TYPE = "RSA2";
          private String app_cert_path = "certs/appCertPublicKey.crt";
          private String alipay_cert_path = "certs/alipayCertPublicKey_RSA2.crt";
          private String alipay_root_cert_path = "certs/alipayRootCert.crt";
          private AlipayConfig alipayConfig;
          private static AlipayUtil instance;
      
          // 無慘構造,默認加載支付寶配置信息
          private AlipayUtil() throws IOException {
              alipayConfig = new AlipayConfig();
              //設置網關地址
              alipayConfig.setServerUrl(URL);
              //設置應用ID
              alipayConfig.setAppId(APPID);
              //設置應用私鑰
              alipayConfig.setPrivateKey(readToString(new ClassPathResource(app_private_key).getInputStream()));
      
              //設置請求格式,固定值json
              alipayConfig.setFormat(FORMAT);
              //設置字符集
              alipayConfig.setCharset(CHARSET);
              //設置簽名類型
              alipayConfig.setSignType(SIGN_TYPE);
              //設置應用公鑰證書路徑
              alipayConfig.setAppCertContent(readToString(new ClassPathResource(app_cert_path).getInputStream()));
              //設置支付寶公鑰證書路徑
              alipayConfig.setAlipayPublicCertContent(readToString(new ClassPathResource(alipay_cert_path).getInputStream()));
              //設置支付寶根證書路徑
              alipayConfig.setRootCertContent(readToString(new ClassPathResource(alipay_root_cert_path).getInputStream()));
          }
      
          /**
           * 讀取 resource 文件
           *
           * @param inputStream
           * @return
           */
          private String readToString(InputStream inputStream) {
              try {
                  DataInputStream dataInputStream = new DataInputStream(inputStream);
                  ByteArrayOutputStream output = new ByteArrayOutputStream();
                  byte[] buffer = new byte[1024];
                  int length;
                  while ((length = dataInputStream.read(buffer)) > 0) {
                      output.write(buffer, 0, length);
                  }
                  return output.toString();
              } catch (IOException e) {
                  e.printStackTrace();
              }
              return null;
          }
      
          public static AlipayUtil getInstance() throws IOException {
              if (instance == null) {
                  synchronized (AlipayUtil.class) {
                      if (instance == null) {
                          instance = new AlipayUtil();
                      }
                  }
              }
              return instance;
          }
      
          /**
           * description: 支付寶企業轉賬到個人
           * create by: Mr.Fang
           *
           * @param bizNo    訂單編號
           * @param amount   金額
           * @param title    轉賬說明
           * @param identity 支付寶手機號或郵箱
           * @param name     支付寶真實姓名
           * @return: Result<java.lang.String>
           * @date: 2023/9/8 
           */
          public Result<String> transfer(String bizNo, String amount, String title, String identity, String name) throws AlipayApiException {
              AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
              AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
              AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel();
      
              model.setOutBizNo(bizNo); // 訂單編號
              model.setTransAmount(amount); // 金額
              model.setBizScene("DIRECT_TRANSFER");
              model.setProductCode("TRANS_ACCOUNT_NO_PWD");
              model.setOrderTitle(title); // 訂單標題
      
              Participant payeeInfo = new Participant();
              payeeInfo.setIdentity(identity); // 用戶支付寶賬戶
              payeeInfo.setIdentityType("ALIPAY_LOGON_ID"); // 固定值
              payeeInfo.setName(name); // 用戶真實姓名
      
              model.setPayeeInfo(payeeInfo);
              request.setBizModel(model);
              AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);
              log.info("轉賬響應結果:{}", response.getBody());
              if (response.isSuccess()) {
                  return Result.OK("轉賬成功", response.getBody());
              }
              return Result.error("轉賬失敗", response.getBody());
          }
      }
      
      

      resource目錄擴展

      • springboot 打包jar文件后通過ClassPathResource 對象可以獲取到文件,但是文件路徑是無法使用的。
      • 阿里提供的AlipayConfig 對象支持配置證書相關參數有兩種方式:第一種證書內容,第二種文件路徑。
      • 通過ClassPathResource 拿到文件對象,readToString方法讀取文件內容配置證書內容信息。

      AlipayConfig 部分代碼

      public void setRootCertPath(String rootCertPath) {
          this.rootCertPath = rootCertPath;
      }
      ……………………省略
      public void setRootCertContent(String rootCertContent) {
          this.rootCertContent = rootCertContent;
      }
      
      posted @ 2023-09-08 16:59  天葬  閱讀(154)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产日韩久久免费影院| 欧美综合区自拍亚洲综合绿色| 亚洲欧美日韩成人一区| 亚洲日韩性欧美中文字幕| 国产精品午夜精品福利| 亚洲欧洲日韩国内高清| 国产精品综合av一区二区| 靖远县| 国产成人免费观看在线视频| 亚洲国产精品色一区二区| 亚洲老熟女一区二区三区| 91精品91久久久久久| 中文字幕亚洲精品人妻| 国产精品人成视频免费播放| 日韩久久久久久中文人妻| 一本加勒比hezyo无码人妻| 人妻教师痴汉电车波多野结衣| 中文字幕人妻熟女人妻a片| 国产午夜精品理论大片| 日区中文字幕一区二区| 陕西省| 非会员区试看120秒6次| 在线一区二区中文字幕| 午夜国产小视频| 国产精品高清一区二区三区不卡| 国产午夜一区二区在线观看| 久久精品国产99国产精品澳门| 蜜臀av久久国产午夜福利软件| 伊人久久大香线蕉综合5g| 国产亚洲精品AA片在线播放天| 69精品丰满人妻无码视频a片| 国产精品老熟女乱一区二区| 日韩无码视频网站| 日本久久久久久久做爰片日本| 亚洲嫩模一区二区三区| 亚洲夂夂婷婷色拍ww47| 亚洲AV国产福利精品在现观看| 日韩国产亚洲一区二区三区| 日韩亚洲精品国产第二页| 亚洲第一国产综合| 婷婷色综合视频在线观看|