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

一、主要逻辑

1.支付可能需要哪些东西

  1. 支付的金额
  2. 订单的标题
  3. 订单号
  4. 订单的有效期
  5. 支付完成跳转的链接

2.支付

2.1.点击立即购买的时候,想后端发送ajax请求,请求中携带信息 的完整流程

ajax({
	url:xxxx,   =====》前端给后端传递的数据
	data:{
		用户id,
		****订单的金额
		****订单的商品系类
	},
	success:function(){  ===》后端给前端返回的数据
		if(data.xxx){
			data是一个对象,通常含有订单号
			然后跳转到确认订单页面
		}
		
	}

})

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

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

2.2.2 对接官方支付

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

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

三、在uni-app中的使用:

前端的所要做的就是:

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

注意问题:

  1. 订单的格式是后端返回来的,前端不需要进行任何处理,不管是哪种支付,订单的信息都是strng类习惯的
  2. 商户订单号 唯一 是针对整个项目,可能有多个交易记录表,订单号不能重复
主要代码:

简洁版的理解代码:

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;  
        }  
    });
经验分享 程序员 微信小程序 职场和发展