如何用struts調(diào)用支付寶接口
一、ACTION類關(guān)鍵代碼 沒(méi)用的包可以干掉
package com.hzdracom.alipay.action;
import it.sauronsoftware.base64.Base64;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.dom4j.Document;
import org.springframework.stereotype.Controller;
import com.alibaba.fastjson.JSON;
import com.hzdracom.action.BaseAction;
import com.hzdracom.config.AlipayConfig;
import com.hzdracom.util.AlipaySubmit;
import com.hzdracom.util.HTTPService;
import com.hzdracom.util.UtilDate;
import com.hzlq.source.security.DESUtil;
/*
* 支付寶付款接口
* @author ZhuangZi
* @Directions
* @version $Id: AliPayAction.java,v 0.1 2013-3-27 下午04:49:57 ZhuangZi Exp $
*/
@Controller
public class AliPayAction extends BaseAction {
private String phoneCode;
private String totalfee;
/**
* 調(diào)用支付寶接口
* @author ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @method AliPay
* @Directions 調(diào)用支付寶接口
* @date 2013-3-27下午04:53:35 void
*/
public void pay() {
try {
/*1****生成支付寶交易號(hào),根據(jù)時(shí)間到毫秒級(jí)別*/
String out_trade_no = UtilDate.getOrderNum() ;
/*2*****↓↓↓↓↓↓↓↓↓↓把請(qǐng)求參數(shù)打包成數(shù)組↓↓↓↓↓↓↓↓↓↓*/
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp = getPayPrama(totalfee, out_trade_no);
/*3*****↓↓↓↓↓↓↓↓↓↓請(qǐng)求支付寶接口↓↓↓↓↓↓↓↓↓↓*/
String json = AlipaySubmit.buildRequest(sParaTemp, "get", "確認(rèn)");
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out;
out = response.getWriter();
json = JSON.toJSONString(json);
out.write(json);
out.flush();
out.close();
} catch (IOException e) {
}
}
/**
*
* @author ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @method GetPayPrama
* @Directions 封裝調(diào)用支付寶參數(shù)
* @date 2013-4-1下午05:26:11
* @param totalfee 金額
* @param out_trade_no 訂單編號(hào)
* @return Map<String,String>
*/
public Map<String, String> getPayPrama(String totalfee, String out_trade_no) {
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp.put("service", "create_direct_pay_by_user");
sParaTemp.put("partner", AlipayConfig.partner);
sParaTemp.put("_input_charset", AlipayConfig.input_charset);
sParaTemp.put("payment_type", AlipayConfig.payment_type);
/*服務(wù)器異步通知頁(yè)面路徑//需http://格式的完整路徑,不能加?id=123這類自定義參數(shù)*/
sParaTemp.put("notify_url", AlipayConfig.notify_url);
/*頁(yè)面跳轉(zhuǎn)同步通知頁(yè)面路徑 //需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),不能寫(xiě)成http://localhost/*/
sParaTemp.put("return_url", AlipayConfig.return_url);
/*賣家支付寶帳戶*/
sParaTemp.put("seller_email", AlipayConfig.seller_email);
/*商戶訂單號(hào)*/
sParaTemp.put("out_trade_no", out_trade_no);
/*訂單名稱*/
sParaTemp.put("subject", AlipayConfig.subject);
/*付款金額*/
sParaTemp.put("total_fee", totalfee);
/*訂單描述*/
sParaTemp.put("body", AlipayConfig.body);
/*需以http://開(kāi)頭的完整路徑,例如:http://www.xxx.com/myorder.html*/
sParaTemp.put("show_url", AlipayConfig.show_url);
//防釣魚(yú)時(shí)間戳
sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key);
/*客戶端的IP地址 非局域網(wǎng)的外網(wǎng)IP地址,如:221.0.0.1*/
sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip);
return sParaTemp;
}
public String getPhoneCode() {
return phoneCode;
}
public void setPhoneCode(String phoneCode) {
this.phoneCode = phoneCode;
}
public String getTotalfee() {
return totalfee;
}
public void setTotalfee(String totalfee) {
this.totalfee = totalfee;
}
}
二、AlipayConfig 類是封裝支付寶接口參數(shù)
package com.hzdracom.config;
import com.hzdracom.util.UtilDate;
/* *
*類名:AlipayConfig
*功能:基礎(chǔ)配置類
*詳細(xì):設(shè)置帳戶有關(guān)信息及返回路徑
*版本:3.3
*日期:2012-08-10
*說(shuō)明:
*以下代碼只是為了方便商戶測(cè)試而提供的樣例代碼,商戶可以根據(jù)自己網(wǎng)站的需要,按照技術(shù)文檔編寫(xiě),并非一定要使用該代碼。
*該代碼僅供學(xué)習(xí)和研究支付寶接口使用,只是提供一個(gè)參考。
*提示:如何獲取安全校驗(yàn)碼和合作身份者ID
*1.用您的簽約支付寶賬號(hào)登錄支付寶網(wǎng)站(www.alipay.com)
*2.點(diǎn)擊“商家服務(wù)”(https://b.alipay.com/order/myOrder.htm)
*3.點(diǎn)擊“查詢合作者身份(PID)”、“查詢安全校驗(yàn)碼(Key)”
*安全校驗(yàn)碼查看時(shí),輸入支付密碼后,頁(yè)面呈灰色的現(xiàn)象,怎么辦?
*解決方法:
*1、檢查瀏覽器配置,不讓瀏覽器做彈框屏蔽設(shè)置
*2、更換瀏覽器或電腦,重新登錄查詢。
*/
public class AlipayConfig {
//↓↓↓↓↓↓↓↓↓↓請(qǐng)?jiān)谶@里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// 合作身份者ID,以2088開(kāi)頭由16位純數(shù)字組成的字符串
public static String partner = "2088001466494907";
// 商戶的私鑰
public static String key = "fb30213vjc4k4oabt7z4q9e07sfmlmzr";
//↑↑↑↑↑↑↑↑↑↑請(qǐng)?jiān)谶@里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
// 調(diào)試用,創(chuàng)建TXT日志文件夾路徑
public static String log_path = "D:\\";
// 字符編碼格式 目前支持 gbk 或 utf-8
public static String input_charset = "utf-8";
// 簽名方式 不需修改
public static String sign_type = "MD5";
public static String payment_type = "1";
//必填,不能修改
//服務(wù)器異步通知頁(yè)面路徑
public static String notify_url = "notify_url.jsp";
//需http://格式的完整路徑,不能加?id=123這類自定義參數(shù)
//頁(yè)面跳轉(zhuǎn)同步通知頁(yè)面路徑
public static String return_url = "return_url.jsp";
//需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),不能寫(xiě)成http://localhost/
//賣家支付寶帳戶
public static String seller_email = "jjj@hzdracom.com";
//必填
//商戶訂單號(hào)
public static String out_trade_no =UtilDate.getOrderNum();
//商戶網(wǎng)站訂單系統(tǒng)中唯一訂單號(hào),必填
//訂單名稱
public static String subject = "隱號(hào)充值";
//必填
//訂單描述
public static String body = "隱號(hào)充值";
//商品展示地址
public static String show_url ="";
//防釣魚(yú)時(shí)間戳
public static String anti_phishing_key="";
/*客戶端的IP地址 非局域網(wǎng)的外網(wǎng)IP地址,如:221.0.0.1*/
public static String exter_invoke_ip="";
}
三、strut配置文件
<action name="pay" method="pay" class="com.hzdracom.alipay.action.AliPayAction">
</action>
以上屬于關(guān)鍵代碼部分,需要注意的事項(xiàng)有 :
1.需要把支付寶提供的接口的幾個(gè)類引入到你的項(xiàng)目中,包括架包
2.notify_url.jsp和return_url.jsp地址要做好些成外網(wǎng)地址的全路徑
3.你自己的業(yè)務(wù)處理寫(xiě)notify_url.jsp這個(gè)里面,也可以直接寫(xiě)個(gè)接口給支付寶接口調(diào)用
- CodeIgniter開(kāi)發(fā)實(shí)現(xiàn)支付寶接口調(diào)用的方法示例
- 支付寶接口開(kāi)發(fā)集成支付環(huán)境小結(jié)
- php支付寶接口用法分析
- ThinkPHP實(shí)現(xiàn)支付寶接口功能實(shí)例
- asp.net B2B網(wǎng)站對(duì)接支付寶接口
- php使用CURL模擬GET與POST向微信接口提交及獲取數(shù)據(jù)的方法
- Python+微信接口實(shí)現(xiàn)運(yùn)維報(bào)警
- PHP微信刮刮卡 附微信接口
- 人臉識(shí)別測(cè)顏值、測(cè)臉齡、測(cè)相似度微信接口
- php官方微信接口大全(微信支付、微信紅包、微信搖一搖、微信小店)
- c#使用微信接口開(kāi)發(fā)微信門(mén)戶應(yīng)用中微信消息的處理和應(yīng)答
- c#使用微信接口開(kāi)發(fā)微信門(mén)戶應(yīng)用
- 網(wǎng)站申請(qǐng)不到支付寶接口、微信接口,免接口收款實(shí)現(xiàn)方式幾種解決辦法
相關(guān)文章
springboot?aop里的@Pointcut()的配置方式
這篇文章主要介紹了springboot?aop里的@Pointcut()的配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11JPA默認(rèn)值設(shè)置沒(méi)有效果的解決
這篇文章主要介紹了JPA默認(rèn)值設(shè)置沒(méi)有效果的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Java 中的HashMap詳解和使用示例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java 中的HashMap詳解和使用示例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理,需要的朋友可以參考下2017-05-05SpringBoot實(shí)現(xiàn)動(dòng)態(tài)配置及項(xiàng)目打包部署上線功能
本文講解的是如何使用Spring動(dòng)態(tài)配置文件,實(shí)現(xiàn)不同環(huán)境不同配置,靈活切換配置文件;以及講述了如何使用?Maven?打包,然后上傳至Linux服務(wù)器進(jìn)行部署,對(duì)SpringBoot打包部署上線過(guò)程感興趣的朋友一起看看吧2022-10-10基于mybatis-plus timestamp返回為null問(wèn)題的排除
這篇文章主要介紹了mybatis-plus timestamp返回為null問(wèn)題的排除,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Java實(shí)現(xiàn)讀取resources目錄下的文件路徑的九種方式
本文主要介紹了Java實(shí)現(xiàn)讀取resources目錄下的文件路徑的九種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04在idea中g(shù)it實(shí)現(xiàn)里查看歷史代碼方式
這篇文章主要介紹了在idea中g(shù)it里查看歷史代碼的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10SpringBoot整合H2數(shù)據(jù)庫(kù)的操作方法
H2是一個(gè)Java語(yǔ)言編寫(xiě)的嵌入式數(shù)據(jù)庫(kù),它不受平臺(tái)的限制,同時(shí)H2提供了一個(gè)十分方便的web控制臺(tái),用于操作和管理數(shù)據(jù)庫(kù)內(nèi)容,本文介紹SpringBoot整合H2數(shù)據(jù)庫(kù)的方法,感興趣的朋友一起看看吧2024-01-01