日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot接入支付寶支付的方法步驟

瀏覽:177日期:2022-06-16 14:18:11

支付寶今年推出了新的轉賬接口alipay.fund.trans.uni.transfer(升級后安全性更高,功能更加強大) ,老轉賬接口alipay.fund.trans.toaccount.transfer將不再維護,新老接口的一個區別就是新接口采用的證書驗簽方式。使用新接口要將sdk版本升級到最新版本,博主升級時最新版本是4.10.97。接下來看集成步驟

1.將支付寶開放平臺里下載的3個證書放在resources下面

SpringBoot接入支付寶支付的方法步驟

2.寫支付寶支付的配置文件

alipay.properties

alipay.appId=你的應用idalipay.serverUrl=https://openapi.alipay.com/gateway.doalipay.privateKey=你的應用私鑰alipay.format=jsonalipay.charset=UTF-8alipay.signType=RSA2alipay.appCertPath=/cert/appCertPublicKey_2021001164652941.crtalipay.alipayCertPath=/cert/alipayCertPublicKey_RSA2.crtalipay.alipayRootCertPath=/cert/alipayRootCert.crt3.引入pom依賴

<dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.10.97.ALL</version></dependency>4.將配置信息注入AliPayBean

import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.PropertySource;import org.springframework.stereotype.Component; @Component@PropertySource('classpath:/production/alipay.properties')@ConfigurationProperties(prefix = 'alipay')@Datapublic class AliPayBean { private String appId; private String privateKey; private String publicKey; private String serverUrl; private String domain; private String format; private String charset; private String signType; private String appCertPath; private String alipayCertPath; private String alipayRootCertPath; }5.寫配置類

import com.alipay.api.AlipayClient;import com.alipay.api.CertAlipayRequest;import com.alipay.api.DefaultAlipayClient;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.util.FileCopyUtils; import java.io.InputStream; @Configurationpublic class AliConfig { @Value('${custom.http.proxyHost}') private String proxyHost; @Value('${custom.http.proxyPort}') private int proxyPort; @Value('${spring.profiles.active}') private String activeEnv; @Autowired private AliPayBean aliPayBean; @Bean(name = {'alipayClient'}) public AlipayClient alipayClientService() throws Exception{ CertAlipayRequest certAlipayRequest = new CertAlipayRequest(); //設置網關地址 certAlipayRequest.setServerUrl(aliPayBean.getServerUrl()); //設置應用Id certAlipayRequest.setAppId(aliPayBean.getAppId()); //設置應用私鑰 certAlipayRequest.setPrivateKey(aliPayBean.getPrivateKey()); //設置請求格式,固定值json certAlipayRequest.setFormat(aliPayBean.getFormat()); //設置字符集 certAlipayRequest.setCharset(aliPayBean.getCharset()); //設置簽名類型 certAlipayRequest.setSignType(aliPayBean.getSignType()); //如果是生產環境或者預演環境,則使用代理模式 if ('prod'.equals(activeEnv) || 'stage'.equals(activeEnv) || 'test'.equals(activeEnv)) { //設置應用公鑰證書路徑 certAlipayRequest.setCertContent(getCertContentByPath(aliPayBean.getAppCertPath())); //設置支付寶公鑰證書路徑 certAlipayRequest.setAlipayPublicCertContent(getCertContentByPath(aliPayBean.getAlipayCertPath())); //設置支付寶根證書路徑 certAlipayRequest.setRootCertContent(getCertContentByPath(aliPayBean.getAlipayRootCertPath())); certAlipayRequest.setProxyHost(proxyHost); certAlipayRequest.setProxyPort(proxyPort); }else { //local String serverPath = this.getClass().getResource('/').getPath(); //設置應用公鑰證書路徑 certAlipayRequest.setCertPath(serverPath+aliPayBean.getAppCertPath()); //設置支付寶公鑰證書路徑 certAlipayRequest.setAlipayPublicCertPath(serverPath+aliPayBean.getAlipayCertPath()); //設置支付寶根證書路徑 certAlipayRequest.setRootCertPath(serverPath+aliPayBean.getAlipayRootCertPath()); } return new DefaultAlipayClient(certAlipayRequest); } public String getCertContentByPath(String name){ InputStream inputStream = null; String content = null; try{ inputStream = this.getClass().getClassLoader().getResourceAsStream(name); content = new String(FileCopyUtils.copyToByteArray(inputStream)); }catch (Exception e){ e.printStackTrace(); } return content; } }6.寫支付工具類

import com.alipay.api.AlipayApiException;import com.alipay.api.AlipayClient;import com.alipay.api.domain.AlipayTradeAppPayModel;import com.alipay.api.domain.AlipayTradeQueryModel;import com.alipay.api.request.AlipayTradeAppPayRequest;import com.alipay.api.request.AlipayTradeQueryRequest;import com.alipay.api.response.AlipayTradeAppPayResponse;import com.alipay.api.response.AlipayTradeQueryResponse;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Service;/** * @description:支付寶工具類 * @Date:2020-08-26 */@Slf4j@Servicepublic class AliPayUtils { @Autowired @Qualifier('alipayClient') private AlipayClient alipayClient; /** * 交易查詢接口 * @param request * @return * @throws Exception */ public boolean isTradeQuery(AlipayTradeQueryModel model) throws AlipayApiException { AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); request.setBizModel(model); AlipayTradeQueryResponse alipayTradeQueryResponse = alipayClient.certificateExecute(request); if(alipayTradeQueryResponse.isSuccess()){ return true; } else { return false; } } /** * app支付 * @param model * @param notifyUrl * @return * @throws AlipayApiException */ public String startAppPay(AlipayTradeAppPayModel model, String notifyUrl) throws AlipayApiException { AlipayTradeAppPayRequest aliPayRequest = new AlipayTradeAppPayRequest(); model.setProductCode('QUICK_MSECURITY_PAY'); aliPayRequest.setNotifyUrl(notifyUrl); aliPayRequest.setBizModel(model); // 這里和普通的接口調用不同,使用的是sdkExecute AlipayTradeAppPayResponse aliResponse = alipayClient.sdkExecute(aliPayRequest); return aliResponse.getBody(); } /** * 轉賬接口 * * @param transferParams * @return AlipayFundTransToaccountTransferResponse */ public AlipayFundTransUniTransferResponse doTransferNew(TransferParams transferParams) throws Exception { String title = (StringUtils.isNotBlank(transferParams.getRemark()) ? transferParams .getRemark() : '轉賬'); //轉賬請求入參 AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest(); //轉賬參數 BizContentForUniTransfer bizContent = new BizContentForUniTransfer(); bizContent.setOut_biz_no(transferParams.getOutBizNo()); bizContent.setTrans_amount(MathUtil.changeF2Y(Math.abs(Integer.parseInt(transferParams.getAmount())))); bizContent.setProduct_code('TRANS_ACCOUNT_NO_PWD'); bizContent.setBiz_scene('DIRECT_TRANSFER'); bizContent.setOrder_title(title); Participant participant = new Participant(); participant.setIdentity(transferParams.getPayeeAccount()); participant.setIdentity_type(transferParams.getPayeeType()); participant.setName((StringUtils.isNotBlank(transferParams.getPayeeRealName()) ? transferParams .getPayeeRealName() : StringUtils.EMPTY)); bizContent.setPayee_info(participant); bizContent.setRemark(title); request.setBizContent(JSON.toJSONString(bizContent)); //轉賬請求返回 AlipayFundTransUniTransferResponse response = null; try { response = alipayClient.certificateExecute(request); } catch (Exception e) { log.info('doTransfer exception,異常信息:{}', e.toString()); log.info('doTransfer exception,支付寶返回信息:{}', JSONObject.toJSONString(response)); } log.info('doTransfer,AlipayFundTransUniTransferResponse:{}', JSONObject.toJSONString(response)); return response; }}Tips:轉賬用到的類

@Datapublic class TransferParams { /** * 應用編號 */ private Long appId; /** * 創建人id */ private Long createdBy; /** * 轉賬業務訂單號 */ private String outBizNo; /** * 收款方識別方式 */ private String payeeType; /** * 收款方賬號,可以是支付寶userId或者支付寶loginId */ private String payeeAccount; /** * 轉賬金額,單位分 */ private String amount; /** * 付款方名稱 */ private String payerShowName; /** * 收款方名稱 */ private String payeeRealName; /** * 備注 */ private String remark; /** * 支付寶轉賬流水號 */ private String orderId;}

import lombok.Data; import java.math.BigDecimal; /** * 支付寶轉賬參數 */@Datapublic class BizContentForUniTransfer { /** * 業務訂單號 */ private String out_biz_no; /** * 訂單總金額,單位為元,精確到小數點后兩位, */ private BigDecimal trans_amount; /** * 業務產品碼, * 單筆無密轉賬到支付寶賬戶固定為:TRANS_ACCOUNT_NO_PWD; * 單筆無密轉賬到銀行卡固定為:TRANS_BANKCARD_NO_PWD; * 收發現金紅包固定為:STD_RED_PACKET; */ private String product_code; /** * 描述特定的業務場景,可傳的參數如下: * DIRECT_TRANSFER:單筆無密轉賬到支付寶/銀行卡, B2C現金紅包; * PERSONAL_COLLECTION:C2C現金紅包-領紅包 */ private String biz_scene; /** * 轉賬業務的標題,用于在支付寶用戶的賬單里顯示 */ private String order_title; /** * 原支付寶業務單號。C2C現金紅包-紅包領取時,傳紅包支付時返回的支付寶單號; * B2C現金紅包、單筆無密轉賬到支付寶/銀行卡不需要該參數。 */ private String original_order_id; /** * 業務備注 */ private String remark; /** * 轉賬業務請求的擴展參數,支持傳入的擴展參數如下: * 1、sub_biz_scene 子業務場景,紅包業務必傳,取值REDPACKET,C2C現金紅包、B2C現金紅包均需傳入; * 2、withdraw_timeliness為轉賬到銀行卡的預期到賬時間,可選(不傳入則默認為T1), * 取值T0表示預期T+0到賬,取值T1表示預期T+1到賬,因到賬時效受銀行機構處理影響,支付寶無法保證一定是T0或者T1到賬; */ private String business_params; /** * 支付收款對象 */ private Participant payee_info;}

@Datapublic class Participant { /** * 參與方的唯一標識 */ private String identity; /** * 參與方的標識類型,目前支持如下類型: * 1、ALIPAY_USER_ID 支付寶的會員ID * 2、ALIPAY_LOGON_ID:支付寶登錄號,支持郵箱和手機號格式 */ private String identity_type; /** * 參與方真實姓名,如果非空,將校驗收款支付寶賬號姓名一致性。 * 當identity_type=ALIPAY_LOGON_ID時,本字段必填。 */ private String name;}

到此這篇關于SpringBoot接入支付寶支付的方法步驟的文章就介紹到這了,更多相關SpringBoot 支付寶支付內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: 支付寶
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久成人精品| 亚洲欧美伊人| 成人久久久久| 欧美丰满日韩| 欧美特黄一级大片| 日本欧美在线看| 亚洲精品国产精品粉嫩| 国产日韩一区二区三区在线| 日本精品国产| 国产精品久久久久av蜜臀| 国产精品一区二区av日韩在线| 国产伦乱精品| 日韩成人免费| 欧美性感美女一区二区| 影音先锋久久精品| 麻豆精品在线视频| 日本国产精品| 日韩高清中文字幕一区| 久久精品国内一区二区三区| 久久精品亚洲人成影院 | 日韩不卡免费高清视频| 亚洲免费精品| 精品九九在线| 日韩精品免费视频人成 | 国产香蕉精品| 欧美日韩第一| 精品亚洲免a| 亚洲色图综合| 99久久www免费| 国产毛片一区二区三区| 免费av一区| 国产精品v日韩精品v欧美精品网站 | 久久99国产精品视频| 天堂成人免费av电影一区| 91精品国产自产在线观看永久∴ | 国产综合精品一区| 精品国产一区二| 日韩在线视频精品| 国产精品99一区二区三| 日韩激情中文字幕| 伊人久久婷婷| 99精品国产一区二区三区| 久久久精品国产**网站| 国产欧美日韩一区二区三区四区| 中文字幕一区二区三区四区久久 | aa国产精品| 精品一区在线| 午夜精品一区二区三区国产| 99久久夜色精品国产亚洲狼 | 国产欧美日韩精品一区二区三区| 亚洲tv在线| 久久国内精品| 国产精品调教| 欧美aⅴ一区二区三区视频| 久久国产精品美女| 精品国产亚洲一区二区在线观看| 卡一卡二国产精品| 亚洲va中文在线播放免费| 色吊丝一区二区| 免费精品视频| 91av一区| 亚洲综合电影| 好看的亚洲午夜视频在线| 免费国产亚洲视频| 国产图片一区| 欧美日韩精品在线一区| 日韩影院精彩在线| 日本色综合中文字幕| 久久精品国产精品亚洲毛片| 久久久国产精品一区二区中文| 久久夜色精品| 红杏一区二区三区| 亚洲欧美日韩视频二区| 国产亚洲电影| 99久久久久国产精品| 日本在线视频一区二区| 国产成人77亚洲精品www| 91精品精品| 日本中文字幕视频一区| 久久电影tv| 欧美一区91| 亚洲精品在线观看91| 欧美成人aaa| 在线免费观看亚洲| 日韩综合精品| 国产精品网在线观看| 亚洲一区中文| 欧美国产偷国产精品三区| 欧美一区网站| 蜜桃一区二区三区在线| 美女网站一区| 精品一区二区三区的国产在线观看 | 免费成人网www| 久久亚洲道色| 麻豆精品少妇| 国产精品蜜月aⅴ在线| 亚洲免费观看高清完整版在线观| 成人羞羞视频在线看网址| 久久99久久久精品欧美| 综合激情一区| 9色国产精品| 九一成人免费视频| 亚洲成人二区| 91精品一区二区三区综合| 精品中国亚洲| 精品久久久久久久| 精品久久久久中文字幕小说| 欧美一区在线观看视频| 亚洲日本在线观看视频| 亚洲精品激情| 91国内精品| 久久超碰99| av免费不卡国产观看| 日本在线高清| 五月天综合网站| 奶水喷射视频一区| 亚洲欧美网站在线观看| 四虎在线精品| 国产色噜噜噜91在线精品| 国产欧美一区二区色老头| 国产欧美一区二区三区米奇 | 亚洲一区区二区| 亚洲日本久久| 国产精品777777在线播放| 色综合狠狠操| 91精品高清| 日韩在线麻豆| 国产欧美日韩视频在线 | 日韩精彩视频在线观看| 国产精品三p一区二区| 久久影院资源站| 深夜视频一区二区| 玖玖精品视频| 国产精品黄色片| 中文字幕系列一区| 亚洲精品少妇| 日韩成人精品一区二区| 伊人久久亚洲美女图片| 国产精品亚洲片在线播放| av一区二区高清| 欧美亚洲人成在线| 精品中文字幕一区二区三区av| 日本v片在线高清不卡在线观看| 久久精品亚洲| 亚洲视频二区| 日韩三区免费| 久久国产精品免费精品3p| 欧美a级一区| 精品日韩在线| 日韩精品视频一区二区三区| 99久久久久国产精品| 国产香蕉精品| 亚洲一区日韩| 99久精品视频在线观看视频| 你懂的国产精品| 亚洲另类黄色| 99国产精品久久久久久久| 久久精品国产福利| 日本va欧美va精品发布| 伊人影院久久| 丝袜美腿诱惑一区二区三区 | 日韩专区在线视频| 视频一区中文| 日韩一区自拍| 精品三级国产| 国产一区二区三区视频在线| 日本不卡不码高清免费观看| 久久亚洲欧洲| 黄色精品网站| 香蕉久久久久久久av网站| 久久在线视频免费观看| 麻豆视频在线看| 欧美激情另类| 国产伊人久久| 黑森林国产精品av| 日本久久精品| 97精品在线| 蜜桃精品在线| 欧美亚洲国产精品久久| 欧美日韩四区| 亚洲久草在线| 91嫩草精品| 免费一级欧美在线观看视频| 久久wwww| 亚洲精品**中文毛片| 天堂日韩电影| 九一成人免费视频| 亚洲综合小说| 久久不卡日韩美女| 日韩在线不卡| 午夜在线视频观看日韩17c| 蜜桃视频第一区免费观看| 日本麻豆一区二区三区视频| 国产精品久一| 91精品久久久久久久久久不卡| 99riav国产精品| 欧美日韩午夜| 久久久精品五月天| 中文字幕成人| 国产在线看片免费视频在线观看|