อัตราเป็นศูนย์และความเสี่ยงเป็นศูนย์ : โซลูชันการชำระเงินปลอดวีซ่า WeChat ตามรหัส wechaty + การแข็งค่า?
ดังที่เราทุกคนทราบกันดีว่าจำเป็นต้องมีคุณสมบัติของผู้ค้าเพื่อเข้าถึงอินเทอร์เฟซการชำระเงินของ WeChat มีกระบวนการตรวจสอบที่เข้มงวดและมีค่าธรรมเนียมการตรวจสอบที่แน่นอน หลังจากผ่านการตรวจสอบแล้ว WeChat จะเรียกเก็บค่าธรรมเนียมการจัดการบางอย่างสำหรับธุรกรรมแต่ละรายการด้วย ใช้บริการปลอดวีซ่าบนแพลตฟอร์มอื่น ๆ ในการชำระเงินจะต้องชำระค่าธรรมเนียมที่เกี่ยวข้องและไม่สามารถรับประกันความปลอดภัยของเงินทุนได้ นอกจากนี้ การชำระเงินแบบไม่ต้องขอวีซ่าแบบโอเพ่นซอร์สที่มีอยู่ยังดำเนินการโดยการตรวจสอบการแจ้งเตือน WeChat บนโทรศัพท์มือถือซึ่งต้องใช้อุปกรณ์ระดับสูง และทำให้เกิดการควบคุมความเสี่ยงได้อย่างง่ายดาย โซลูชันเหล่านี้ไม่เหมาะสำหรับนักพัฒนารายบุคคลและเว็บไซต์ขนาดเล็ก
ด้วยเหตุนี้ WPayment จึงเกิดขึ้น โดยอาศัย Wechaty SDK ที่รู้จักกันดีในการตรวจสอบข้อความ WeChat และใช้กลไกรหัสการแข็งค่าเพื่อรวบรวมการชำระเงิน ใช้สำหรับจำนวนเล็กน้อยที่ระบุ (จำนวนการแข็งค่าเพียงครั้งเดียวต้องไม่เกิน 200 หยวน) และไม่จำเป็นต้องใช้จำนวนเงินเพื่อแยกแยะผู้ใช้ที่แตกต่างกัน ขณะเดียวกันก็มีการตั้งค่ารหัสการแข็งค่าเพื่อรับการแข็งค่าจากชาวเน็ต ทั่วประเทศจึงไม่เหมือนกับรหัสชำระเงิน โดนลมควบคุมได้ง่าย
ติดตั้งโดยใช้ npm:
npm install --save wpayment
ขั้นตอนการใช้งานขั้นพื้นฐานคือ:
WPayment
และเรียกวิธี login()
เพื่อรับลิงก์เข้าสู่ระบบ WeChat โปรดแปลงเป็นรหัส QR ด้วยตนเอง จากนั้นเข้าสู่ระบบด้วย WeChat ของ ผู้รับเงินcreateOrder()
เพื่อสร้างคำสั่งซื้อเมื่อจำเป็น และจดบันทึกแอตทริบิวต์ verifyCode
(ตัวเลขสี่หลัก) ของออบเจ็กต์ Order
ที่ส่งคืนverifyCode
ในคอลัมน์ "หมายเหตุ" จากนั้นจึงชำระเงินonPaid()
ในพารามิเตอร์เมธอด createOrder()
นอกจากนี้ เมื่อพิจารณาถึงการดำเนินการที่ผิดของผู้ใช้ (เช่น ลืมใส่จำนวนเงินผิด, กรอก verifyCode
ผิด, ชำระเงินหลังจากคำสั่งซื้อหมดเวลา) ออบเจ็กต์ WPayment
ยังมีวิธี queryOrder
เพื่อให้แน่ใจว่าชื่อเล่น WeChat ของผู้ชำระเงิน จำนวนเงินที่ชำระ และ สามารถใช้หมายเลขการโอน WeChat ได้ สอบถามข้อมูลการสั่งซื้อผ่านวิธีการอื่น ๆ สำหรับคำแนะนำโดยละเอียดเพิ่มเติม โปรดดูที่ /docs/document.md
การสาธิตง่ายๆ มีดังนี้:
const WPayment = require ( 'wpayment' ) . default ;
const qrcode = require ( 'qrcode' ) ;
let intervalID , timeLeft = 300 ;
const payment = new WPayment ( ) ;
payment . login ( ( linkGetter ) => {
// 登录请求回调
const link = linkGetter ( ) ;
qrcode . toString ( link , { type : 'terminal' } , ( error , result ) => {
if ( error ) {
console . log ( error ) ;
return ;
}
console . clear ( ) ;
console . log ( '请扫描二维码登录微信:' , 'n' ) ;
console . log ( result ) ;
} )
} , ( nickname ) => {
// 登录成功回调
console . clear ( ) ;
console . log ( nickname , '已登录' ) ;
const order = payment . createOrder ( '0.02' , ( orderID ) => {
// 订单支付成功回调
clearInterval ( intervalID ) ;
console . log ( 'n订单 ' + orderID + ' 已支付!' ) ;
console . log ( '支付人微信昵称:' , order . payer ) ;
console . log ( '支付时间:' , order . paidTime . toLocaleString ( ) ) ;
console . log ( '微信订单号:' , order . transID ) ;
} , ( error ) => {
// 订单支付失败(系统错误、主动取消或订单超时未支付)回调
console . log ( error ) ;
clearInterval ( intervalID ) ;
} , 300 ) ;
intervalID = setInterval ( ( ) => {
timeLeft -= 1 ;
if ( timeLeft <= 0 ) {
clearInterval ( intervalID ) ;
return ;
}
console . clear ( ) ;
console . log ( '创建了一笔新订单,金额 0.02 元,动态码为 ' + order . verifyCode ) ;
console . log ( '请在' , timeLeft , '秒内完成支付' ) ;
} , 1000 ) ;
} , ( error ) => {
// 登录失败回调
console . log ( error ) ;
} ) ;
โครงการนี้ไม่มีค่าใช้จ่ายใด ๆ ทั้งสิ้นและมีไว้เพื่อการศึกษาและการเรียนรู้เท่านั้น และไม่สามารถใช้เพื่อวัตถุประสงค์ที่ผิดกฎหมายได้