1. يمكن التخلص من الحزم غير المفيدة التي تحتوي على رموز الإجراء الرئيسية.
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;
استيراد 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;
/*
* واجهة الدفع Alipay
* @ المؤلف ZhuangZi
* @الاتجاهات
* @معرف الإصدار $: AliPayAction.java,v 0.1 2013-3-27 04:49:57 م ZhuangZi Exp $
*/
@التحكم
الطبقة العامة AliPayAction تمتد BaseAction {
رمز الهاتف الخاص بالسلسلة؛
إجمالي رسوم السلسلة الخاصة؛
/**
* اتصل بواجهة Alipay
* @ المؤلف ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @طريقة علي باي
* @Directions تستدعي واجهة Alipay
* @تاريخ 27-3-2013 04:53:35 مساءً باطل
*/
دفع الفراغ العام () {
يحاول {
/*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("text/html");
Response.setCharacterEncoding("utf-8");
طباعة الكاتب خارج؛
خارج = استجابة.getWriter();
json = JSON.toJSONString(json);
out.write(json);
out.flush();
out.Close();
} قبض (IOException ه) {
}
}
/**
*
* @ المؤلف ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @طريقة GetPayPrama
* @Directions بتغليف معلمات الاتصال بـ Alipay
* @التاريخ2013-4-1 05:26:11 مساءً
* @param إجمالي مبلغ الرسوم
* @param out_trade_no رقم الطلب
* @return Map<String,String>
*/
الخريطة العامة <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);
/*مسار صفحة الإشعارات غير المتزامنة للخادم //يتطلب مسارًا كاملاً بتنسيق 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("subject", AlipayConfig.subject);
/*مبلغ الدفع*/
sParaTemp.put("total_fee", Totalfee);
/*وصف الطلب*/
sParaTemp.put("body", 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 الخاص بالعميل ليس عنوان IP الخارجي لشبكة LAN، مثل: 221.0.0.1*/
sParaTemp.put("exter_invoc_ip", AlipayConfig.exter_invoc_ip);
إرجاع sParaTemp؛
}
سلسلة عامة getPhoneCode () {
إرجاع رمز الهاتف؛
}
public void setPhoneCode(String phoneCode) {
this.phoneCode = phoneCode;
}
سلسلة عامة getTotalfee () {
إجمالي رسوم الإرجاع؛
}
مجموعة الفراغ العامTotalfee(سلسلة Totalfee) {
this.totalfee = Totalfee;
}
}
2. تقوم فئة AlipayConfig بتغليف معلمات واجهة Alipay
import com.hzdracom.util.UtilDate;
/* *
*اسم الفئة: AlipayConfig
* الوظيفة: فئة التكوين الأساسية
*التفاصيل: قم بتعيين المعلومات المتعلقة بالحساب ومسار العودة
*الإصدار: 3.3
*التاريخ: 2012-08-10
*يوضح:
*الكود التالي هو مجرد نموذج للكود تم توفيره لتسهيل اختبار التجار، ويمكن للتجار كتابته وفقًا للوثائق الفنية وفقًا لاحتياجات مواقع الويب الخاصة بهم، ولا يُطلب منهم استخدام هذا الكود.
*هذا الرمز مخصص فقط للتعلم والبحث في واجهة Alipay ويتم توفيره كمرجع فقط.
*نصيحة: كيفية الحصول على رمز التحقق الأمني ومعرف الشريك
*1. استخدم حساب Alipay المتعاقد عليه لتسجيل الدخول إلى موقع Alipay الإلكتروني (www.alipay.com)
*2. انقر فوق "خدمات التاجر" (https://b.alipay.com/order/myOrder.htm)
*3. انقر فوق "الاستعلام عن هوية الشريك (PID)" و"رمز التحقق الأمني (المفتاح)"
*عند عرض رمز التحقق الأمني، بعد إدخال كلمة المرور الخاصة بالدفع، تتحول الصفحة إلى اللون الرمادي. ماذا علي أن أفعل؟
*حل:
*1. تحقق من تكوين المتصفح ولا تسمح للمتصفح بحظر المربعات النقطية.
*2. قم بتغيير المتصفح أو الكمبيوتر وقم بتسجيل الدخول مرة أخرى للاستعلام.
*/
الطبقة العامة AlipayConfig {
//↓↓↓↓↓↓↓↓↓↓يرجى تكوين معلوماتك الأساسية هنا↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// معرف الشريك، سلسلة مكونة من 16 رقمًا تبدأ بـ 2088
شريك السلسلة الثابتة العامة = "2088001466494907";
// المفتاح الخاص للتاجر
مفتاح السلسلة الثابتة العامة = "fb30213vjc4k4oabt7z4q9e07sfmlmzr";
//↑↑↑↑↑↑↑↑↑↑يرجى تكوين معلوماتك الأساسية هنا↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
// لتصحيح الأخطاء، قم بإنشاء مسار مجلد سجل TXT
سلسلة ثابتة عامة log_path = "D: //"؛
// يدعم تنسيق ترميز الأحرف حاليًا gbk أو utf-8
سلسلة ثابتة عامة input_charset = "utf-8";
// طريقة التوقيع لا تحتاج إلى تعديل
سلسلة ثابتة عامة علامة_نوع = "MD5"؛
سلسلة ثابتة عامة Payment_type = "1"؛
//مطلوب، لا يمكن تعديله
// مسار صفحة إعلام الخادم غير المتزامن
سلسلة ثابتة عامة notify_url = "notify_url.jsp";
// المسار الكامل بتنسيق http:// مطلوب، ولا يمكن إضافة معلمات مخصصة مثل ?id=123.
// مسار صفحة إشعار مزامنة الانتقال للصفحة
سلسلة ثابتة عامة return_url = "return_url.jsp";
// المسار الكامل بتنسيق http:// مطلوب. لا يمكن إضافة معلمات مخصصة مثل ?id=123 ولا يمكن إضافة http://localhost/.
// حساب Alipay الخاص بالبائع
سلسلة ثابتة عامة Seller_email = "[email protected]";
//مطلوب
// رقم طلب التاجر
String public static out_trade_no =UtilDate.getOrderNum();
// رقم الطلب الوحيد في نظام الطلب على موقع التاجر مطلوب
// اسم الطلب
موضوع السلسلة الثابتة العامة = "إعادة شحن الحساب المخفي"؛
//مطلوب
// وصف الطلب
نص السلسلة الثابتة العامة = "إعادة شحن الحساب المخفي"؛
// عنوان عرض المنتج
سلسلة ثابتة عامة show_url = ""؛
// الطابع الزمني لمكافحة التصيد الاحتيالي
سلسلة ثابتة عامة anti_phishing_key = ""؛
/*عنوان IP الخاص بالعميل ليس عنوان IP الخارجي لشبكة LAN، مثل: 221.0.0.1*/
سلسلة ثابتة عامة exter_invoc_ip = ""؛
}
3. ملف التكوين تبختر
<اسم الإجراء = "طريقة الدفع" = "الدفع">
</أكشن>
ما ورد أعلاه هو جزء الكود الرئيسي. الأشياء التي يجب ملاحظتها هي:
1. يتعين عليك إدخال عدة فئات من الواجهة التي توفرها Alipay في مشروعك، بما في ذلك حزمة الرف
2. يجب إعداد عنواني notify_url.jsp وreturn_url.jsp ليكونا المسار الكامل لعنوان الشبكة الخارجية.
3. اكتب معالجة الأعمال الخاصة بك في notify_url.jsp، أو يمكنك كتابة واجهة مباشرة لاستدعاء واجهة Alipay.