1. 重要な ACTION コードを含む無駄なパッケージを削除できます。
it.sauronsoftware.base64.Base64 をインポートします。
インポート java.io.IOException;
java.io.PrintWriterをインポートします。
java.net.HttpURLConnectionをインポートします。
java.util.HashMapをインポートします。
java.util.Mapをインポートします。
java.util.ResourceBundle をインポートします。
インポート javax.servlet.http.HttpServletResponse;
org.apache.struts2.ServletActionContext をインポートします。
org.dom4j.Document をインポートします。
org.springframework.stereotype.Controller をインポートします。
com.alibaba.fastjson.JSON をインポートします。
com.hzdracom.action.BaseAction をインポートします。
com.hzdracom.config.AlipayConfig をインポートします。
com.hzdracom.util.AlipaySubmit をインポートします。
com.hzdracom.util.HTTPService をインポートします。
com.hzdracom.util.UtilDate をインポートします。
com.hzlq.source.security.DESUtil をインポートします。
/*
* Alipay支払いインターフェース
* @著者 ZhuangZi
* @方向
* @version $Id: AliPayAction.java,v 0.1 2013-3-27 04:49:57 PM ZhuangZi Exp $
*/
@コントローラ
public class AliPayAction extends BaseAction {
プライベート文字列電話コード;
プライベート文字列 totalfee;
/**
* Alipayインターフェイスに電話をかける
* @著者 ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @メソッド AliPay
* @Directions は Alipay インターフェイスを呼び出します
* @date 2013-3-27 04:53:35 pm void
*/
public void pay() {
試す {
/*1****ミリ秒レベルの時間に基づいて Alipay トランザクション番号を生成します*/
String out_trade_no = UtilDate.getOrderNum();
/*2*****↓↓↓↓↓↓↓↓リクエストパラメータを配列に詰め込みます↓↓↓↓↓↓↓↓*/
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp = getPayPrama(totalfee, out_trade_no);
/*3*****↓↓↓↓↓↓↓↓↓↓Alipay インターフェースのリクエスト ↓↓↓↓↓↓↓↓*/
String json = AlipaySubmit.buildRequest(sParaTemp, "get", "confirm");
HttpServletResponse 応答 = ServletActionContext.getResponse();
response.setContentType("テキスト/html");
response.setCharacterEncoding("utf-8");
PrintWriter 出力;
out = 応答.getWriter();
json = JSON.toJSONString(json);
out.write(json);
out.flush();
out.close();
} キャッチ (IOException e) {
}
}
/**
*
* @著者 ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @メソッドGetPayPrama
* @Directions は、Alipay を呼び出すパラメータをカプセル化します。
* @date 2013-4-1 05:26:11 pm
* @param 合計料金金額
* @param out_trade_no 注文番号
* @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("サービス", "create_direct_pay_by_user");
sParaTemp.put("パートナー", AlipayConfig.partner);
sParaTemp.put("_input_charset", AlipayConfig.input_charset);
sParaTemp.put("支払い_タイプ", AlipayConfig.支払い_タイプ);
/*サーバーの非同期通知ページのパス // http:// 形式の完全なパスが必要であり、?id=123 などのカスタム パラメータを追加することはできません*/
sParaTemp.put("notify_url", AlipayConfig.notify_url);
/*ページ ジャンプ同期通知ページのパス//http:// 形式の完全なパスが必要です。?id=123 などのカスタム パラメータを追加したり、http://localhost/*/ のように記述することはできません。
sParaTemp.put("return_url", AlipayConfig.return_url);
/*販売者の Alipay アカウント*/
sParaTemp.put("seller_email", AlipayConfig.seller_email);
/*販売者の注文番号*/
sParaTemp.put("out_trade_no", out_trade_no);
/*注文名*/
sParaTemp.put("件名", AlipayConfig.subject);
/*お支払い金額*/
sParaTemp.put("total_fee", totalfee);
/*注文の説明*/
sParaTemp.put("本体", AlipayConfig.body);
/*http:// で始まる完全なパスが必要です。例: http://www.xxx.com/myorder.html*/
sParaTemp.put("show_url", AlipayConfig.show_url);
//フィッシング対策のタイムスタンプ
sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key);
/*クライアントの IP アドレスは、LAN の外部 IP アドレスではありません (例: 221.0.0.1*/)
sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip);
sParaTemp を返します。
}
public String getPhoneCode() {
電話コードを返します。
}
public void setPhoneCode(String PhoneCode) {
this.phoneCode = 電話コード;
}
public String getTotalfee() {
合計手数料を返す。
}
public void setTotalfee(String totalfee) {
this.totalfee = 合計料金;
}
}
2. AlipayConfig クラスは、Alipay インターフェイス パラメータをカプセル化します。
com.hzdracom.util.UtilDate をインポートします。
/* *
※クラス名:AlipayConfig
*機能: 基本構成クラス
※詳細:アカウント関連情報とリターンパスの設定
※バージョン:3.3
*日付: 2012-08-10
*イラスト:
*次のコードは、マーチャントのテストを容易にするために提供されているサンプル コードにすぎません。マーチャントは、独自の Web サイトのニーズに応じて技術ドキュメントに従ってコードを作成でき、このコードを使用する必要はありません。
*このコードは、Alipay インターフェイスの学習と研究のみを目的としており、参考としてのみ提供されています。
*ヒント: セキュリティ認証コードとパートナー ID の取得方法
※1.ご契約のAlipayアカウントを使用してAlipay Webサイト(www.alipay.com)にログインします。
※2.「加盟店サービス」(https://b.alipay.com/order/myOrder.htm)をクリックします。
※3.「パートナーIDの照会(PID)」と「セキュリティ検証コード(キー)の照会」をクリックします。
※セキュリティ認証コードを表示すると、支払いパスワードを入力するとページが灰色になります。
*解決:
※1. ブラウザの設定を確認し、ブラウザで箇条書きをブロックしないようにしてください。
※2. ブラウザやパソコンを変更して再度ログインして問い合わせてください。
*/
パブリック クラス AlipayConfig {
//↓↓↓↓↓↓↓↓こちらから基本情報を設定してください↓↓↓↓↓↓↓↓↓↓↓↓↓
// パートナー ID、2088 で始まる 16 桁の文字列
public static String パートナー = "2088001466494907";
// 販売者の秘密鍵
パブリック静的文字列キー = "fb30213vjc4k4oabt7z4q9e07sfmlmzr";
//↑↑↑↑↑↑↑↑↑↑ここで基本情報を設定してください↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
//デバッグ用にTXTログフォルダーのパスを作成します
public static String log_path = "D://";
//文字エンコード形式は現在 gbk または utf-8 をサポートしています
public static String input_charset = "utf-8";
// 署名メソッドを変更する必要はありません
public static Stringsign_type = "MD5";
public static String 支払いタイプ = "1";
//必須、変更不可
//サーバーの非同期通知ページのパス
public static String Notice_url = "notify_url.jsp";
// http:// 形式の完全なパスが必要であり、?id=123 などのカスタム パラメータは追加できません。
//ページジャンプ同期通知ページのパス
public static String return_url = "return_url.jsp";
//http:// 形式の完全なパスが必要です。?id=123 などのカスタム パラメータや http://localhost/ は追加できません。
//販売者のAlipayアカウント
public static String sell_email = "[email protected]";
//必須
//販売者の注文番号
public static String out_trade_no =UtilDate.getOrderNum();
//販売者の Web サイト注文システムにおける唯一の注文番号。必須
//注文名
public static String subject = "非表示のアカウントのリチャージ";
//必須
// 注文の説明
public static String body = "非表示のアカウントのリチャージ";
//商品表示アドレス
public static String show_url = "";
//フィッシング対策のタイムスタンプ
public static String anti_phishing_key="";
/*クライアントの IP アドレスは、LAN の外部 IP アドレスではありません (例: 221.0.0.1*/)
public static String exter_invoke_ip="";
}
3. ストラット設定ファイル
<アクション名="支払い" メソッド="支払い">
</アクション>
上記はキーコード部分です。注意すべき点は次のとおりです。
1. Alipay が提供するインターフェイスのいくつかのクラス (シェルフ パッケージなど) をプロジェクトに導入する必要があります。
2. Notice_url.jsp および return_url.jsp アドレスは、外部ネットワーク アドレスのフル パスになるように準備する必要があります。
3. 独自のビジネス処理をnotify_url.jspに記述するか、Alipayインターフェースを呼び出すインターフェースを直接記述することもできます。