1. ภาพรวมการชำระเงินออนไลน์
การชำระเงินออนไลน์คืออะไร? ถูกต้องมันเป็นเพียงการใช้จ่ายเงินออนไลน์! ทุกคนต้องมีประสบการณ์เช่นนี้ แต่คุณอาจไม่ทราบเกี่ยวกับ "เรื่องราวภายใน" ของการชำระเงินออนไลน์ลองเรียนรู้เกี่ยวกับเรื่องนี้ด้านล่าง!
หากคุณเริ่มใช้งานเว็บไซต์อีคอมเมิร์ซตอนนี้ผู้ใช้จะต้องชำระเงินหากพวกเขาซื้ออะไร เว็บไซต์ของคุณจะต้องสามารถเชื่อมต่อกับธนาคารรายใหญ่ได้ จากนั้นหลังจากการชำระเงินเสร็จสมบูรณ์ให้กลับไปที่เว็บไซต์ของคุณเพื่อแสดง "ความสำเร็จในการชำระเงิน"!
นี่คือสิ่งที่เราจะทำในวันนี้เชื่อมต่อกับระบบธนาคารออนไลน์ของธนาคารเพื่อชำระเงินให้เสร็จสมบูรณ์ เพื่อให้เป็นมืออาชีพมากขึ้นเราเรียกมันว่า "การพัฒนาเกตเวย์สำหรับการชำระเงินออนไลน์"
2. สองวิธีในการชำระเงินออนไลน์
มีสองวิธีในการชำระเงินออนไลน์:
*อีคอมเมิร์ซเชื่อมต่อโดยตรงกับธนาคาร
*อีคอมเมิร์ซเชื่อมต่อกับธนาคารผ่านแพลตฟอร์มการชำระเงินของบุคคลที่สาม
อีคอมเมิร์ซเชื่อมต่อโดยตรงกับธนาคารซึ่งต้องได้รับความยินยอมจากธนาคาร แต่น่าเสียดายที่ธนาคารเป็น "ยอดเยี่ยม" และไม่ใช่ใครที่ต้องการเชื่อมต่อกับพวกเขา หากธุรกิจอีคอมเมิร์ซของคุณมีกระแสเงินทุนรายวันขนาดใหญ่ธนาคารจะเชื่อมต่อกับคุณเพราะเงินทั้งหมดที่ลูกค้าจ่ายให้กับอีคอมเมิร์ซจะถูกฝากเข้าบัญชีธนาคาร! แต่ถ้ากระแสเงินทุนมีขนาดเล็กธนาคารจะไม่สนใจคุณ!
เมื่อเว็บไซต์ขนาดเล็กไม่เพียงพอในกองทุนและไม่สามารถเชื่อมต่อกับธนาคารได้พวกเขาจะเลือกที่จะร่วมมือกับ บริษัท ชำระเงินของบุคคลที่สาม ทุกคนยังเข้าใจว่า บริษัท นี้คืออะไรเช่น Alipay, Yibao, Fortune, Kuaiqian และ บริษัท อื่น ๆ มีชื่อเสียงในประเทศจีน บริษัท เหล่านี้สามารถเชื่อมต่อกับธนาคาร (เพราะมีเงินทุนเพียงพอ) และจากนั้น บริษัท อีคอมเมิร์ซขนาดเล็กสามารถเชื่อมต่อกับพวกเขาได้! แต่บุคคลที่สามต้องการค่าธรรมเนียม! โดยทั่วไปบุคคลที่สามเรียกเก็บเงิน 1% ของค่าธรรมเนียมอีคอมเมิร์ซ แต่พวกเขาจะไม่เรียกเก็บเงินของลูกค้า
ผ่านภาพด้านบนคุณสามารถเรียนรู้ได้ว่าชื่อห้างสรรพสินค้าหมายเลขคำสั่งซื้อ RMB และเวลาสั่งซื้อจะแสดงบนหน้าธนาคาร - - ธนาคารจะรู้เกี่ยวกับสิ่งเหล่านี้ได้อย่างไร? แน่นอนว่ามันถูกส่งไปยังธนาคารโดยอีคอมเมิร์ซ หลังจาก บริษัท อีคอมเมิร์ซเชื่อมต่อกับธนาคาร บริษัท อีคอมเมิร์ซจำเป็นต้องผ่านพารามิเตอร์ที่กำหนดโดยหน้าธนาคารไปยังหน้าธนาคารเพื่อให้หน้าธนาคารสามารถแสดงข้อมูลเหล่านี้ได้!
อย่างไรก็ตามห้างสรรพสินค้าของเราไม่สามารถเชื่อมต่อกับธนาคารเดียวเท่านั้น! เราต้องเชื่อมต่อกับสี่ บริษัท ของ BOC, CCB, ABC และ ICBC! พารามิเตอร์การเชื่อมต่อที่ธนาคารต่าง ๆ ต้องการนั้นแตกต่างกันซึ่งหมายความว่าเราจำเป็นต้องเขียนรหัสเชื่อมต่อที่แตกต่างกันสำหรับธนาคารต่าง ๆ ในระหว่างการพัฒนา นี่เป็นข้อเสียของการเชื่อมต่อโดยตรงกับธนาคาร! แน่นอนว่าการเชื่อมต่อโดยตรงกับธนาคารก็มีประโยชน์เช่นกันนั่นคือไม่จำเป็นต้องมีการรักษาความปลอดภัยไม่มีค่าธรรมเนียมการจัดการ!
พัฒนารหัสที่แตกต่างกันสำหรับธนาคารต่าง ๆ (ข้อเสีย);
ความปลอดภัย (ข้อดี);
ไม่มีค่าธรรมเนียมการจัดการ (ข้อดี);
ธนาคารอีคอมเมิร์ซขนาดเล็กไม่อนุญาตให้มีการเชื่อมต่อ (ข้อเสีย)
ดังที่แสดงในรูปด้านบนหลังจากลูกค้าคลิกเพื่อยืนยันการชำระเงินบนเว็บไซต์อีคอมเมิร์ซเขาจะถูกส่งไปยังเว็บไซต์ของบุคคลที่สามจากนั้นบุคคลที่สามจะเชื่อมต่อกับธนาคาร นี่แสดงให้เห็นว่าอีคอมเมิร์ซจำเป็นต้องส่งพารามิเตอร์ไปยังบุคคลที่สาม! จากนั้นบุคคลที่สามจะส่งพารามิเตอร์ไปยังธนาคาร ข้อได้เปรียบของวิธีนี้คือต้องมีการพัฒนาเฉพาะสำหรับบุคคลที่สามโดยไม่ต้องให้พารามิเตอร์แก่แต่ละธนาคาร มันเป็นงานของบุคคลที่สามในการจัดเตรียมพารามิเตอร์ให้กับแต่ละธนาคาร อย่างไรก็ตามหากบุคคลที่สามไม่เก่าและเชื่อถือได้หากบุคคลที่สามล้มละลายและผู้คนวิ่งหนีไปเงินของคุณจะหายไป เนื่องจากเงินที่ลูกค้าจ่ายไม่ได้ไปที่บัญชีธนาคารของคุณจึงถูกจ่ายให้กับบัญชีธนาคารของบุคคลที่สามและคุณมีบัญชีในบุคคลที่สาม ยิ่งไปกว่านั้นบุคคลที่สามยังเรียกเก็บค่าธรรมเนียมการจัดการโดยปกติ 1%ซึ่งไม่ใช่จำนวนน้อย (มันแย่มาก)
3. ผ่านกฎการชำระเงินออนไลน์ของบุคคลที่สาม
หากอีคอมเมิร์ซต้องการลงทะเบียนผู้ค้ากับบุคคลที่สามก็ต้องให้การรับรอง ICP แก่บุคคลที่สาม ใบอนุญาตธุรกิจ ICP เป็นใบอนุญาตธุรกิจเว็บไซต์ที่ต้องดำเนินการโดยเว็บไซต์ธุรกิจตาม "มาตรการการจัดการอินเทอร์เน็ต" ระดับชาติ หากไม่เป็นเช่นนั้นมันผิดกฎหมายที่จะดำเนินการ
เราไม่สามารถสมัคร ICP ได้เนื่องจากการฝึกฝน! ดังนั้นเราจึงไม่สามารถลงทะเบียนผู้ค้ากับบุคคลที่สามได้ อย่างไรก็ตามเรามีพ่อค้าสำเร็จรูปที่ลงทะเบียนกับ Yibao อยู่แล้วดังนั้นขั้นตอนนี้สามารถเพิกเฉยได้
เมื่อคุณลงทะเบียนกับ Yibao สำเร็จ Yibao จะให้สิ่งต่อไปนี้แก่คุณ:
เปิดบัญชีใน Yibao (เช่นรหัสผู้ค้า): 10001126856
ข้อมูลจำเพาะการเข้าถึง Yibao: ไฟล์อัลกอริทึมการเข้ารหัสไฟล์ CHM Symmetric คลาส: Paymentutil.java
คีย์: 69CL522AV6Q613II4W6U8K6XUW8VM1N6BFGYV769220IUYE9U37N4Y7RI4PL
ในข้อกำหนดการเข้าถึง Yibao เราสามารถค้นหาเกตเวย์การชำระเงินของ Yibao ซึ่งเป็น URL จริง ๆ แล้ว URL ที่ใช้เชื่อมต่อกับ Yibao: https://www.yeepay.com/app-merchant-proxy/node
ในข้อกำหนดการเข้าถึง Yibao คุณสามารถค้นหาพารามิเตอร์ที่ Yibao ต้องการได้ เมื่ออีคอมเมิร์ซเชื่อมต่อกับ Yibao พารามิเตอร์เหล่านี้จะต้องส่งผ่านไปยังเกตเวย์การชำระเงิน:
ที่อยู่คำขออย่างเป็นทางการ: https://www.yeepay.com/app-merchant-proxy/node
พารามิเตอร์เหล่านี้จะต้องต่อท้าย URL
อย่างไรก็ตามโปรดทราบว่าค่าของพารามิเตอร์เหล่านี้จำเป็นต้องได้รับการเข้ารหัส ทั้งคีย์การเข้ารหัสและอัลกอริทึมการเข้ารหัส Yibao จะให้!
โดยที่ P8_URL ระบุว่าจะกลับไปที่หน้าใดเมื่อการชำระเงินสำเร็จ ซึ่งหมายความว่าเราต้องเขียนหน้าเว็บที่แสดงผลลัพธ์ หลังจากการชำระเงินสำเร็จบุคคลที่สามจะเปลี่ยนเส้นทางไปยังหน้าส่งคืนที่เราระบุและจะนำพารามิเตอร์บางอย่างมาให้เรา หน้าของเราต้องได้รับพารามิเตอร์เหล่านี้และแสดงในหน้า ต่อไปนี้เป็นพารามิเตอร์ที่ส่งคืนโดยบุคคลที่สาม:
4. พัฒนาระบบการชำระเงินออนไลน์ของบุคคลที่สาม
ขั้นตอน:
index.jsp หน้า: แบบฟอร์มที่ส่งไปยัง BuyServlet รายการแบบฟอร์มรวมถึง: หมายเลขคำสั่งซื้อจำนวนเงินการเลือกธนาคาร
BUYSERVLET: รับข้อมูลแบบฟอร์มและเตรียมพร้อมที่จะเชื่อมต่อกับเกตเวย์ของบุคคลที่สาม เนื่องจากมีเพียง 3 พารามิเตอร์ที่ได้รับในหน้า index.jsp และมีพารามิเตอร์จำนวนมากที่บุคคลที่สามต้องการพารามิเตอร์ที่ไม่ได้กำหนดโดยหน้าจะเสริมโดย BuyServlet และต้องมีการเข้ารหัสพาราม
backservlet: เมื่อผู้ใช้จ่ายสำเร็จบุคคลที่สามจะเปลี่ยนเส้นทางไปยังหน้าส่งคืนที่เราระบุ เราใช้ backservlet เป็นหน้าส่งคืนซึ่งใช้เพื่อรับพารามิเตอร์ที่ส่งผ่านโดยบุคคลที่สามและแสดงในหน้า
เนื่องจากเรามีธุรกิจที่ลงทะเบียนใน Yibao อยู่แล้วเราจึงไม่จำเป็นต้องลงทะเบียนธุรกิจด้วยตัวเอง ดังนั้นนี่คือการใช้ Yibao เป็นแพลตฟอร์มการชำระเงินของบุคคลที่สามสำหรับการทดสอบ เนื่องจากฉันไม่มีอีคอมเมิร์ซ (อีคอมเมิร์ซที่ต้องผ่านการรับรอง ICP) ฉันจึงไม่สามารถลงทะเบียนธุรกิจกับบุคคลที่สามได้เช่นกัน
ธุรกิจ Yibao ที่เราใช้อยู่ตอนนี้จัดทำโดย Chuanzhi Podcast ซึ่งเป็นธุรกิจที่จดทะเบียนโดย Baba Sports Network บน Yibao ดังนั้นเงินที่จ่ายในระหว่างการทดสอบจึงมอบให้กับ บริษัท ที่ลงทะเบียนโดย Baba Sports Network บน Yibao
ขั้นตอนที่ 1: index.jsp
<form action = "" method = "post"> หมายเลขคำสั่งซื้อ: <อินพุต type = "text" name = "p2_order"/> <br/> จำนวน: <อินพุตประเภท = "text" name = "p3_amt"/> <br/> เลือกธนาคาร: <อินพุตประเภท = "วิทยุ" src = "bank_img/icbc.bmp" align = "middle"/> <อินพุตประเภท = "วิทยุ" ชื่อ = "pd_frpid" value = "boc-net-b2c"/> bank of China <img src = "bank_img/icbc.bmp" จีน <img src = "bank_img/bc.bmp" align = "กลาง"/> <br/> <ประเภทอินพุต = "วิทยุ" ชื่อ = "pd_frpid" value = "abc-net-b2c"/> ธนาคารเกษตรของประเทศจีน value = "ccb-net-b2c"/> ธนาคารก่อสร้าง <img src = "bank_img/ccb.bmp" align = "กลาง"/> <br/> <อินพุตประเภท = "วิทยุ" ชื่อ = "pd_frpid" value = "boco-net-b2c" type = "subment" value = "ยืนยันการชำระเงิน"/> </form>
มูลค่าที่สอดคล้องกันของแต่ละธนาคาร:
ขั้นตอนที่ 2: BuyServlet.java
ระดับสาธารณะ BuyServlet ขยาย HTTPSERVLET {โมฆะสาธารณะ DOPOST (HTTPSERVLETREQUEST Request, HTTPSERVLETRESSESSENTES) พ่น ServleTexception, iOException {request.SetchAracterencoding ("UTF-8"); Response.setContentType ("ข้อความ/html; charset = utf-8"); สตริง p0_cmd = "ซื้อ"; // ประเภทธุรกิจ, ค่าคงที่คือซื้อนั่นคือ "ซื้อ" สตริง p1_merid = "10001126856"; // ชื่อธุรกิจสตริง p2_order = request.getParameter ("p2_order"); "cny"; // สกุลเงินธุรกรรมค่าคงที่คือ CNY, ระบุสตริง rmb p5_pid = ""; // ชื่อผลิตภัณฑ์สตริง p6_pcat = ""; // ชื่อผลิตภัณฑ์สตริง p7_pdesc = ""; "http: // localhost: 8080/buy/backservlet"; // หน้าส่งคืนของอีคอมเมิร์ซเมื่อการชำระเงินสำเร็จ yibao จะเปลี่ยนเส้นทางไปยังหน้านี้สตริง p9_saf = ""; String pr_needResponse = "1"; // กลไกการตอบสนองค่าคงที่คือ 1 // คีย์จัดทำโดย Yibao เฉพาะพ่อค้าและ Yibao รู้คีย์นี้ String KeyValue = "69CL522AV6Q613II4W6U8K6XUW8VM1N6BFGYV769220IUYE9U37N4Y7RI4PL"; // ผ่านพารามิเตอร์ด้านบนคีย์และอัลกอริทึมการเข้ารหัสค่า HMAC จะถูกสร้างขึ้น // ลำดับของพารามิเตอร์เป็นสิ่งจำเป็น หากไม่มีค่าไม่สามารถให้ค่า NUL แต่ควรให้สตริงว่างเปล่า String HMAC = PaymentUtil.BuildHmac (P0_CMD, P1_Merid, P2_ORDER, P3_AMT, P4_CUR, P5_PID, P6_PCAT, P7_PDESC, P8_URL, P9_SAF, PA_MP, PD_FRPID // เชื่อมต่อพารามิเตอร์ทั้งหมดกับสตริงที่อยู่เกตเวย์ url = "https://www.yeepay.com/app-merchant-proxy/node"; url + = "? p0_cmd =" + p0_cmd + "& p1_merid =" + p1_merid + "& p2_order =" + p2_order + "& p3_amt =" + p3_amt + "& p4_cur =" + p4_cur + "& p5_pid p6_pcat + "& p7_pdesc =" + p7_pdesc = " + p7_pdesc +" & p8_url = " + p8_url =" + p8_url + "& p9_saf =" + p9_saf + "& pa_mp =" pr_needResponse + "& hmac =" + hmac; System.out.println (URL); // เปลี่ยนเส้นทางไปยัง Gateway Response.Sendrectirect (URL); -ขั้นตอนที่ 3: backservlet
Backservlet ระดับสาธารณะขยาย httpservlet {public void doget (httpservletrequest Request, httpservletResponse การตอบสนอง) โยน servletexception, ioexception {response.setContentType ("ข้อความ/html; charset = utf-8"); / * * Yibao จะจัดเตรียมพารามิเตอร์ผลลัพธ์ชุดหนึ่งเราสามารถรับสิ่งที่เราต้องการได้ * รับผลการชำระเงิน: R1_Code, 1 หมายความว่าการชำระเงินนั้นสำเร็จ * รับจำนวนเงินการชำระเงิน: R3_AMT * รับหมายเลขคำสั่งซื้ออีคอมเมิร์ซ: R6_ORDER * รับผลตอบแทนผลลัพธ์: R9_BTYPE, 1 หมายถึงการเปลี่ยนเส้นทางการส่งคืน, 2 หมายถึงการส่งคืนแบบจุดต่อจุด * แต่เราไม่สามารถรับจุดต่อจุดได้ */ string r1_code = request.getParameter ("R1_Code"); String R3_AMT = request.getParameter ("R3_AMT"); String r6_order = request.getParameter ("R6_Order"); String r9_btype = request.getParameter ("R9_BTYPE"); if (r1_code.equals ("1")) {ถ้า (r9_btype.equals ("1")) {response.getWriter (). พิมพ์ ("<h1> จ่ายสำเร็จ! </h1>"); // เมื่อการชำระเงินไม่สำเร็จ "<br/>"); Response.getWriter (). พิมพ์ ("หมายเลขคำสั่งคือ:" + r6_order + "<br/>"); -เครื่องมือสำหรับการได้รับ HMAC ที่จัดทำโดย Yibao Payment
Public Class PaymentIl {String String ส่วนตัว ENCODINGCHARSET = "UTF-8"; /*** สร้างวิธี HMAC** @Param P0_CMD ประเภทธุรกิจ* @Param P1_Merid หมายเลขพ่อค้า* @Param P2_ORDER หมายเลขคำสั่งซื้อของผู้ค้า* @Param P3_AMT จำนวนเงินการชำระเงิน* @Param P4_CU ผู้ค้าที่ได้รับข้อมูลความสำเร็จการชำระเงิน* @param P9_SAF ที่อยู่การจัดส่ง* @param PA_MP ข้อมูลส่วนขยายของผู้ค้า* @param PD_FRPID รหัสธนาคาร* @param pr_needResponse กลไกการตอบสนอง* @param keyvalue merchant merchant* @return*/ สตริงสตริง p0_cmd P4_CUR, สตริง P5_PID, สตริง P6_PCAT, สตริง P7_PDESC, สตริง P8_URL, สตริง P9_SAF, สตริง PA_MP, สตริง PD_FRPID, สตริง PR_NEEDRESSESS, สตริง KeyValue) // ประเภทธุรกิจ svalue.append (p0_cmd); // หมายเลขผู้ค้า svalue.append (p1_merid); // หมายเลขคำสั่งซื้อของผู้ค้า svalue.append (p2_order); // จำนวนเงินการชำระเงิน svalue.append (p3_amt); // การซื้อขายสกุลเงิน svalue.append (p4_cur); // ชื่อผลิตภัณฑ์ svalue.append (p5_pid); // ประเภทผลิตภัณฑ์ svalue.append (p6_pcat); // คำอธิบายผลิตภัณฑ์ svalue.append (p7_pdesc); // ที่อยู่ของผู้ค้าที่ได้รับข้อมูลความสำเร็จการชำระเงิน svalue.append (p8_url); // ที่อยู่จัดส่ง svalue.append (p9_saf); // ข้อมูลส่วนขยายของผู้ค้า svalue.append (pa_mp); // รหัสธนาคาร svalue.append (PD_FRPID); // กลไกการตอบสนอง svalue.append (pr_needresponse); Return Paymentutil.hmacsign (svalue.toString (), keyvalue); } /*** กลับไปที่วิธีการตรวจสอบ HMAC** @param HMAC รหัสการตรวจสอบเข้ารหัสที่ส่งโดยเกตเวย์การชำระเงิน* @param P1_Merid หมายเลขผู้ค้า* @Param R0_CMD ประเภทธุรกิจ* @Param R1_Code ผลการชำระเงิน ชื่อผลิตภัณฑ์ R5_PID* @Param R6_ORDER หมายเลขคำสั่งซื้อของผู้ค้า* @Param R7_UID YIBAO การชำระเงินสมาชิก ID* @Param R8_MP ข้อมูลส่วนขยายการค้า* @Param R9_BTYPE ผลการทำธุรกรรมการกลับมาของคีย์* @param R1_Code, String R2_TRXID, String R3_AMT, String R4_CUR, String R5_PID, String R6_ORDER, String R7_UID, String R8_MP, String R9_BTYPE, KeyValue String) // หมายเลขผู้ค้า svalue.append (p1_merid); // ประเภทธุรกิจ svalue.append (r0_cmd); // ผลการชำระเงิน svalue.append (r1_code); // หมายเลขธุรกรรมการชำระเงิน yibao svalue.append (r2_trxid); // จำนวนเงินการชำระเงิน svalue.append (r3_amt); // สกุลเงินธุรกรรม svalue.append (r4_cur); // ชื่อผลิตภัณฑ์ svalue.append (R5_PID); // หมายเลขคำสั่งซื้อของผู้ค้า svalue.append (r6_order); // รหัสสมาชิก Yibao Svalue.Append (R7_UID); // ข้อมูลส่วนขยายของผู้ค้า svalue.append (R8_MP); // ผลการทำธุรกรรมผลตอบแทนประเภท svalue.append (r9_btype); String SnewString = Paymentutil.hmacsign (svalue.toString (), keyValue); กลับ snewstring.equals (HMAC); } / ** * @param avalue * @param akey * @return * / สตริงคงที่สาธารณะ hmacsign (สตริง avalue, สตริง akey) {byte k_ipad [] = byte ใหม่ [64]; byte k_opad [] = byte ใหม่ [64]; ไบต์ keyb []; ค่าไบต์ []; ลอง {keyb = akey.getBytes (encodingCharset); value = avalue.getBytes (encodingCharset); } catch (unsupportencodingexception e) {keyb = akey.getBytes (); value = avalue.getBytes (); } arrays.fill (k_ipad, keyb.length, 64, (ไบต์) 54); array.fill (k_opad, keyb.length, 64, (ไบต์) 92); สำหรับ (int i = 0; i <keyb.length; i ++) {k_ipad [i] = (byte) (keyb [i] ^ 0x36); k_opad [i] = (ไบต์) (keyb [i] ^ 0x5c); } MESAGEDIGEST MD = NULL; ลอง {md = messageDigest.getInstance ("MD5"); } catch (nosuchalgorithmexception e) {return null; } md.update (k_ipad); md.update (ค่า); byte dg [] = md.digest (); md.reset (); md.update (k_opad); md.update (dg, 0, 16); dg = md.digest (); RETURN TOHEX (DG); } สตริงคงที่สาธารณะ tohex (อินพุตไบต์ []) {ถ้า (อินพุต == null) ส่งคืน null; stringbuffer output = new StringBuffer (input.length * 2); สำหรับ (int i = 0; i <input.length; i ++) {int current = input [i] & 0xff; ถ้า (ปัจจุบัน <16) output.Append ("0"); เอาท์พุท. Append (Integer.toString (ปัจจุบัน, 16)); } return output.toString (); } / ** * * @param args * @param คีย์ * @return * / สตริงคงที่สาธารณะ gethmac (สตริง [] args, คีย์สตริง) {ถ้า (args == null || args.length == 0) {return (null); } StringBuffer str = new StringBuffer (); สำหรับ (int i = 0; i <args.length; i ++) {str.append (args [i]); } return (hmacsign (str.toString (), key)); } / ** * @param Avalue * @return * / String String Public String (String Avalue) {Avalue = Avalue.Trim (); ค่าไบต์ []; ลอง {value = avalue.getBytes (encodingCharset); } catch (unsupportencodingexception e) {value = avalue.getBytes (); } MESAGEDIGEST MD = NULL; ลอง {md = messageDigest.getInstance ("sha"); } catch (nosuchalgorithmexception e) {e.printstacktrace (); คืนค่า null; } return tohex (md.digest (value)); } // โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// System.out.println (hmacsign ("annulcard1000043252120080620160450.0http: //localhost/szxpro/callback.asp 海 4 4 564868265473632445648682654736324511 "," 8UPP0KE8SQ73ZVP370VKO7C39403RTK1YWX40TD6IRH216036H27EB12792T ")) -Yibao โทรกลับ
Peer-to-Peer: Yibao เข้าถึงอีคอมเมิร์ซโดยตรงไม่มีลูกค้าที่นี่
วิธีนี้เป็นวิธีที่ต้องใช้และเราไม่สามารถรับได้ด้วยวิธีนี้! เพราะเราไม่มี IP คงที่
Yibao มีกลไกการกลับมาอีกครั้ง หากเยี่ยมชมคุณและคุณจะไม่ส่งข้อความกลับมามันจะส่งต่อไปอีกครั้ง!
อีคอมเมิร์ซต้องส่งคืนสตริงเริ่มต้นด้วยความสำเร็จ!
แนะนำเบราว์เซอร์ลูกค้าเพื่อเปลี่ยนเส้นทางไปยังอีคอมเมิร์ซ เป็นการให้ลูกค้าเข้าถึงอีคอมเมิร์ซ!
ไม่สามารถใช้งานได้!
HMAC: 13 ค่าพารามิเตอร์ + KeyValue (คีย์) + อัลกอริทึม (MD5)
13 ค่าพารามิเตอร์: ตั้งค่าด้วยตัวเอง!
KeyValue: Yibao หนึ่งคนส่งมาให้เราหลังจากที่เราลงทะเบียนเราและ Yibao เท่านั้นที่รู้เกี่ยวกับสิ่งนี้!
อัลกอริทึมที่มี MD5 พื้นฐาน: Paymentutil.buildhmac (14) ซึ่งส่งคืน HMAC
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น