微信app支付详解

阿西吧,弄了一个多小时,弄错了一点全没了,,,,,,,,啥破编辑器,醉了,重新来吧。

          咳咳,不要紧张,清理一下嗓子,在开始之前,我想说说,在完成之前,我本人就是一个菜鸟,很多地方我也不会弄呢,像我这种看开发文档就头疼的人做微信支付,对着官方文档整个人都飘了,本文就是针对一些不会做又看文档头疼的人来做的,相信只要会java的菜鸟看着都能做出来,第一次写博客,希望写点对大家有帮助的东西,  在感慨一下,其实很多程序我么您第一次做的时候都想的太复杂了,做完了之后就感觉其实也没个啥,当你们看完这篇文章完成微信支付的时候,相信第一次弄的童鞋们会和我一样有这种感慨。如果这篇文章帮助到你了,请给我赞一个夸夸我。

 废话不多说 直接开始正文

        微信支付,我们做java只是后台服务端,具体的实现流程官方写的我也看不懂,下边是我自己理解的

  客户确认商品点击支付—>后台提供前端调用的加签接口---->前端拿到后台加签的参数调起支付-->微信支付--->微信回调后台提供的回调接口    

这样微信支付就完成了,总体看起来,后台只需要做两件事

      1.给前端提供接口把订单进行加签在返还给前端

      2.给微信提供回调接口确认支付信息。

这样说的够明白了吧,相信大家已经明白后台需要做哪些事了吧。

在做微信支付之前,后台得获得3个重要的参数

微信官方文档地址:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1点击打开链接

1.appid  微信商户号   appkey


这几个参数都是微信支付必要的,最重要的,所以一定要根据文档找准确了,有了这几个参数,自己封装一下,下边要用到的时候自己能调用出来就行。注意,这几个参数极为重要,所以写的时候尽量封装严实一点,不然有可能有不安全因素。


封装完这几个参数以后,自己写一个供前端调用的接口,上代码:

	/**
	 * 微信app支付统一下单
	 * @param request
	 * @param orderNumber
	 * @param payMoney
	 * @param orderType
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(value="/APP/weixinPay",method={RequestMethod.POST,RequestMethod.GET})
	@ResponseBody
       /**
*  ResultState  是我自己封装的一个返回结果的对象,有需要的后边我会附代码,很简单的,毕竟我本人水平也不好。
*    在这里,订单加签我让前端穿了3个参数  orderNumber 订单编号 需要提供给微信的  payMoney 用户支付金额  需要提供给微信的 orderType订单类型 确定body字段的
*  这里大家可以根据自己的业务逻辑确定参数,没必要跟我的一致,返回结果也是,大家也可应自己定义的
*/
	public  ResultState weixinUnifiedOrder( HttpServletRequest request,
			 @RequestParam("orderNumber")String orderNumber,
	                 @RequestParam("payMoney")String payMoney,
	                 @RequestParam("orderType")String orderType
	                                       ) throws Exception{
		
//这里是我自己根据类型获取body的,大家可以自己定义
		Map<String, String> result = new HashMap<>();
		String body="";
		String orderCode = "";
		String total_fee = "";
		  if(orderType.equals("1")) {
			  body="ykcz";
		  }
		  if(orderType.equals("2")) {
			  body="E卡充值";
		  }
		  if(orderType.equals("3")) {
			  body="手机充值";
		  }
		  if(orderType.equals("4")) {
			  body="油卡购买";
		  }
		  Order order = orderService.selectbyordernumber(orderNumber);
		  if(order!=null) {
			  if(order.getPaymentType().equals("1")) {
				  orderCode=orderNumber;
				 Integer money=(int)(Double.parseDouble(payMoney)*100);
				  total_fee=String.valueOf(money);
				    String[] initValue = new String[3];
				    initValue[0] = orderCode;
				    initValue[1] = total_fee;
				    initValue[2] = body;
//微信支付需要传参使用者的ip,这里获取了一下,可以自己网上找,懒得找的下边我会附代码
				    String remoteAddr = GetIp.getRemoteAddr(request);
					String ip="";
					if (remoteAddr.length()>16) {
						String[] split = remoteAddr.split(",");
						for (int i = 0; i < split.length; i++) {
							ip=split[0];
						}
					}else{
						ip=remoteAddr;
					}
//这里就是把订单信息封装好了统一下单,微信会返回一个加完签的结果,只要判断一下结果的正确性就可以吧这个结果直接返回给前端,让前端去调起支付了
//我把上边提到的几个参数封装到了ConfigUtils里,这里你取你自己的             appid                          微信商户号     上边数组封装的值,自己对应  ip            微信回调地址(自己写的,上边提到的第二部)  APP,看文档,你是什么支付就传//什么,body 上边定义的字段,必传,加签的时候有body的解释,也可以自己看微信官方文档   自己封装的appkey         
					result=WeiXinPay.weixinUnifiedOrder(ConfigUtils.WXAPPappid, ConfigUtils.WXmch_id,initValue[0], initValue[1], ip, ConfigUtils.WXnotify_url, "APP", body, ConfigUtils.WXappkey);
					if(result.get("prepay_id")!=null){
						System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"+result);
//						//result是微信返回的字段
  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
微信小程序中的store是一个全局的状态管理工具,用于管理小程序中的数据,可实现不同页面之间的数据共享和状态同步。以下是store的详细介绍: 1. store的作用 在小程序中,不同页面之间的数据传递需要通过参数传递或者通过缓存进行,这种方式比较麻烦且容易出现数据不同步的问题。而store可以帮助我们解决这个问题,它可以将数据存储在全局中,然后在各个页面中进行访问和修改,从而实现数据的共享和同步。 2. store的使用 首先,在小程序的app.js中定义一个全局的store对象,用于存储数据: ``` App({ store: { userInfo: null, token: '' } }) ``` 然后在需要使用store的页面中,可以通过以下方式进行访问和修改store中的数据: ``` const app = getApp() // 获取store中的数据 const userInfo = app.store.userInfo // 修改store中的数据 app.store.token = 'xxx' ``` 3. store的优点 - 数据共享:store可以将数据存储在全局中,方便不同页面之间的数据共享。 - 状态同步:store中的数据在任意页面中被修改后,其他页面都可以立即感知到,实现了数据的状态同步。 - 维护简单:通过store可以将数据的管理和维护集中在一个地方,避免了代码的重复和维护成本的提高。 总的来说,store是一种非常实用的全局状态管理工具,可以方便地实现小程序中的数据共享和状态同步,提高开发效率和代码可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值