-
2018-08-21 10:44:31
java开发微信小程序支付接口
刚开始写微信小程序支付接口,一脸的懵逼
接口是什么?怎么写?
找了许多文档,都没有一个完整的解释,接口其实就是前端调用后台的一个请求(url),只要让前端把我们需要的参数绑定上去传递过来就行!!!(原来这就是所谓的写接口!)
理解了如何是接口,然后就开始写微信小程序的支付接口,搜了好多的文档,API 官方文档Api:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=1_1
最后找到一个大佬写的 见:https://blog.csdn.net/qq_36571139/article/details/77983745
刚开始即使全部复制,照着写一模一样也不能运行,一直出现签名失败,找了许多答案
也使用https://pay.weixin.qq.com/wiki/tools/signverify/微信官方提供的签名生成对应了一下 没毛病啊。
最后发现是Api密钥写成AppSecret了(想死的心都有了。。)
api密钥:微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置。改完了就一直提示openid is invalid出错,搜的许多都是说,让用户关注一下什么的,但是我的openid是自己写的,你能相信么!!! 刚写这个谁知道openid是前端传过来的一个参数!!!我们只需要用这个参数就行了
然后运行OK!(终于搞定了。。。)
更多相关内容 -
java微信小程序支付后台接口编写.rar
2021-06-18 12:37:501、根据调用API必须...由于微信支付要求传输方式必须采用https,如果已为Nginx服务器配置证书,只需再配置一下Nginx配置文件,在server参数下添加如下代码,让Nginx支持将.do和.jsp请求转发到后端Tomcat服务器上即可 -
微信小程序支付(微信支付)封装接口教程
2021-03-29 20:46:10微信小程序的支付和微信公众号的支付是类似的,对比起来还比公众号支付简单了一些,我们只需要调用微信的统一下单接口获取prepay_id之后我们在调用微信的支付即可。 今天我们来封装一般node的支付接口!!! 首先... -
详解微信小程序调用支付接口支付
2020-11-26 09:12:42在微信提供的接口文档中提供了一个微信支付接口,应该是直接调用这个接口就可以发起微信支付 文档路径:https://developers.weixin.qq.com/miniprogram/dev/api/api-pay.html#wxrequestpaymentobject 但是,当开始... -
微信小程序支付相关sdk
2019-04-25 11:04:45包含微信小程序支付请求以及通知等接口,有utils帮你组装请求报文,解析和封装xml -
微信小程序支付接口的使用
2021-01-27 12:27:492.微信小程序绑定商户号,并且商户号与小程序进行绑定。 接下来进行开发: 我们基于云开发搭建支付接口: 点击与开发,获取环境ID 接着在app,js中声明: 新建文件,命名为cloud,并且再改文件夹下新建一个Node.JS...使用微信支付首先得有两点:
1.微信小程序需要用企业身份进行注册。
2.微信小程序绑定商户号,并且商户号与小程序进行绑定。接下来进行开发:
我们基于云开发搭建支付接口:
点击与开发,获取环境ID
接着在app,js中声明:
新建文件,命名为cloud,并且再改文件夹下新建一个Node.JS函数
接着在云开发的全局设置中绑定商户号:
接下来可参考官网:统一下单接口
接着在云函数的index.js中填入如下信息:// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init({ env: "xxxxxx" }) // 云函数入口函数 exports.main = async (event, context) => { // const wxContext = cloud.getWXContext() const res = await cloud.cloudPay.unifiedOrder({ "body" : “XXXXXXX”,//主题信息 "nonceStr": “XXXXXXXXX”,//随机字符串 "outTradeNo" : “XXXXXXXXX”,//订单号 "spbillCreateIp" : "127.0.0.1",//返回ip "subMchId" : '1606008854',//商户号 "totalFee" : 1,//金额(分) "envId": "xxxxxx",//环境ID "functionName": "pay_cb"//回调云函数,可以先创建着,因为这是必须的 }) return res }
一定要记得除了金额以外都得使用字符串,不然会出现参数格式上的错误
接着右键cloud文件夹,点击上传并部署云端依赖(不上传node_modules)。打开云开发我们可以看见我们的代码已上传
接着在小程序的js代码中使用如下代码调用云代码:
// 小程序代码 wx.cloud.callFunction({ name: 'pay', // 云函数名 data: { // ... }, success: res => { const payment = res.result.payment //发起微信支付 wx.requestPayment({ timeStamp: res.result.payment.timeStamp, nonceStr: res.result.payment.nonceStr, package: res.result.payment.package, signType: 'MD5', paySign: res.result.payment.paySign, success (res) { console.log('pay success', res) }, fail (res) { console.error('pay fail', err) } }) }, fail: console.error, })
接下来微信支付接口搭建完毕:
如果对此接口有疑问的可以在下方留言 _
-
微信小程序调用微信支付接口的实现方法
2021-01-03 06:41:57前言:应项目要求,需要使用微信小程序做支付,写完后告知手续费太高方案不予通过(宝宝心里苦,但宝宝不说)。此次开发在因站在巨人的肩膀上顺利完成。 微信支付文档传送门:... -
C#,微信小程序支付接口
2020-10-20 16:12:19最近有个项目涉及微信小程序支付功能,这里小墨将一些需要注意的地方已经实现步骤记录下来,给有需要的朋友 1、前期准备 需要提前准备好【全局变量】 public static string _appid = "xxxxxxxx";//appid public ...最近有个项目涉及微信小程序支付功能,这里小墨将一些需要注意的地方已经实现步骤记录下来,给有需要的朋友
1、前期准备
需要提前准备好【全局变量】
public static string _appid = "xxxxxxxx";//appid public static string appsecret = "xxxxxxxxx";//小程序密钥 public static string _mch_id = "xxxxxx";//商户号 public static string _key = "xxxxxxxxxxxxxxx";//商户平台设置的密钥key
这里可以找公司要,一般会提供,自己开发的话可以去微信公众平台申请,入口: https://mp.weixin.qq.com
//模拟wx统一下单 openid(前台获取) public string getda(dynamic _) { wx_parameter req = this.Bind<wx_parameter>();//这里是小程序传递的参数 //支付费用 double total_fee =double.Parse(req.total_fee);//支付金额 //获取openid var authorizeList = xx.GetList(new { applet_token = token }.ToJson()).ToList(); var user = xxx.GetList(new { open_id = authorizeList[0].openid }.ToJson()).ToList()[0]; string openid = user.open_id; //获取openid的方法可以百度下,https://www.cnblogs.com/dujian123/p/11184781.html return Getprepay_id(_appid, "shanghaifendian", "monixiaofei", _mch_id, GetRandomString(30), "http://www.weixin.qq.com/wxpay/pay.php", openid, getRandomTime(), total_fee); }
获取openid:https://www.cnblogs.com/dujian123/p/11184781.html
/// <summary> /// 微信统一下单获取prepay_id & 再次签名返回数据 /// 屡一下思路:通过参数请求统一下单的链接,返回的xml解析后,判断成功后,进行二次签名,最终返回给小程序前端。 /// </summary> /// <param name="appid">appid</param> /// <param name="attach">附加数据(描述)</param> /// <param name="body">商品描述</param> /// <param name="mch_id">商户号</param> /// <param name="nonce_str">随机字符串,不长于32位。 </param> /// <param name="notify_url">通知地址</param> /// <param name="openid">openid</param> /// <param name="bookingNo">商户订单号</param> /// <param name="total_fee">支付金额单位为(分)比如一元等于100分</param> /// <returns></returns> private static string Getprepay_id(string appid, string attach, string body, string mch_id, string nonce_str, string notify_url, string openid, string bookingNo, double total_fee) { var url = "https://api.mch.weixin.qq.com/pay/unifiedorder";//微信统一下单请求地址 string strA = "appid=" + appid + "&attach=" + attach + "&body=" + body + "&mch_id=" + mch_id + "&nonce_str=" + nonce_str + "¬ify_url=" + notify_url + "&openid=" + openid + "&out_trade_no=" + bookingNo + "&spbill_create_ip=61.50.221.43&total_fee=" + total_fee + "&trade_type=JSAPI"; string strk = strA + "&key=" + _key; //key为商户平台设置的密钥key(假) string strMD5 = MD5(strk).ToUpper();//MD5签名 //string strHash=HmacSHA256("sha256",strmd5).ToUpper(); //签名方式只需一种(MD5 或 HmacSHA256 【支付文档需仔细看】) //签名 //终端ip string spbill_create_ip = getspbill_create_ip(); var formData = "<xml>"; formData += "<appid>" + appid + "</appid>";//appid formData += "<attach>" + attach + "</attach>"; //附加数据(描述) formData += "<body>" + body + "</body>";//商品描述 formData += "<mch_id>" + mch_id + "</mch_id>";//商户号 formData += "<nonce_str>" + nonce_str + "</nonce_str>";//随机字符串,不长于32位。 formData += "<notify_url>" + notify_url + "</notify_url>";//通知地址 formData += "<openid>" + openid + "</openid>";//openid formData += "<out_trade_no>" + bookingNo + "</out_trade_no>";//商户订单号 --待 formData += "<spbill_create_ip>"+ spbill_create_ip + "</spbill_create_ip>";//终端IP --用户ip formData += "<total_fee>" + Convert.ToInt32(total_fee * 100).ToString() + "</total_fee>";//支付金额单位为(分) formData += "<trade_type>JSAPI</trade_type>";//交易类型(JSAPI--公众号支付) formData += "<sign>" + strMD5 + "</sign>"; //签名 formData += "</xml>"; //请求数据 var getdata = sendPost(url, formData); //获取xml数据 XmlDocument doc = new XmlDocument(); doc.LoadXml(getdata); wx w = new wx(); if (doc != null) { XmlNode xmlNode = doc["xml"]; if (xmlNode["return_code"].InnerText.Equals("SUCCESS") && xmlNode["result_code"].InnerText.Equals("SUCCESS")) { #region 再次签名 //时间戳 string _time = getTime().ToString(); //prepay_id string prepay_id = xmlNode["prepay_id"].InnerText; //再次签名返回数据至小程序 string strB = "appId=" + appid + "&nonceStr=" + nonce_str + "&package=prepay_id=" + prepay_id + "&signType=MD5&timeStamp=" + _time + "&key=" + _key; w.Result = "Success"; w.errmsg = "统一下单成功"; w.timeStamp = _time; w.nonceStr = nonce_str; w.package = "prepay_id=" + prepay_id; w.paySign = MD5(strB).ToUpper(); ; w.signType = "MD5"; //向小程序返回json数据 #endregion } else { w.Result = "Error"; w.errmsg = xmlNode["return_msg"].InnerText; } } else { w.Result = "Error"; w.errmsg ="统一下单失败"; } return JsonConvert.SerializeObject(w); }
生成随机字符串以及签名加密的方法可以参考下面
/// <summary> /// 生成随机串 /// </summary> /// <param name="length">字符串长度</param> /// <returns></returns> private static string GetRandomString(int length) { const string key = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"; if (length< 1) return string.Empty; Random rnd = new Random(); byte[] buffer = new byte[8]; ulong bit = 31; ulong result = 0; int index = 0; StringBuilder sb = new StringBuilder((length / 5 + 1) * 5); while (sb.Length<length) { rnd.NextBytes(buffer); buffer[5] = buffer[6] = buffer[7] = 0x00; result = BitConverter.ToUInt64(buffer, 0); while (result > 0 && sb.Length<length) { index = (int) (bit & result); sb.Append(key[index]); result = result >> 5; } } return sb.ToString(); } /// <summary> /// 获取终端ip,访问者ip /// </summary> /// <param name="_"></param> /// <returns></returns> private static string getspbill_create_ip() { string url = "https://pv.sohu.com/cityjson?ie=utf-8"; using (var httpClient = new HttpClient()) { httpClient.DefaultRequestHeaders.Add("Accept", "application/json");//设置请求头 var url1 = new Uri(url); // response var response = httpClient.GetAsync(url1).Result; var data = response.Content.ReadAsStringAsync().Result.Trim('"'); data = data.TrimEnd(';').Split('=')[1].ToString(); JObject obj = (JObject)JsonConvert.DeserializeObject(data); string spbill_create_ip = obj["cip"].ToString(); return spbill_create_ip; } } /// <summary> /// 获取时间戳,时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间 /// </summary> /// <returns></returns> private static long getTime() { TimeSpan cha = (DateTime.Now - TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1))); long t = (long)cha.TotalSeconds; return t; } /// <summary> /// MD5签名方法 /// </summary> /// <param name="inputText">加密参数</param> /// <returns></returns> private static string MD5(string inputText) { MD5 md5 = new MD5CryptoServiceProvider(); byte[] fromData = System.Text.Encoding.UTF8.GetBytes(inputText); byte[] targetData = md5.ComputeHash(fromData); string byte2String = null; for (int i = 0; i<targetData.Length; i++) { byte2String += targetData[i].ToString("x2"); } return byte2String; } /// <summary> /// HMAC-SHA256签名方式 /// </summary> /// <param name="message"></param> /// <param name="secret"></param> /// <returns></returns> private static string HmacSHA256(string message, string secret) { secret = secret ?? ""; var encoding = new System.Text.UTF8Encoding(); byte[] keyByte = encoding.GetBytes(secret); byte[] messageBytes = encoding.GetBytes(message); using (var hmacsha256 = new HMACSHA256(keyByte)) { byte[] hashmessage = hmacsha256.ComputeHash(messageBytes); return Convert.ToBase64String(hashmessage); } } /// <summary> /// wx统一下单请求数据 /// </summary> /// <param name="URL">请求地址</param> /// <param name="urlArgs">参数</param> /// <returns></returns> private static string sendPost(string URL, string urlArgs) { System.Net.WebClient wCient = new System.Net.WebClient(); wCient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); //byte[] postData = System.Text.Encoding.ASCII.GetBytes(urlArgs); 如果微信签名中有中文会签名失败 byte[] postData = System.Text.Encoding.UTF8.GetBytes(urlArgs); byte[] responseData = wCient.UploadData(URL, "POST", postData); string returnStr = System.Text.Encoding.UTF8.GetString(responseData);//返回接受的数据 return returnStr; } /// <summary> /// 生成订单号【这里可以用一个订单表记录订单号】 /// </summary> /// <returns></returns> private static string getRandomTime() { Random rd = new Random();//用于生成随机数 string DateStr = DateTime.Now.ToString("yyyyMMddHHmmssMM");//日期 string str = DateStr + rd.Next(10000).ToString().PadLeft(4, '0');//带日期的随机数 return str; }
下面是所需要的实体类:
/// <summary> /// 小程序调用后台 /// </summary> public class wx_parameter { /// <summary> /// 支付费用 /// </summary> public string total_fee { get; set; } } /// <summary> /// 返回给小程序 /// </summary> public class wx { /// <summary> /// 返回结果【Success/Error】 /// </summary> public string Result { get; set; } /// <summary> /// 描述 /// </summary> public string errmsg { get; set; } /// <summary> /// 时间戳 /// </summary> public string timeStamp { get;set;} /// <summary> /// 随机数 /// </summary> public string nonceStr { get; set; } /// <summary> /// 同一下单接口的prepay_id参数 /// </summary> public string package { get; set; } /// <summary> /// 第二次签名 /// </summary> public string paySign { get; set; } /// <summary> /// 签名方式 /// </summary> public string signType { get; set; } }
最后需要做一个回调,用于支付成功后修改订单号状态等等(根据自己业务需求来)
下面是一些参考文档:
《微信官方文档:支付部分》
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=3_1
《微信官方文档:统一支付》
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1
有兴趣的可以关注“墨水直达”,里面有许多免费的编程资料可以领取哦~
-
使用银联商务实现微信小程序支付
2021-03-29 16:57:251:银联商务的小程序支付接口地址: https://qr.chinaums.com/netpay-route-server/api/ 2:主要参数说明: (1):msgSrc 消息来源:如:WWW.TEST.COM (2):msgType 消息类型:微信小程序支付参数固定为:wx.... -
微信小程序支付以及退款功能(超详细)
2020-12-21 13:52:57Springboot整合微信小程序支付第一步:第二步:导入微信支付的依赖第三步:在springboot核心配置文件中配置参数第四步:创建配置类WxPayAppConfig第五步:支付方法service层方法Controller层方法 第一步: 先准备好 ... -
Java-Spring Boot 微信小程序支付模块完整版
2020-07-03 16:22:351.在小程序中获取用户的登录信息,成功后可以获取到用户的code值 2.在用户自己的服务端请求微信获取用户openid接口,成功后可以获取用户的openid值 ...4.在微信小程序中支付订单,最终实现微信的支付功能 -
微信小程序支付(微信支付)
2021-03-29 21:05:02要想支付成功 首先 你们的小程序已经申通了微信支付 并且通过审核 (此图片来源于网络,如有侵权,请联系删除! ) MCH_ID 是商户ID MCH_SIGN_KEY 是签名加密用的 (此图片来源于网络,如有侵权,请联系删除! ) ... -
thinkphp5微信支付小程序支付封装
2018-07-10 09:05:43thinkphp5微信支付封装的程序,用起来非常方便。直接调用即可。 -
java微信小程序支付
2018-06-27 10:54:40java开发微信小程序的支付代码,避免开发小程序踩坑。 -
微信小程序支付(1)Uni-app平台API接口
2021-08-31 09:39:36微信小程序版 注:- 某些平台不能提交简单demo,故补充了一些其他功能;hello uni-app示例代码可从github获取。 实际运行效果如下: uni.requestPayment(OBJECT) 支付 uni.requestPaymen...uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
快速体验
微信小程序版
注:
- 某些平台不能提交简单demo,故补充了一些其他功能;hello uni-app示例代码可从github获取。实际运行效果如下:
uni.requestPayment(OBJECT)
支付
uni.requestPayment是一个统一各平台的客户端支付API,不管是在某家小程序还是在App中,客户端均使用本API调用支付。
本API运行在各端时,会自动转换为各端的原生支付调用API。
注意支付不仅仅需要客户端的开发,还需要服务端开发。虽然客户端API统一了,但各平台的支付申请开通、配置回填仍然需要看各个平台本身的支付文档。
比如微信有App支付、小程序支付、H5支付等不同的申请入口和使用流程,对应到uni-app,在App端要申请微信的App支付,而小程序端则申请微信的小程序支付。
如果服务端使用uniCloud,那么官方提供了uniPay云端统一支付服务,把App、微信小程序、支付宝小程序里的服务端支付开发进行了统一的封装。
前端统一的uni.requestPayment和云端统一的uniPay搭配,可以极大提升支付业务的开发效率,强烈推荐给开发者使用。uniPay的文档另见:https://uniapp.dcloud.io/uniCloud/unipay
平台差异说明
App
H5
微信小程序
支付宝小程序
百度小程序
字节跳动小程序
QQ小程序
√
√
√
√
√
√
OBJECT 参数说明
参数名
类型
必填
说明
平台差异说明
provider
String
是
服务提供商,通过 uni.getProvider 获取。
orderInfo
String/Object
是
订单数据,注意事项
App、支付宝小程序、百度小程序、字节跳动小程序
timeStamp
String
微信小程序必填
时间戳从1970年1月1日至今的秒数,即当前的时间。
微信小程序
nonceStr
String
微信小程序必填
随机字符串,长度为32个字符以下。
微信小程序
package
String
微信小程序必填
统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=xx。
微信小程序
signType
String
微信小程序必填
签名算法,暂支持 MD5。
微信小程序
paySign
String
微信小程序必填
签名,具体签名方案参见 微信小程序支付文档
微信小程序
bannedChannels
Array<String>
否
需要隐藏的支付方式,详见 百度小程序支付文档
百度小程序
service
Number
字节跳动小程序必填
固定值:1(拉起小程序收银台)开发者如果不希望使用字节跳动小程序收银台,service设置为3/4时,可以直接拉起微信/支付宝进行支付:service=3: 微信API支付,不拉起小程序收银台;service=4: 支付宝API支付,不拉起小程序收银台。其中service=3、4,仅在1.35.0.1+基础库(头条743+)支持
字节跳动小程序
_debug
Number
否
仅限调试用,上线前去掉该参数。_debug=1时,微信支付期间可以看到中间报错信息,方便调试
字节跳动小程序
getOrderStatus
Function
字节跳动小程序必填
商户前端实现的查询支付订单状态方法(该方法需要返回个Promise对象)。 service=3、4时不需要传。
字节跳动小程序
success
Function
否
接口调用成功的回调
fail
Function
否
接口调用失败的回调函数
complete
Function
否
接口调用结束的回调函数(调用成功、失败都会执行)
- APP端,如果你的应用在用户完成支付后;立即给支付的用户push消息通知。会与前端支付回调相互冲突,请延迟执行推送。
- 字节跳动小程序支付接口调整使用时请注意发起头条支付
- 百度小程序的 orderInfo 为 Object 类型,详细的数据结构,参考:百度收银台支付。
- 支付宝小程序的 orderInfo(支付宝的规范为 tradeNO) 为 String 类型,表示支付宝交易号。
- 字节跳动小程序的 orderInfo 为 Object 类型,详见:发起头条支付
- 由于头条新版支付接口要求版本较高,在不支持新版支付接口的情况下仍会对应旧版支付接口,此时 orderInfo 对应字节跳动小程序 data, 详见:头条支付旧版接口。用户可以使用 tt.pay 判断是否支持新版接口。另外需要注意字节跳动小程序在1.35.0+版本基础库支持了 canIUse ,在1.19.4+版本基础库支持了新版支付接口 tt.pay ,所以应避免使用 canIUse 判断是否为新版接口。
- App端,支付宝支付 orderInfo 为 String 类型。
- App端,微信支付 orderInfo 为 Object 类型。
- App端,苹果应用内支付 orderInfo 为Object 类型,{productid: 'productid'}。
具体可参考微信官方文档: 移动应用开发
注意微信的App支付、小程序支付、H5支付是不同的体系。微信小程序支付在 微信商户平台 申请支付时,选择公众号支付;普通浏览器里也可以调起微信进行支付,这个在微信叫做H5支付,此功能未开放给普通开发者,需向微信单独申请,详见
- 在manifest.json - App模块权限选择 中勾选 payment(支付)
- 在 manifest.json - App SDK配置 中,勾选需要的支付平台,目前有微信支付、支付宝支付、苹果应用内支付(IAP),其中微信支付需要填写从微信开放平台获取的AppID
- 这些配置需要打包生效,真机运行仍然是HBuilder基座的设置,可使用自定义基座调试。离线打包请参考离线打包文档在原生工程中配置。
- 配置并打包后,通过uni.getProvider可以得到配置的结果列表,注意这里返回的是manifest配置的,与手机端是否安装微信、支付宝无关。
如果手机端未安装支付宝,调用时会启动支付宝的wap页面登录,如果已安装相应客户端,会启动其客户端登录。
示例
微信小程序支付
// 仅作为示例,非真实参数信息。
uni.requestPayment({
provider: 'wxpay',
timeStamp: String(Date.now()),
nonceStr: 'A1B2C3D4E5',
package: 'prepay_id=wx20180101abcdefg',
signType: 'MD5',
paySign: '',
success: function (res) {
console.log('success:' + JSON.stringify(res));
},
fail: function (err) {
console.log('fail:' + JSON.stringify(err));
}});
-
微信小程序调用支付接口支付
2020-09-26 21:44:30微信小程序调用支付接口支付 我前段时间做微信支付,遇到了很多坑,网上也没有讲解的特别明白的,通过借鉴各路人才的经验,最后也完成了,网上有很多讲解,我在这只讲一些注意点和解决的方法。我就讲讲我从完全懵到... -
微信小程序微信支付接入开发实例详解
2020-12-02 14:24:55本文主要讲述微信小程序接入微信支付开发过程中遇到的坑,分为两大块,小程序端和后台接口封装。本文主要内容如下: 一、后台接口封装; 二、小程序端整合; 三、总结 一、后台接口封装 本文介绍基于ThinkPHP5进行... -
微信小程序支付接口对接总结
2019-04-25 15:33:37现就前端而言,总结一下开发微信小程序支付功能的流程。 1.调用预支付接口( openid、 userid这两个必传,以及一些业务参数在这个时候也传到后台),得到交易码out_trade_no 和预支付码prepay_id; 2.发送预支付码换回... -
thinkphp5微信小程序支付的接口详细过程
2021-03-03 14:20:13} } service\Pay: 在引入的微信小程序支付的包的时候,在这里它关联了剩下的包,因此在别的地方需要引入的时候只需要引入第一个包即可。微信小程序官方文档里有。 //需要引入微信小程序的支付的包 //引入微信的API... -
微信小程序-微信支付和微信退款(Java后台)
2020-12-22 03:27:37微信支付流程 都是我自己工作中开发的,亲测可用,不喜勿喷。 controller中我是这么写的,你们需要根据自己的业务需求改动。ResponseBean是我自己封装的,你们可以改成你们想要的形式。` /** * 微信统一下单接口 ... -
springboot对接微信小程序支付以及回调详细代码
2020-10-09 12:03:07springboot对接微信小程序支付以及回调详细代码 非常详细,完整流程代码 拿走不谢 亲测可用 -
微信小程序支付及退款流程详解
2021-01-19 15:48:27首先说明一下,微信小程序支付的主要逻辑集中在后端,前端只需携带支付所需的数据请求后端接口然后根据返回结果做相应成功失败处理即可。我在后端使用的是php,当然在这篇博客里我不打算贴一堆代码来说明支付的具体... -
微信小程序调用微信支付接口总结与实现(java)
2021-01-29 09:12:33小程序appid,商户id,商户密钥(key),付款用户的(openid) 申请接入微信商户地址:https://pay.weixin.qq.com/static/applyment_guide/applyment_detail_miniapp.shtml 2,开放模式介绍 在进行微信支付开发之前,... -
详解微信小程序支付流程与梳理
2020-12-03 17:47:38微信小程序的商户系统一般是以接口的形式开发的,小程序通过调用与后端约定好的接口进行参数的传递以及数据的接收。在小程序支付这块,还需要跟微信服务器进行交互。过程大致是这样的: 一.小程序调用登录接口获取... -
微信小程序调用微信支付接口
2019-08-22 16:19:30项目做的小程序,需要用到小程序支付,在网上找了很多资料,官网Api也看了很久,感觉有点坑,网上都说微信api写的不是很清楚,我也有点这种感觉。废话不多说。 首先你必须要有 mch_id 商户号id ,个人是不能够... -
微信小程序对接微信支付详细教程
2022-04-09 14:58:21小程序 微信支付官方文档 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_11&index=2 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_0.shtml 前提 在进行对接微信支付... -
微信小程序支付功能 php后台对接完整代码分享
2021-01-03 09:03:38微信小程序支付,php后台对接完整代码,全是干货呀,拿过来可以直接使用。小程序在调起微信支付之前需要5个参数,这时候就需要携带code向后台请求,然后后台根据code获取openid 再进行服务器之间的。 一、准备工作 1... -
微信小程序接入微信支付(三):小程序端调用支付接口
2020-11-09 21:19:42微信小程序调用支付接口官方文档:...微信小程序接入微信支付(三):小程序端调用支付接口 微信小程序接入微信支付(四):接收支付结果通知与沙箱测试 -
uni-app 微信小程序支付功能
2022-03-02 18:00:46前端提交订单把商品信息传到后端,后端生成订单,然后调用统一下单接口返回uni.requestPayment 所需要的参数