大連百度代理seo推廣優(yōu)化多少錢
?
目錄
前言:
支付寶支付:
創(chuàng)建AlipayClient對(duì)象(注意,這里的appId、私鑰、公鑰等信息需要根據(jù)實(shí)際情況進(jìn)行替換):
構(gòu)造AlipayTradePagePayRequest對(duì)象,設(shè)置訂單信息等參數(shù):
調(diào)用AlipayClient對(duì)象的pageExecute方法,獲取支付寶支付頁面:
實(shí)際情況下,需要根據(jù)具體業(yè)務(wù)需求進(jìn)行相應(yīng)的修改和優(yōu)化。
詳細(xì)過程:
導(dǎo)入支付寶SDK(如alipay-sdk-java),添加依賴。
編寫調(diào)用支付寶接口的代碼。
然后,構(gòu)造AlipayTradePagePayRequest對(duì)象,
設(shè)置訂單信息等參數(shù)。其中,out_trade_no是商戶網(wǎng)站訂單號(hào),total_amount是訂單總金額,subject是訂單標(biāo)題,body是訂單描述
最后,調(diào)用AlipayClient對(duì)象的pageExecute方法,獲取支付寶支付頁面。
完整的支付寶支付接口調(diào)用代碼如下:
配置支付寶支付回調(diào)接口。
描述:
前言:
? ? 就是記錄一下一些內(nèi)容 如果對(duì)你有幫助 就更好了 謝謝
支付寶支付:
以下是使用Java實(shí)現(xiàn)支付寶支付的基本流程:
在支付寶開發(fā)平臺(tái)注冊(cè)賬號(hào),創(chuàng)建應(yīng)用,獲取應(yīng)用的appId、私鑰、公鑰等信息。
導(dǎo)入支付寶SDK(如alipay-sdk-java),添加依賴。
編寫調(diào)用支付寶接口的代碼。
配置支付寶支付回調(diào)接口。
在商戶網(wǎng)站生成訂單,調(diào)用支付寶支付接口進(jìn)行支付。
接收支付寶支付結(jié)果回調(diào),驗(yàn)證簽名等信息,更新訂單狀態(tài)。
創(chuàng)建AlipayClient對(duì)象(注意,這里的appId、私鑰、公鑰等信息需要根據(jù)實(shí)際情況進(jìn)行替換):
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","應(yīng)用的appId","應(yīng)用的私鑰","json","UTF-8","應(yīng)用的公鑰","RSA2"
);
構(gòu)造AlipayTradePagePayRequest對(duì)象,設(shè)置訂單信息等參數(shù):
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
alipayRequest.setReturnUrl("http://www.xxx.com/return.jsp");
alipayRequest.setNotifyUrl("http://www.xxx.com/notify.jsp");
alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\","+ "\"total_amount\":\"" + total_amount + "\","+ "\"subject\":\"" + subject + "\","+ "\"body\":\"" + body + "\","+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
調(diào)用AlipayClient對(duì)象的pageExecute方法,獲取支付寶支付頁面:
String result = alipayClient.pageExecute(alipayRequest).getBody();
-
在商戶網(wǎng)站生成訂單,調(diào)用支付寶支付接口進(jìn)行支付。
-
配置支付寶支付回調(diào)接口,接收支付寶支付結(jié)果回調(diào)。在回調(diào)接口中,驗(yàn)證簽名等信息,更新訂單狀態(tài)。以下是一個(gè)簡單的回調(diào)接口示例:
@RequestMapping("/notify")
public String notify(HttpServletRequest request) {Map<String, String> params = new HashMap<String, String>();Map<String, String[]> requestParams = request.getParameterMap();for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {String name = iter.next();String[] values = requestParams.get(name);StringBuilder valueStr = new StringBuilder();for (int i = 0; i < values.length; i++) {valueStr.append(values[i]);if (i < values.length - 1) {valueStr.append(",");}}params.put(name, valueStr.toString());}boolean signVerified = false;try {signVerified = AlipaySignature.rsaCheckV1(params, "應(yīng)用的公鑰", "UTF-8", "RSA2");} catch (AlipayApiException e) {e.printStackTrace();}if (signVerified) {String out_trade_no = request.getParameter("out_trade_no");String trade_no = request.getParameter("trade_no");String trade_status = request.getParameter("trade_status");// 更新訂單狀態(tài)等操作return "success";} else {return "fail";}
}
實(shí)際情況下,需要根據(jù)具體業(yè)務(wù)需求進(jìn)行相應(yīng)的修改和優(yōu)化。
依賴:
<dependency>
? ? <groupId>com.alipay.sdk</groupId>
? ? <artifactId>alipay-sdk-java</artifactId>
? ? <version>4.13.61.ALL</version>
</dependency>
?在Gradle項(xiàng)目中,可以在build.gradle文件中添加以下依賴:
implementation 'com.alipay.sdk:alipay-sdk-java:4.13.61.ALL'
詳細(xì)過程:
-
在支付寶開發(fā)平臺(tái)注冊(cè)賬號(hào),創(chuàng)建應(yīng)用,獲取應(yīng)用的appId、私鑰、公鑰等信息。
在支付寶開發(fā)平臺(tái)注冊(cè)賬號(hào)(https://open.alipay.com/platform/home.htm),進(jìn)入開發(fā)者中心,創(chuàng)建應(yīng)用,會(huì)得到一個(gè)AppID、開發(fā)者私鑰和支付寶公鑰。其中開發(fā)者私鑰需要妥善保管,用于生成簽名。支付寶公鑰需要填寫在支付寶開發(fā)平臺(tái)中的應(yīng)用配置中,用于驗(yàn)證簽名。
-
導(dǎo)入支付寶SDK(如alipay-sdk-java),添加依賴。
在Maven項(xiàng)目中,可以在pom.xml文件中添加以下依賴:
<dependency>
? ? <groupId>com.alipay.sdk</groupId>
? ? <artifactId>alipay-sdk-java</artifactId>
? ? <version>4.13.61.ALL</version>
</dependency>
?
編寫調(diào)用支付寶接口的代碼。
首先,創(chuàng)建AlipayClient對(duì)象,該對(duì)象是調(diào)用支付寶接口的入口。
AlipayClient alipayClient = new DefaultAlipayClient(
? ? "https://openapi.alipay.com/gateway.do",
? ? "應(yīng)用的appId",
? ? "應(yīng)用的私鑰",
? ? "json",
? ? "UTF-8",
? ? "應(yīng)用的公鑰",
? ? "RSA2"
);
?
然后,構(gòu)造AlipayTradePagePayRequest對(duì)象,
設(shè)置訂單信息等參數(shù)。其中,out_trade_no是商戶網(wǎng)站訂單號(hào),total_amount是訂單總金額,subject是訂單標(biāo)題,body是訂單描述
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
alipayRequest.setReturnUrl("http://www.xxx.com/return.jsp");
alipayRequest.setNotifyUrl("http://www.xxx.com/notify.jsp");
alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\","
? ? ? ? + "\"total_amount\":\"" + total_amount + "\","
? ? ? ? + "\"subject\":\"" + subject + "\","
? ? ? ? + "\"body\":\"" + body + "\","
? ? ? ? + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
?
最后,調(diào)用AlipayClient對(duì)象的pageExecute方法,獲取支付寶支付頁面。
String result = alipayClient.pageExecute(alipayRequest).getBody();
完整的支付寶支付接口調(diào)用代碼如下:
public String alipay(String out_trade_no, String total_amount, String subject, String body) throws AlipayApiException {AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","應(yīng)用的appId","應(yīng)用的私鑰","json","UTF-8","應(yīng)用的公鑰","RSA2");AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();alipayRequest.setReturnUrl("http://www.xxx.com/return.jsp");alipayRequest.setNotifyUrl("http://www.xxx.com/notify.jsp");alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\","+ "\"total_amount\":\"" + total_amount + "\","+ "\"subject\":\"" + subject + "\","+ "\"body\":\"" + body + "\","+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");String result = alipayClient.pageExecute(alipayRequest).getBody();return result; }
配置支付寶支付回調(diào)接口。
支付寶支付回調(diào)接口是支付寶支付結(jié)果的通知方式,需要在商戶網(wǎng)站中配置。配置過程如下:
-
在商戶網(wǎng)站中配置支付寶支付回調(diào)接口URL,并將該URL提交給支付寶開放平臺(tái)審核。
-
支付寶審核通過后,商戶網(wǎng)站需要驗(yàn)證支付寶回調(diào)請(qǐng)求的合法性,主要包括以下步驟:
-
將支付寶回調(diào)請(qǐng)求中的所有參數(shù)取出,按照參數(shù)名的字母順序排序,然后用&符號(hào)連接。
-
將上述連接字符串和商戶網(wǎng)站的支付寶公鑰一起使用RSA算法(SHA1withRSA或SHA256withRSA)進(jìn)行簽名驗(yàn)證。
-
對(duì)于RSA算法中的簽名驗(yàn)證,可以使用alipay-sdk-java提供的AlipaySignature類進(jìn)行實(shí)現(xiàn)。代碼示例如下:
?
boolean signVerified = false;
try {
? ? signVerified = AlipaySignature.rsaCheckV1(params, "應(yīng)用的公鑰", "UTF-8", "RSA2");
} catch (AlipayApiException e) {
? ? e.printStackTrace();
}
?
-
如果驗(yàn)證通過,需要獲取支付寶回調(diào)請(qǐng)求中的訂單信息以及支付狀態(tài)等參數(shù),并進(jìn)行訂單狀態(tài)更新等操作。如果驗(yàn)證未通過,則直接返回失敗結(jié)果。
-
回調(diào)接口代碼示例如下:
@RequestMapping("/notify")
public String notify(HttpServletRequest request) {
? ? Map<String, String> params = new HashMap<String, String>();
? ? Map<String, String[]> requestParams = request.getParameterMap();
? ? for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
? ? ? ? String name = iter.next();
? ? ? ? String[] values = requestParams.get(name);
? ? ? ? StringBuilder valueStr = new StringBuilder();
? ? ? ? for (int i = 0; i < values.length; i++) {
? ? ? ? ? ? valueStr.append(values[i]);
? ? ? ? ? ? if (i < values.length - 1) {
? ? ? ? ? ? ? ? valueStr.append(",");
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? params.put(name, valueStr.toString());
? ? }
? ? boolean signVerified = false;
? ? try {
? ? ? ? signVerified = AlipaySignature.rsaCheckV1(params, "應(yīng)用的公鑰", "UTF-8", "RSA2");
? ? } catch (AlipayApiException e) {
? ? ? ? e.printStackTrace();
? ? }
? ? if (signVerified) {
? ? ? ? String out_trade_no = request.getParameter("out_trade_no");
? ? ? ? String trade_no = request.getParameter("trade_no");
? ? ? ? String trade_status = request.getParameter("trade_status");
? ? ? ? // 更新訂單狀態(tài)等操作
? ? ? ? return "success";
? ? } else {
? ? ? ? return "fail";
? ? }
}
?
描述:
- 在商戶網(wǎng)站生成訂單,調(diào)用支付寶支付接口進(jìn)行支付。
- 在商戶網(wǎng)站上,生成訂單并調(diào)用支付寶支付接口進(jìn)行支付。一般來說,會(huì)在商戶網(wǎng)站的前端頁面上顯示支付寶支付按鈕,用戶點(diǎn)擊按鈕后會(huì)跳轉(zhuǎn)到支付寶支付頁面,進(jìn)行支付操作。支付寶支付頁面的展示是由支付寶完成的,商戶網(wǎng)站只需要提供支付鏈接即可。
- 接收支付寶支付結(jié)果回調(diào),驗(yàn)證簽名等信息,更新訂單狀態(tài)。
- 商戶網(wǎng)站需要在回調(diào)接口中,接收支付寶支付結(jié)果回調(diào)。在回調(diào)接口中,驗(yàn)證簽名等信息,更新訂單狀態(tài)。如果支付寶支付結(jié)果為成功,商戶網(wǎng)站需要將訂單狀態(tài)更新為已支付。如果支付寶支付結(jié)果為失敗,商戶網(wǎng)站需要根據(jù)實(shí)際情況進(jìn)行處理,例如將訂單狀態(tài)更新為支付失敗,或者重新生成新的訂單等。