当前位置: 首页 > backend >正文

微信支付(小程序)使用通联扣款通道

微信支付(小程序)使用通联扣款通道

  • 前言
  • 具体步骤

前言

之前公司的小程序的微信支付使用的是微信自己的扣款通道,现在觉得费率太高想更换,通联那边工作人员说是可以支持,但是问他怎么跟现有微信支付打通确说不清楚,网上也找不到详细的流程,折腾了几天才弄好,写个流程帮助大家节省时间吧

具体步骤

1.通联收银宝开户(略)
链接: 收银宝平台
2.获取分配的appid和key
点击获取参数,这个后面下单接口要用的,显示需要输入交易密码
在这里插入图片描述
3.配置微信APPID关联
进入 产品中心-微信支付设置 ,添加小程序APPID
需要输入交易密码,然后会跳转到新页面确认

ps:我用的谷歌页面不跳转,找他们工作人员登录才加好的,加好以后APPID会显示在输入框下方
在这里插入图片描述
支付授权目录也配置一下,填写自己小程序的后台地址
支付授权
4.开发预下单接口
链接: 收银宝开发者中心
使用收付宝提供的API
在这里插入图片描述
点击统一下单,按照对应的API进行开发,该页有java的demo提供参考
代码如下

@Override
public ResponseJson wxPayTL(Map<String, Object> paraMap, int cmd) {

	ResponseJson responseJson = new ResponseJson();String openid = paraMap.get("OPEN_ID").toString();if (openid == null) {return responseJson.getResponseJson(ErrorCMD.DB_NOT_DATA, cmd, "OPEN_ID不能为空", null);}// 支付金额Object objtotal_fee = paraMap.get("total_fee");if (objtotal_fee == null) {return responseJson.getResponseJson(ErrorCMD.DB_NOT_DATA, cmd, "total_fee不能为空", null);}BigDecimal big = new BigDecimal(objtotal_fee.toString());big = big.multiply(new BigDecimal(100));NumberFormat nf = NumberFormat.getNumberInstance();String total_fee = String.valueOf(nf.format(big)).replaceAll(",", "");try {HttpConnectionUtil http = new HttpConnectionUtil(tlConfig.getApiurl() + "/pay");http.init();TreeMap<String, String> params = new TreeMap<String, String>();params.put("cusid", tlConfig.getCusid());params.put("appid", tlConfig.getAppid());params.put("version", "11");params.put("trxamt", total_fee);params.put("reqsn", String.valueOf(System.currentTimeMillis()));params.put("paytype", "W06");params.put("randomstr", SybUtil.getValidatecode(8));params.put("body", "---支付");params.put("remark", "");params.put("acct", openid);params.put("authcode", "123");params.put("notify_url", "");params.put("limit_pay", "");params.put("idno", "");params.put("truename", "");params.put("asinfo", "");params.put("sub_appid",Global.getConfig("pay.appid"));//小程序appidparams.put("sign", SybUtil.sign(params, tlConfig.getAppkey()));logger.info("通联预下单发送报文:"+params);byte[] bys = http.postParams(params, true);String result = new String(bys, "UTF-8");logger.info("通联预下单返回报文:"+result);Map<String, String> map = handleResult(result,tlConfig.getAppkey());Map<String, Object> response = new HashMap<String, Object>();if ("SUCCESS".equals(map.get("retcode")) && "0000".equals(map.get("trxstatus"))) {JSONObject payinfo = JSONObject.fromObject(map.get("payinfo"));response.put("nonceStr", payinfo.get("nonceStr"));response.put("package", payinfo.get("package"));response.put("timeStamp", payinfo.get("timeStamp"));// 这边要将返回的时间戳转化成字符串,不然小程序端调用wx.requestPayment方法会报签名错误response.put("paySign", payinfo.get("paySign"));response.put("signType", payinfo.get("signType"));//System.out.println(response);return responseJson.getResponseJson(ErrorCMD.DB_SUCCESS, cmd, ErrorCMD.SUCCESS_MESSAGE, response);}responseJson = new ResponseJson(ErrorCMD.DB_ERROR, cmd, "支付异常");} catch (Exception e) {e.printStackTrace();logger.error("通联支付异常",e);responseJson = new ResponseJson(ErrorCMD.ERROR, cmd, "支付异常");}return responseJson;
}

代码中的配置参数注意修改,SybUtil 在demo里面也有
在这里插入图片描述

5.调用微信支付
调用下单接口以后,拿到的返回报文里面有个payinfo,里面的参数是微信支付需要的
在这里插入图片描述
小程序端拿到数据以后使用wx.requestPayment唤起微信支付组件
在这里插入图片描述
常见错误:sub_appid与sub_mch_id不匹配
原因:小程序的APPID没有在收银宝的管理平台配置好

至此任务完成,如果需要开发退款的话需要联系通联的工作人员填写变更表和风险承诺函,不然接口会返回失败

http://www.xdnf.cn/news/11724.html

相关文章:

  • Windows系统丢失olepro32.dll文件导致程序异常的问题
  • Android开发无线调试工具adbwireless的使用简介(附AirADB)
  • unity网络实战开发(丛林战争)-正式开发阶段(016-数据库设计以及登录处理)
  • 终于解决了session问题,总结!
  • echarts如何在json地图上设置多种颜色的点位和自定义背景弹出框
  • 聊天记录2.0.db
  • 125款七夕情人节程序员专属表白网站【全网最全】HTML+CSS+JS
  • 推荐一款强大的视频播放器:恒星播放器
  • 财智V6.0(完美破解序列号特别版)
  • 中秋祝福代码,中秋快乐代码,采用H5制作的中秋动画祝福
  • 卡巴斯基病毒库离线更新教程(转)
  • 龙之崛起修改器V1.0版
  • 国产硬件防火墙横向对比
  • SQL Server 2005 dev 开发板 版本说明
  • 自己动手做博客之日志管理-5.3 管理日志列表
  • 【Vue】 第十六部分 插槽(默认插槽、具名插槽、作用域插槽)
  • GBA.js 在浏览器中的Game Boy Advance模拟器搭建指南
  • Data,computed,watch的作用?
  • 封面设计软件有什么?不容错过的五款封面设计软件
  • Android笔记之 TTS中文发音
  • 二本学渣考研失败,docker制作镜像教程
  • 仪表放大器放大倍数分析-运算放大器
  • vector的常见用法
  • 电脑黑屏问题的4种解决方法,两分钟轻松掌握
  • 计算机宽带拨号配置,宽带拨号上网怎么设置路由器
  • 关于OleDbCommand中操作数据库的几种方法的区别
  • 解决Warning: Cannot modify header information - headers already sent by问题
  • 【STM32】 DMA原理,步骤超细详解,一文看懂DMA
  • 鸿蒙生死印是谁的,逆天邪神:鸿蒙印的器灵还存在,或许云澈将知道些关于远古的秘密...
  • 蛙灵桌面