栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Cocos2d-x

uni-app中实现微信|支付宝支付

Cocos2d-x 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

uni-app中实现微信|支付宝支付

一、主要逻辑 1.支付可能需要哪些东西
  1. 支付的方式【微信】【支付宝】

  2. 支付的金额

  3. 订单的标题

  4. 订单号

  5. 订单的有效期

  6. 支付完成跳转的链接

2.支付 2.1.点击立即购买的时候,想后端发送ajax请求,请求中携带信息 的完整流程
ajax({
	url:'xxxx',   =====》前端给后端传递的数据
	data:{
		用户id,
		****订单的金额
		****订单的商品系类
	},
	success:function(){  ===》后端给前端返回的数据
		if(data.xxx){
			data是一个对象,通常含有订单号
			然后跳转到确认订单页面
		}
		
	}

})
2.2.确认订单页面===>点击提交订单===>选择支付方式(支付前也会发送请求)

2.2.1 再三确定用户选择的,和后端返回的方式是否一致

````
ajax({
	data:{  ===>前端给后端传递数据
		appid:'已经准备好的(通常是公司申请的id(用来收钱的)'
		订单号
		选择了那种支付方式
	},
	success:function(){
		1.后端会返回true,代表可以支付了
		2.还会返回一个标示(那种支付方式
		if(后端给前端传递的哪种支付方式===用户点击的哪种支付方式){
			//成立情况下,则开始发起支付的请求(这时候需要对接支付宝或微信支付官方了)
			发起支付	
		}
		
	}
})
````

2.2.2  对接官方支付

把得到的一些数据,传递给支付宝|微信支付官方

总结1:用户点击购买的时候不是立即调起支付的请求,而是向后端发送请求,然后后端返回订单号。返回订单号的意义就是当用户点击提交订单的时候,再将这个订单号传递给后端,可以知道该订单的状态,然后同时将用户选择 的支付方式告知后端,最后后端进行返回验证。最后根据后端返回的数据发送支付请求(对接官方)----这个支付请求一般是封装好的,你只需要传递一些数据即可

前端拿到订单号之后再向后端发送请求,

 

三、在uni-app中的使用:

前端的所要做的就是:

  1. 请求后端接口,获取到orderinfo(订单信息)根据官方的新这个订单信息是后端直接拼接的字符串,前端不需要其他操作
  2. 调用支付API:uni.requestPayMent
  3. 处理回调

注意问题:

  1. 订单的格式是后端返回来的,前端不需要进行任何处理,不管是哪种支付,订单的信息都是strng类习惯的
  2. uni-app里的mainfest.json里面的微信支付id,要添加在微信开发平台申请移动应用支付的appid,,因为可能会遇到好几个appid,因为这个原因弄了很长时间
  3. 在开放平台申请的移动用用支付时,应用包名可以自己起,应用签名需要按照微信的说明生成或者在线生成证书(证书可以是生成md5的签名),全部小写没有冒号----这一步类似于调用起高德地图中的配置
  4. 商户订单号 唯一 是针对整个项目,可能有多个交易记录表,订单号不能重复
//微信orderinfo格式   
 "{"appid":"xxxxxxxx","partnerid":"xxxxxxx","prepayid":"xxxxxxxxxxxxxxxx","timestamp":"1579779903","noncestr":"xxxxxxx","package":"Sign": "WXPay","sign":"xxxxxxxxxxxxxxxxxxxx"}"  


//支付宝orderinfo格式  
app_id=xxxxxxxxx&method=xxxxxxxxxx&format=JSON&charset=UTF-8&sign_type=RSA2&version=1.0&return_url=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx¬ify_url=xxxxx×tamp=xxxxxx&sign=xxxxxxx&biz_content=xxxxxxxxxx
主要代码:





简洁版的理解代码:

uni.requestPayment({  
    provider: 'alipay',  
    orderInfo: '后端返回的orderinfo字符串',  
    success: res => {  
        // 进入此回调说明支付成功  
    },  
    fail: err => {  
        const message = err.errMsg || '';  
        if (message.indexOf('[payment支付宝:62001]') !== -1) {  
            uni.showModal({  
                content: '您已取消支付。如有需要,您可在我的订单里重新付款。30分钟内有效。',  
                showCancel: false  
            });  
        } else {  
            uni.showModal({  
                content: '支付失败,原因为: ' + message,  
                showCancel: false  
            });  
        }  
    },  
    complete: () => {  
        this.submitting = false;  
        }  
    });

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/951912.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号