摘要:移动应用想要调用微信的支付功能,需要到微信开发平台申请创建移动应用,微信会给,拿到到中打开一个项目,添加对应的。当前端拿到值后调用即拉取微信支付弹窗付费。的搜一下就能出来,为后端返回的要传给微信的参数。
移动应用想要调用微信的支付功能,需要到微信开发平台申请创建移动应用,微信会给appid,拿到appid到HBuilderX中打开一个uni-app项目,添加对应的sdk。
在微信开发平台申请好的移动应用要开通微信支付功能,需将微信的商户号绑定到该移动应用上,这时候就需要注册微信商户号了,到微信商户平台。
注册好绑定移动应用的appid即可,接下来就是开发步骤。
大体步骤就是,Java后台代码给微信的统一下单接口发一个请求,拿到响应后返回给前端的app,app拿到响应后传给微信拉起微信支付弹窗,然后确认付款即可,至于使用者付的款会落到绑定的商户号上面。
微信会提供Java后端开发的一些工具代码,简要实现:后端组装一下请求参数:appid(移动应用id,微信开发平台申请到的),mch_id(商户号,商户平台申请的),nonce_str(随机字符串,Java自己生成的),body(一个字符串,用来描述该应用的作用,如:天天爱消除-游戏充值),out_trade_no(商户订单号,这个是公司后端自己生成的业务代码,用来标识哪一个用户充值的订单号),total_fee(订单金额),spbill_create_ip(调用微信支付api的机器ip),notify_url(接收微信支付异步通知回调地址),trade_type("APP",标识这次请求来源是啥),sign(签名)
这里最关键的就是这个签名,签名怎么生成呢:) 笔者这里遇到很多坑,上述那些参数都需要组装成Java map,关键就是sign这个字段需要依赖上述那个map按照key的ASCII码排序后组装成查询参数,然后在查询参数后面加上"&key=xxxxxxx",key是商户平台上的密钥,组装好后得到字符串str,将str通过md5算法加密后大写得到的字符串就是sign的值,然后将sign和其值放入参数的map中,将参数通过工具类方法发送给微信即可,微信拿到后会生成响应,这些响应需要给前端发给微信使用的,那微信响应怎么包装成前端发给微信的呢?
后端拿到微信正确的响应后,需要从其中取出一些字段,存在map中,然后包装成查询参数字符串加上key,再md5后大写,将获得的字符串放在map中,作为sign的属性值,最后将map返给前端即可,这里需要注意的是,不论是发给微信的参数,还是发给前端让前端发给微信的参数的每一个字段名都需要跟微信要求的一致。
当前端拿到值后调用
uni.requestPayment({ provider: "wxpay", orderInfo: JSON.stringify(res), success(res) {}, fail(err) {} })
app即拉取微信支付弹窗付费。uni-app的api搜一下就能出来,res为后端返回的要传给微信的参数。
注意点
过程有点麻烦,拉支付弹窗很可能报-1的错误,几乎可以肯定是参数问题,不是后端传给微信的参数问题,就是前端传给微信的有问题,所以耐心点,肯定能做出来,收工。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/106615.html
摘要:移动应用想要调用微信的支付功能,需要到微信开发平台申请创建移动应用,微信会给,拿到到中打开一个项目,添加对应的。当前端拿到值后调用即拉取微信支付弹窗付费。的搜一下就能出来,为后端返回的要传给微信的参数。 移动应用想要调用微信的支付功能,需要到微信开发平台申请创建移动应用,微信会给appid,拿到appid到HBuilderX中打开一个uni-app项目,添加对应的sdk。 在微信开发...
摘要:当时下载了一个,下载了官方提供的示例教程。关于项目目录开发规范一定要遵守,直接通过官网学习即可。最后就是发布安卓包和苹果包了。我将自己做的第一个新闻列表新闻详情程序打包,安装到了安卓手机上测试了下,效果非常棒。 本人微信公众号:前端修炼之路,欢迎关注 背景介绍 大概在今年的十月份左右,我了解到Dcloud推出了uni-app。当时下载了一个Hbuilder X,下载了官方提供的hell...
阅读 2055·2021-11-24 10:28
阅读 1093·2021-10-12 10:12
阅读 3309·2021-09-22 15:21
阅读 662·2021-08-30 09:44
阅读 1867·2021-07-23 11:20
阅读 1124·2019-08-30 15:56
阅读 1721·2019-08-30 15:44
阅读 1467·2019-08-30 13:55