来源:蜘蛛抓取(WebSpider)
时间:2017-09-29 10:49
标签:
微信商户没有企业付款
本帖子已过去太久远了,不再提供回复功能。公对私付款神器:微信支付开放企业付款功能!
北京市东城区胜古中路1号蓝宝商务大厦4层
400-10-99114
周一至周五 9:00-18:00
公对私付款神器:微信支付开放企业付款功能!你在这里:公对私付款神器:微信支付开放企业付款功能!
北京网库信息技术股份有限公司 京ICP备号-11扫码下载APP
关注微信公众号
您是个人用户,您可以认领企业号
账号密码登录
一周内自动登录
免密码登录
获取验证码
第三方账号登录
Hello,新朋友
在发表评论的时候你至少需要一个响亮的昵称
微信小程序接入微信支付,只需3步
首发且原创
时间:05-17 10:12
阅读:1203次
来源:三尺信息科技
摘要:微信小程序开发出来后,想要用在线支付功能怎么办?毕竟在小程序里面实现微信支付的话还是会带来很大的便捷的。有过开发服务号下...
移步到微官网原文链接:开发出来后,想要用在线支付功能怎么办?毕竟在小程序里面实现微信支付的话还是会带来很大的便捷的。有过开发服务号下微信支付经验的亲会发现,其实小程序里的微信支付和服务号里面的开发过程很像。那么具体过程是怎样的呢?移步到微种草君七嬷嬷带你瞧瞧:Step1:开通微信支付和微信商户号这个过程几乎就和开通服务号的微信支付一样。Step2:获得用户的 OpenID首先,我们需要在小程序的客户端的逻辑层中,获取当前用户的 OpenID。通过调用 wx.login方法,可以得到用户的code,然后开发者服务器使用登录凭证code 获取 openid。 wx.login({ success:
function (res) { if
(res.code) { //发起网络请求 wx.request({ url:
'https://yourwebsit/onLogin', method:
'POST', data:
{ code:
res.code }, success:
function (res) { var
openid = res.data. }, fail:
function (err) { console.log(err) } }) } else
{ console.log('获取用户登录态失败!'
+ res.errMsg) } } }); var
code = req.param("code"); request({ url:
"https://api./sns/jscode2session?appid=" + appid + "&secret=" +
secret + "&js_code=" + code +
"&grant_type=authorization_code", method:
'GET' },
function (err, response, body) { if
(!err && response.statusCode == 200) { res.json(JSON.parse(body)); } });Step3:获取
prepay_id和支付签名验证paySign这一步的过程,和服务号里的微信支付过程一样。这个过程区分为客户端操作,以及服务器端的操作。首先来看一下客户端逻辑层实现。在服务号里,我们是通过如下的代码来调起支付功能: function
jsApiCall() { WeixinJSBridge.invoke('getBrandWCPayRequest',
{ "appId":
"", //公众号名称,由商户传入 "timeStamp":
"", //时间戳,自1970年以来的秒数 "nonceStr":
"", //随机串 "package":
"prepay_id=", "signType":
"MD5", //微信签名方式: "paySign":
"" //微信签名 },
function (res) { WeixinJSBridge.log(res.err_msg); if
(res.err_msg == "get_brand_wcpay_request:ok") { ; } else
{ ; } }); }在小程序里,我们是通过 wx.requestPayment 方法调起支付功能。当然,在这之前,我们先要获取 prepay_id。 wx.request({ url:
'https://yourwebsit/service/getPay', method:
'POST', data:
{ bookingNo:
bookingNo, total_fee:
total_fee, openid:
openid }, header:
{ 'content-type':
'application/json' },
success: function (res) { wx.requestPayment({ 'timeStamp':
timeStamp ,
'nonceStr': nonceStr ,
'package': 'prepay_id=' + res.data.prepay_id ,
'signType': 'MD5' ,
'paySign': res.data._paySignjs ,
'success': function (res) { console.log(res); } ,
'fail': function (res) { console.log('fail:'
+ JSON.stringify(res)); } }) }, fail:
function (err) { console.log(err) } })在服务器端,我们需要实现的是 prepay_id
的获取,以及签名 paySign 的获取。 var
bookingNo = req.param("bookingNo"); var
total_fee = req.param("total_fee"); var
openid = req.param("openid"); var
body = "费用说明"; var
url = "https://api.mch./pay/unifiedorder"; var
formData = ""; formData
+= "appid"; //appid formData
+= "test"; formData
+= "" + body + ""; formData
+= "mch_id"; //商户号 formData
+= "nonce_str"; formData
+= "notify_url"; formData
+= "" + openid + ""; formData
+= "" + bookingNo + ""; formData
+= "spbill_create_ip"; formData
+= "" + total_fee + ""; formData
+= "JSAPI"; formData
+= "" + paysignjsapi(appid, attach, body, mch_id, nonce_str, notify_url, openid,
bookingNo, spbill_create_ip, total_fee, 'JSAPI') + ""; formData
+= ""; request({ url:
url, method:
'POST', body:
formData },
function (err, response, body) { if
(!err && response.statusCode == 200) { var
prepay_id = getXMLNodeValue('prepay_id', body.toString("utf-8")); var
tmp = prepay_id.split('['); var
tmp1 = tmp[2].split(']'); //签名 var
_paySignjs = paysignjs(appid, mch_id, 'prepay_id=' + tmp1[0], 'MD5',
timeStamp); var
o = { prepay_id:
tmp1[0] ,
_paySignjs: _paySignjs } res.send(o); } });下面是用到的函数: function
paysignjs(appid, nonceStr, package, signType, timeStamp) { var
ret = { appId:
appid, nonceStr:
nonceStr, package:
package, signType:
signType, timeStamp:
timeStamp }; var
string = raw1(ret); string
= string + '&key=' + console.log(string); var
crypto = require('crypto'); return
crypto.createHash('md5').update(string, 'utf8').digest('hex'); }; function
raw1(args) { var
keys = Object.keys(args); keys
= keys.sort() var
newArgs = {}; keys.forEach(function
(key) { newArgs[key]
= args[key]; }); var
string = ''; for
(var k in newArgs) { string
+= '&' + k + '=' + newArgs[k]; } string
= string.substr(1); return
}; function
paysignjsapi(appid, attach, body, mch_id, nonce_str, notify_url, openid,
out_trade_no, spbill_create_ip, total_fee, trade_type) { var
ret = { appid:
appid, attach:
attach, body:
body, mch_id:
mch_id, nonce_str:
nonce_str, notify_url:
notify_url, openid:
openid, out_trade_no:
out_trade_no, spbill_create_ip:
spbill_create_ip, total_fee:
total_fee, trade_type:
trade_type }; var
string = raw(ret); string
= string + '&key=' + var
crypto = require('crypto'); return
crypto.createHash('md5').update(string, 'utf8').digest('hex'); }; function
raw(args) { var
keys = Object.keys(args); keys
= keys.sort() var
newArgs = {}; keys.forEach(function
(key) { newArgs[key.toLowerCase()]
= args[key]; }); var
string = ''; for
(var k in newArgs) { string
+= '&' + k + '=' + newArgs[k]; } string
= string.substr(1); return
}; function
getXMLNodeValue(node_name, xml) { var
tmp = xml.split(""); var
_tmp = tmp[1].split(""); return
_tmp[0];}好啦,简简单单三步,so
easy是不是?就可以实现对接微信支付功能了。上一个效果图:
声明:本文由三尺信息科技企业号发布,依据企业号用户协议,该企业号为文章的真实性和准确性负责。创头条作为品牌传播平台,只为传播效果负责,在文章不存在违反法律规定的情况下,不继续承担甄别文章内容和观点的义务。
关注企业号
移步到微是基于微信企业号平台而开发的以流程审批与万能表单为核心的新一代移动办公系统。通过移步到微平台,企业可以让员工更好地使用微信进行移动化办公。
TA的其他文章
14437次阅读
14518次阅读
14343次阅读
14614次阅读
19379次阅读
24小时热文
2.8万次阅读
2.8万次阅读
9114次阅读
8644次阅读
8244次阅读
8215次阅读
8007次阅读
7964次阅读
阅读下一篇
南京交警与共享单车企业联手整治“弃车拒罚”者
创头条精选
扫描二维码关注
微信扫码咨询微信公众账号如何转账到用户的零钱?
如题所示,客户要求能将微信商户平台的钱转到用户的零钱或银行卡,不知道微信有没有接口能实现转账的功能?有做过的朋友指点一下!
https://pay./wiki/doc/api/mch_pay.php?chapter=14_2
企业付款业务API
--- 共有 2 条评论 ---
注意:与商户微信支付收款资金并非同一账户,需要单独充值。