前端实现微信小程序信用分免押(也称微信分免押)

本文详细描述了如何在uniapp中实现微信支付分免押金功能,包括在微信商户平台申请、前端与后端交互、调用微信API以及处理成功和失败回调。同时提醒开发者注意微信支付分的验收规范和版本兼容问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近项目里对原本的充电宝小程序进行优化,要新增一个功能微信的支付分免押金版本和支付宝的信用分免押金版本,今天就先来一个uniapp版微信支付分免押保姆级别的流程。
1.首先进入微信商户平台(
微信支付 - 中国领先的第三方支付平台 | 微信支付提供安全快捷的支付方式在右上角的产品中心里

下拉找到

微信支付分模块后点击进入,按照要求的流程对应一步步申请,申请完后再关联到微信小程序appid

2. 之后申请成功后记得让测试人员扫码加入到微信支付分的体验者里面,否则不是开发者的话就算是微信小程序那里把用户加入到体验者中  没有在微信支付分体验者里面的话在正式上线微信支付分模块时是无法吊起微信支付分模块功能的!!!

(踩雷了这个问题)

3.然后就是正常的前端以及后端这部分业务流程在这里简单说明下

(1)就是用户点击下单事件后,前端先请求后端把需要组装的参数传过去,后端在接受这个参数调用微信的api 把它传给微信侧,生成微信支付分的一个订单 之后返回

(2)前端在拿到后端给的参数后,调用wx.openBusinessView这个方法(等下贴代码)唤起微信支付分的页面,(例如你的微信分多少是否够XXX的提示以及具体内容反正后面你就不用管了) 在这个方法下有成功success的回调以及失败fail的回调 如果用户正常操作完成成功开通就是成功的状态,微信分不够以及中途退出都是会走失败的回调 这里就要做业务处理了,我们的话就是失败的话就走原来的老流程 收押金使用

(3) 最后就是成功后拿到一些数据把它返回给后端,在自己平台里创建订单关联微信支付分订单

P.s. 如果再自己平台加入订单过程中因为某种原因失败了 记得调用微信支付分订单的删除接口,否则用户开通的微信支付分订单会一直在用户订单里

let params = {
		dv_id: xxxxx,
		mouth_num: xxxxx,
		openid: xxxxx,
		label: xxxxx,
		detail: xxxxx
	};
// 这一步调接口是获得要打开微信支付分的订单参数,上面的params没有具体的意义 仅供参考
$http.post('/xxxxx', params)
		.then((res) => {
			if (res.code == 1) {
				uni.hideLoading();
              //这一步是检测看看微信版本支不支持微信分模块 一些特别特别老的版本是不支持的
				if (wx.openBusinessView) {
					
					wx.openBusinessView({
						businessType: 'wxpayScoreUse',
						extraData: {
							mch_id: res.data.xxxxx,
							package: res.data.xxxxx,
							timestamp: res.data.xxxxx,
							nonce_str: res.data.xxxxx,
							sign_type: res.data.xxxxx,
							sign: res.data.xxxxx
						},
						success(wxres) {

							console.log("这里是成功的res", wxres)
							//这里处理逻辑 成功后会返回个query_id: 
                             // 具体是wxres.extraData.query_id 后端应该会需要
						},
						fail(res) {
							console.log("这里是失败的res", res)
							
							//dosomething
						},
						complete() {
							//dosomething
						}
					});
				} else {
					uni.hideLoading();
					console.log("需要升级")
					//引导用户升级微信版本
					uni.showToast({
						title: '当前版本不支持支付分支付,请更新到最新微信版本!',
						icon: 'none',
						duration: 2500
					});

				}



			} 
			
		})
		

文章的最后说一句,微信支付分验收贼拉事多,要严格按照微信支付分的样式规范以及要求的上传素材格式和细节,否则就会卡主 挺耽误事的 祝各位码农开发顺利,觉得有用的记得点个赞哈

### Spring Boot集成微信租赁服务 在Spring Boot项目中实现微信租借服务的整合涉及多个方面的工作,包括但不限于引入必要的依赖项、配置相关参数以及编写业务逻辑来处理金授权请求和回调通知。 #### 1. 引入所需依赖 为了能够调用微信支付所提供的API接口完成操作,在`pom.xml`文件内需加入官方提供的SDK库作为项目的外部依赖[^1]: ```xml <dependency> <groupId>com.github.wechatpay-apiv3</groupId> <artifactId>wechatpay-java</artifactId> <version>${latest.version}</version> </dependency> ``` 这里`${latest.version}`应替换为实际使用的最新版本号。 #### 2. 配置应用属性 编辑`application.yml`或`application.properties`文件以设置必要的环境变量,比如AppID, Merchant ID等基本信息。对于多商户场景下的支持,则可以通过自定义的方式加载不同的配置实例[^2]: ```yaml wechat: pay: appId: your-app-id-here mchId: merchant-id-for-this-instance keyPath: path/to/your/private/key.pem notifyUrl: http://example.com/callback ``` 当存在多个独立运营的商家时,可通过读取不同路径下的YAML文件或者数据库记录动态调整上述值。 #### 3. 编写核心功能代码 以下是用于发起金冻结请求的一个简化版示例方法: ```java import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder; // ... other imports ... @Service public class DepositService { private final WeChatConfig weChatConfig; @Autowired public DepositService(WeChatConfig weChatConfig){ this.weChatConfig = weChatConfig; } /** * 发起金冻结请求. */ public void freezeDeposit(String orderId, BigDecimal amount) throws Exception { HttpClient client = WechatPayHttpClientBuilder.create() .withMerchant(weChatConfig.getMchId(), weChatConfig.getSerialNumber(), new File(weChatConfig.getKeyPath())) .build(); String url = "https://api.mch.weixin.qq.com/v3/paying/deposit/freezing"; Map<String, Object> params = Maps.newHashMap(); params.put("out_trade_no", orderId); params.put("amount", JsonUtil.toJson(Maps.of( "total", amount.multiply(BigDecimal.valueOf(100)).intValue()))); HttpRequest request = HttpRequest.newBuilder(new URI(url)) .header(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON) .POST(HttpRequest.BodyPublishers.ofString(JsonUtil.toJson(params))) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); log.info("Response status code is {}", response.statusCode()); log.info("Response body is {}", response.body()); } } ``` 此段程序展示了如何利用Apache HTTP Client发送HTTP POST请求给微信服务器并传递必要参数以启动一次新的金锁定流程。注意这里的URL应当依据实际情况而定,并且可能还需要附加更多细节信息才能满足具体需求。 #### 4. 实现异步消息监听器 由于涉及到资金变动的安全性考量,通常会有一个单独的服务端点专门用来接收来自第三方平台的通知事件。下面是一个简单的控制器类片段,它负责解析传入的数据包并对其中的内容做出适当响应: ```java @RestController @RequestMapping("/callback") public class CallbackController { @PostMapping(value="/depositNotify", consumes="application/json;charset=UTF-8") public ResponseEntity<?> handleDepositNotification(@RequestBody String requestBody) { try{ // 解析JSON字符串... // 更新本地状态... return ResponseEntity.ok().body("{\"return_code\":\"SUCCESS\"}"); }catch(Exception e){ logger.error(e.getMessage(),e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); } } } ``` 该函数接受任何形式合法的JSON对象作为输入参数并通过返回特定格式的消息告知对方已成功接收到更新指令。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值