ゼロレート、ゼロリスク: wechaty + 感謝コードに基づく WeChat ビザなし決済ソリューション?
ご存知のとおり、WeChat の支払いインターフェースにアクセスするには販売者の資格が必要です。厳格な審査プロセスがあり、審査に合格した場合でも、WeChat は取引ごとに一定の手数料を請求します。他のプラットフォームのビザなしサービスを利用する 支払いには関連する手数料を支払う必要があり、資金の安全性は保証されません。既存のオープンソースのビザなし支払いも、携帯電話上の WeChat 通知を監視することで実装されており、これには高度な設備が必要です。これらのソリューションはどちらも個人の開発者や小規模な Web サイトには適していません。
その結果、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 ) ;
} ) ;
このプロジェクトは完全に無料で、教育と学習のみを目的としており、違法な目的で使用することはできません。