weixin pay
v1.1.7
node.js에 대한 WeChat 결제
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코드 링크를 생성하는 기능을 제공하고, 사용자가 스캔할 수 있는 URL에서 QR코드를 생성합니다.
var url = wxpay . createMerchantPrepayUrl ( { product_id : '123456' } ) ;
WeChat에서 콜백을 받은 후 판매자 백엔드는 createUnifiedOrder()를 호출하여 선불 거래 주문을 생성하고 결과 XML 데이터를 WeChat에 반환합니다.
모드 1이란 무엇입니까?
createUnifiedOrder() 함수를 직접 호출하여 선불 거래 주문을 생성하고, 사용자가 스캔할 수 있도록 결과의 code_url에서 QR 코드를 생성합니다.
모드 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 콜백을 처리합니다(예: Express)
// 原生支付回调
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 ( ) ;
} ) ) ;