weixin pay
v1.1.7
การชำระเงิน WeChat สำหรับ node.js
npm install weixin-pay
สร้างใบสั่งการชำระเงินแบบรวม
var WXPay = require ( 'weixin-pay' ) ;
var wxpay = WXPay ( {
appid : 'xxxxxxxx' ,
mch_id : '1234567890' ,
partner_key : 'xxxxxxxxxxxxxxxxx' , //微信商户平台API密钥
pfx : fs . readFileSync ( './wxpay_cert.p12' ) , //微信商户平台证书
} ) ;
wxpay . createUnifiedOrder ( {
body : '扫码支付测试' ,
out_trade_no : '20140703' + Math . random ( ) . toString ( ) . substr ( 2 , 10 ) ,
total_fee : 1 ,
spbill_create_ip : '192.168.2.210' ,
notify_url : 'http://wxpay_notify_url' ,
trade_type : 'NATIVE' ,
product_id : '1234567890'
} , function ( err , result ) {
console . log ( result ) ;
} ) ;
สอบถามสั่งซื้อ
// 通过微信订单号查
wxpay . queryOrder ( { transaction_id : "xxxxxx" } , function ( err , order ) {
console . log ( order ) ;
} ) ;
// 通过商户订单号查
wxpay . queryOrder ( { out_trade_no : "xxxxxx" } , function ( err , order ) {
console . log ( order ) ;
} ) ;
ปิดรับออเดอร์
wxpay . closeOrder ( { out_trade_no : "xxxxxx" } , function ( err , result ) {
console . log ( result ) ;
} ) ;
อินเทอร์เฟซการคืนเงิน
var params = {
appid : 'xxxxxxxx' ,
mch_id : '1234567890' ,
op_user_id : '商户号即可' ,
out_refund_no : '20140703' + Math . random ( ) . toString ( ) . substr ( 2 , 10 ) ,
total_fee : '1' , //原支付金额
refund_fee : '1' , //退款金额
transaction_id : '微信订单号'
} ;
wxpay . refund ( params , function ( err , result ) {
console . log ( 'refund' , arguments ) ;
} ) ;
จัดเตรียมฟังก์ชันเพื่อสร้างลิงก์รหัส QR สำหรับการชำระเงิน และสร้างรหัส QR จาก URL เพื่อให้ผู้ใช้สแกน
var url = wxpay . createMerchantPrepayUrl ( { product_id : '123456' } ) ;
หลังจากได้รับการติดต่อกลับจาก WeChat แบ็กเอนด์ของผู้ค้าจะเรียก createUnifiedOrder() เพื่อสร้างคำสั่งซื้อธุรกรรมการชำระเงินล่วงหน้าและส่งคืนข้อมูล XML ที่เป็นผลลัพธ์ไปยัง WeChat
โหมดหนึ่งคืออะไร?
เรียกใช้ฟังก์ชัน createUnifiedOrder() โดยตรงเพื่อสร้างคำสั่งซื้อธุรกรรมการชำระเงินล่วงหน้า และสร้างโค้ด QR จาก code_url ในผลลัพธ์เพื่อให้ผู้ใช้สแกน
โหมด 2 คืออะไร?
สร้างพารามิเตอร์การชำระเงิน JS API และส่งไปที่เพจ
wxpay . getBrandWCPayRequestParams ( {
openid : '微信用户 openid' ,
body : '公众号支付测试' ,
detail : '公众号支付测试' ,
out_trade_no : '20150331' + Math . random ( ) . toString ( ) . substr ( 2 , 10 ) ,
total_fee : 1 ,
spbill_create_ip : '192.168.2.210' ,
notify_url : 'http://wxpay_notify_url'
} , function ( err , result ) {
// in express
res . render ( 'wxpay/jsapi' , { payargs : result } )
} ) ;
พารามิเตอร์การโทรหน้าเว็บ (ใช้ ejs เป็นตัวอย่าง)
WeixinJSBridge . invoke (
"getBrandWCPayRequest" , < % - JSON . stringify ( payargs ) % > , function ( res ) {
if ( res . err_msg == "get_brand_wcpay_request:ok" ) {
// success
}
} ) ;
เซิร์ฟเวอร์ผู้ค้าจัดการการโทรกลับ WeChat (ด่วนเป็นตัวอย่าง)
// 原生支付回调
router . use ( '/wxpay/native/callback' , wxpay . useWXCallback ( function ( msg , req , res , next ) {
// msg: 微信回调发送的数据
} ) ) ;
// 支付结果异步通知
router . use ( '/wxpay/notify' , wxpay . useWXCallback ( function ( msg , req , res , next ) {
// 处理商户业务逻辑
// res.success() 向微信返回处理成功信息,res.fail()返回失败信息。
res . success ( ) ;
} ) ) ;