我通过官方的微信小程序的支付demo,开发了企业支付功能,在本地调试时可以成功进行付款,没有任何问题,但在部署到云引擎后却出现下列错误,这是怎么回事,请求指点
LeanEngine: /payment: 500: TypeError: wxpay.payment is not a function
at Promise (/home/leanengine/app/c_payment.js:45:19)
at C_Payment.place (/home/leanengine/app/c_payment.js:43:16)
at doPay (/home/leanengine/app/company_payment.js:74:15)
at buyer.fetch.then (/home/leanengine/app/company_payment.js:41:26)
at tryCatch (/home/leanengine/app/node_modules/es6-promise/dist/es6-promise.js:409:12)
at invokeCallback (/home/leanengine/app/node_modules/es6-promise/dist/es6-promise.js:424:13)
at publish (/home/leanengine/app/node_modules/es6-promise/dist/es6-promise.js:398:7)
at flush (/home/leanengine/app/node_modules/es6-promise/dist/es6-promise.js:128:5)
at combinedTickCallback (internal/process/nexttick.js:73:7)
at process.tickCallback (internal/process/nexttick.js:104:9)
这是我写的企业支付功能
’WXPay.mix('payment',function(order, fn){
if (!(order.partner_trade_no || order.re_user_name)) {
fn(null, { return_code: 'FAIL', return_msg:'缺少参数' });
}
order.nonce_str = order.nonce_str || util.generateNonceString();
order.sign = this.sign(order);
request({
url: "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers",
method: "POST",
body: util.buildXML({xml: order}),
agentOptions: {
pfx: this.options.pfx,
passphrase: this.options.mch_id
}
}, function(err, response, body){
util.parseXML(body, fn);
});
});
这是调用的地方
place() {
return new Promise((resolve, reject) => {
// 参数文档: https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1
wxpay.payment({
mch_appid: process.env.WEIXIN_APPID,
mchid:process.env.WEIXIN_MCHID,
openid: this.receiver.get('authData').lc_weapp.openid,
partner_trade_no: this.partner_trade_no,
check_name:'NO_CHECK',
re_user_name:this.re_user_name,
spbill_create_ip:this.spbill_create_ip,
amount: this.amount,
desc:this.desc,
}, function(err, result) {
if (err) return reject(err);
return resolve(result);
});
}).then(handleError).then(validate_c_payment).then(
(result) => {
this.payment_no = result.payment_no;
this.payment_time = result.payment_time;
return this.save().then(()=>{
console.log('2-打款成功')
}).catch((e)=>{
console.log('2-打款失败',e)
});
});
}
云函数调用的地方
c_payment.place().then(() => {
console.log('1-打款成功')
return response.success();
//TODO
}).catch(error => {
console.error('1-打款失败',error);
return response.error(error);
});