GithubHelp home page GithubHelp logo

weixin-pay's People

Contributors

tvrcgo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

weixin-pay's Issues

mac verify failure

在createUnifiedOrder方法中,callback返回err:
Error: mac verify failure
at Error (native)
at Object.createSecureContext (_tls_common.js:135:17)
at Object.exports.connect (_tls_wrap.js:997:48)
at Agent.createConnection (https.js:82:22)
at Agent.createSocket (http_agent.js:182:26)
at Agent.addRequest (http_agent.js:144:10)
at new ClientRequest (http_client.js:158:16)
at Object.exports.request (http.js:31:10)
at Object.exports.request (https.js:199:15)
at Request.start (/node/**
/node_modules/request/request.js:740:32)
at Request.write (/node/**
/node_modules/request/request.js:1380:10)
at end (/node/***
/node_modules/request/request.js:552:18)
at Immediate.onImmediate (/node/**/node_modules/request/request.js:581:7)
at tryOnImmediate (timers.js:543:15)
at processImmediate as _immediateCallback

有时会出现TypeError: Cannot read property 'nonce_str' of undefined

使用wxpay.getBrandWCPayRequestParams时有时会出现
TypeError: Cannot read property 'nonce_str' of undefined
at C:\node_modules\weixin-pay\lib\wxpay.js:87:18
at Parser. (C:\node_modules\weixin-pay\node_modules\xml2js\lib\xml2js.js:488:18)
at emitOne (events.js:77:13)
at Parser.emit (events.js:169:7)
at Parser.exports.Parser.Parser.parseString (C:\node_modules\weixin-pay\node_modules\xml2js\lib\xml2js.js:507:16)
at Parser.parseString (C:\node_modules\weixin-pay\node_modules\xml2js\lib\xml2js.js:7:59)
at Object.exports.parseXML (C:\node_modules\weixin-pay\lib\util.js:11:9)
at Request._callback (C:\node_modules\weixin-pay\lib\wxpay.js:75:8)
at self.callback (C:\node_modules\weixin-pay\node_modules\request\request.js:200:22)
at emitOne (events.js:77:13)

total_fee

已传了total_fee,但是还是返回缺失该参数。
Msg: "requestPayment:fail"err_code: "2"err_desc: "调用支付JSAPI缺少参数: total_fee"

code enhancement

WXPay.mix('getBrandWCPayRequestParams', function(order, fn){

order.trade_type = "JSAPI";
var _this = this;
this.createUnifiedOrder(order, function(err, data){

//TODO: check data['return_code'] and data['return_msg'] response here, otherwise client will get a callback data with like {..., nonceStr: undefined, package: "prepay_id=undefined"... } without any further debug infomation.

	var reqparam = {
		appId: _this.options.appid,
		timeStamp: Math.floor(Date.now()/1000)+"",
		nonceStr: data.nonce_str,
		package: "prepay_id="+data.prepay_id,
		signType: "MD5"
	};
	reqparam.paySign = _this.sign(reqparam);
	fn(err, reqparam);
});

});

能否支持app支付?

getBrandWCPayRequestParams 把trade_type写死为JSAPI,可app支付的话其实也差不多
是否应该增加个APP支付的方法以及对应的文档?

企业付款

我看到有人提交了企业付款的代码,可是测试失败了。
#9
是因为echo "Error: no test specified" && exit 1,可以解决,加上这个特性吗

支付通知

底层没有进行签名验证,太不安全。交由用户自己做,使用性不好

沙箱支持

目前调用微信的接口都是直接写死的地址,能否支持一下沙箱环境?
微信的支付接口升级必须要用沙箱环境测试才可通过
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=21515658940X5pIn

比如查询地址要改成:
https://api.mch.weixin.qq.com/sandboxnew/pay/orderquery)

所以我建议用一个变量统一,比如

let host = 'https://api.mch.weixin.qq.com'
let sandboxName = '/sandboxnew'
...
url = host + sandboxName + '/orderquery'

TypeError: stream.on is not a function

koa 使用router.use('/wxpay/native/callback', wxpay.useWXCallback(function(msg, req, res, next){...
使用这个方法报错:如下
node_modules/weixin-pay/lib/util.js:32:9)
该如何解决呢?
TypeError: stream.on is not a function
@tvrcgo

这个项目现在还能用吗?

我的代码是这样:

        wxpay.createUnifiedOrder(orderInfo, (err,rst)=>{
            console.log(err);
            console.log(rst);
        });

然后输出错误:

TypeError: Cannot read property 'toString' of undefined
    at Parser.exports.Parser.Parser.parseString (/Users/cos800/projxxx/node_modules/xml2js/lib/xml2js.js:497:18)
    at Parser.parseString (/Users/cos800/projxxx/node_modules/xml2js/lib/xml2js.js:7:59)
    at Object.exports.parseXML (/Users/cos800/projxxx/node_modules/weixin-pay/lib/util.js:11:9)
    at Request._callback (/Users/cos800/projxxx/node_modules/weixin-pay/lib/wxpay.js:75:8)
    at self.callback (/Users/cos800/projxxx/node_modules/request/request.js:188:22)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:188:7)
    at Request.start (/Users/cos800/projxxx/node_modules/request/request.js:757:10)
    at Request.write (/Users/cos800/projxxx/node_modules/request/request.js:1511:10)
    at end (/Users/cos800/projxxx/node_modules/request/request.js:552:18)
    at Immediate.<anonymous> (/Users/cos800/projxxx/node_modules/request/request.js:581:7)
    at runCallback (timers.js:570:20)
    at tryOnImmediate (timers.js:550:5)
    at processImmediate [as _immediateCallback] (timers.js:529:5)
undefined

公众号支付取回的值为undefined

想要达到的效果:
想在后端拿到用于前端调起微信内支付(公众号支付)的相关参数

目前的效果:
取回的信息为中不正确,包含undefined,没有相关错误提示

使用接口的代码为:

router.get('/wexin/jsapi/:data', async function(req,res,next) {
	try {
                //我先在这里通过一些操作取到openid
		const data = JSON.parse(req.params.data);
		wxpay.getBrandWCPayRequestParams({
			openid: openid,
			body: '公众号支付测试',
		        detail: '公众号支付测试',
			out_trade_no: data.orderId,
			total_fee: data.total_fee,
			spbill_create_ip: '192.168.2.210',
			notify_url: 'https://47.75.40.253/wechat/callback',
		}, function(err, result){
			console.log(result);
		});
	} catch (e) {
		console.log(e);
	}
})

得到的结果:

{ appId: 'wxbbbe3315cf3d4d71',
  timeStamp: '1531245546',
  nonceStr: undefined,
  package: 'prepay_id=undefined',
  signType: 'MD5',
  paySign: 'D3FA8F7B5D32C50E9863CFF0D71809FA' }

其中nonceStr为undefined,prepay_id应该是未正确生成。

启动调试

这个demo的启动命令,能做个介绍么?

使用模式一支付的问题

我这边遇到一个奇怪的问题
根据
var url = wxpay.createMerchantPrepayUrl({ product_id: '123456' }); 返回的二维码,用户也扫描了,同时
商户后台也收到微信的回调之后,并且也调用 createUnifiedOrder() 生成预支付交易单,返回如下内容
{ return_code: 'SUCCESS',
server-1 return_msg: 'OK',
server-1 appid: 'wxf5b3c80720abf32f1',
server-1 mch_id: '1367153302',
server-1 nonce_str: 'EVAtWsAxfdRCr7ld',
server-1 sign: '714448185388A8D61C9B80926F56C662
server-1 result_code: 'SUCCESS',
server-1 prepay_id: 'wx201607231446087ccd9d044c02411844123',
server-1 trade_type: 'NATIVE',
server-1 code_url: 'weixin://wxpay/bizpayurl?pr=XL8favn' }

请问到这一步后,我是需要把这个json转换为xml后,返回给微信吗?如何返回呢?

无法获取微信返回状态

支付定单返如如下结果:
{
"appId": "wx4909c6e97b8f1f9c",
"timeStamp": "1472203485",
"nonceStr": "8OIWcyYFglN5qYIj",
"package": "prepay_id=undefined",
"signType": "MD5",
"paySign": "7A11C65CBDFF98554AADC4059AAC70B6"
}.
微信接口有很多内容,但该包并没有返回,比如失败状态。
如果这些信息返回,就可以生产环境用了

支付结果异步通知,自己访问也会执行业务逻辑

我自己访问/wxpay/notify也会执行业务逻辑,此时msg=null,微信通知过来时,msg有订单信息。
那么问题来了,怎么判断通知是微信过来的,还是别人冒充微信发过来的?

// 支付结果异步通知
router.use('/wxpay/notify', wxpay.useWXCallback(function(msg, req, res, next){
// 处理商户业务逻辑
//这里的代码自己访问也会执行
// res.success() 向微信返回处理成功信息,res.fail()返回失败信息。
res.success();
}));

调用js支付出错问题

调用js支付时返回这样的参数:
nonceStr: undefined,
package: 'prepay_id=undefined',

求助!!!!!!

调用 createUnifiedOrder() 生成预支付交易单,该如何将结果的XML数据返回给微信?

试过多次,

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://xxx.74.212.xxx:3000/order/notify', //发帖时隐藏下IP
trade_type: 'NATIVE',
product_id: pid,
openid:openid,
sign:sign,
nonce_str:nonce_str
}, function(err, result){
cb(err, result);
}
);
将结果变成XML, 然后通过res.send(xmlMessage);
始终没有收到任何来自微信的回调。理论上应该会call我的/order/notify的。 不知道为什么。。。卡在这里了

has no method 'useWXCallback'

router.get('/notify', wxpay.useWXCallback(function(msg, req, res, next){
                            ^
TypeError: Object function WXPay() {

    if (!(this instanceof WXPay)) {
        return new WXPay(arguments[0]);
    };

    this.options = arguments[0];
    this.wxpayID = { appid:this.options.appid, mch_id:this.options.mch_id };
} has no method 'useWXCallback'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.