제로 금리 및 제로 리스크 : 위챗티 + 감사 코드 기반 위챗 무비자 결제 솔루션?
우리 모두 알고 있듯이 WeChat 결제 인터페이스에 액세스하려면 판매자 자격이 필요합니다. 엄격한 검토 과정이 있으며 특정 검토 수수료가 필요합니다. 검토를 통과한 후에도 WeChat은 각 거래에 대해 특정 처리 수수료를 청구합니다. 다른 플랫폼에서 무비자 서비스를 이용하려면 결제를 위해서는 관련 수수료를 지불해야 하며, 자금의 보안도 보장할 수 없습니다. 기존 오픈소스 무비자 결제도 휴대폰에서 위챗 알림을 모니터링하는 방식으로 구현되므로 높은 장비가 필요합니다. 이러한 솔루션은 개인 개발자나 소규모 웹사이트에는 적합하지 않습니다.
결과적으로 WPayment는 WeChat 메시지를 모니터링하기 위해 잘 알려진 wechaty SDK를 기반으로 하며 감사 코드 메커니즘을 사용하여 결제 금액을 수집할 수 있어 편리하게 사용할 수 있습니다. 지정된 소액(1회 감사 금액은 200위안을 초과할 수 없음)에 사용되며, 다른 사용자를 구별하기 위해 해당 금액을 사용할 필요가 없습니다. 동시에 네티즌으로부터 감사를 받을 수 있도록 감사 코드가 설정됩니다. 전국 각지에서 결제코드와 같지 않아 바람에 컨트롤이 쉽습니다.
npm을 사용하여 설치:
npm install --save wpayment
기본 사용 프로세스는 다음과 같습니다.
WPayment
객체를 생성하고 login()
메소드를 호출하여 WeChat 로그인 링크를 얻으십시오. 이를 QR 코드로 직접 변환한 후 수취인 의 WeChat으로 로그인하십시오.createOrder()
메서드를 호출하여 필요할 때 주문을 생성하고 반환된 Order
객체의 verifyCode
속성(4자리 숫자)을 기록할 수 있습니다.verifyCode
입력한 후 결제할 수 있습니다.createOrder()
메소드 매개변수의 onPaid()
콜백이 호출됩니다. 또한, 사용자의 오작동(예: 잘못된 금액 입력 잊어버리기, 잘못된 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 ) ;
} ) ;
본 프로젝트는 완전 무료이며 교육 및 학습 목적으로만 사용되며 불법적인 목적으로 사용될 수 없습니다.