微信小程序获取设备IP&云开发支付报错spbill_create_ip empty

问题描述:在PC模拟器支付正常,但手机端统一下单接口unifiedOrder报错spbill_create_ip empty

unifiedOrder需要传入设备ip(定死随便写一个也行,如:127.0.0.1),但不填是会报错的。

解决思路,先是获取设备ip,然后传给云函数

1.在JS获取设备ip,请求url需要配置request域名

wx.request({
			url: 'http://ip-api.com/json',
			success:res=> {
				console.log("ip =>", res.data.query, res.data);
				this.setData({
					ip:res.data.query
				})
			}
		})

2.把ip传递给云函数

calls函数封装在下面

app.calls({
			name: "do_pay",
			data:{ip:this.data.ip},//传递ip
			success(res) {
				wx.hideLoading();
				console.log(res)
				if (res.code == 0) {
					that.setData(mode.paying)
					wx.requestPayment({
						...res.pay,
						success(res) {
							console.log('支付成功!')
							that.query_pay()
						},
						fail(err) {
							console.log('支付失败!')
							that.query_pay()
						}
					})
				} else if (res.code == 1) {
					wx.showModal({
						title: '下单失败',
						content: res.returnMsg,
						showCancel: false
					})
				}
			}
		})

//calls函数封装
 calls: function (obj) {
    console.log(obj)
    wx.cloud.callFunction({
      name: obj.name,
      data: obj.data ? obj.data : {},
      success(res) {
        console.log(res)

        obj.success(res.result);
      },
      fail(e) {
        console.log(e);
        wx.hideLoading()
        // wx.showModal({
        //   title:"网络错误",
        //   content:"你的操作请求由于网络或系统问题中断,请稍后再试"
        // })
      }
    })
  }

 3.云函数处接收传参并处理,云函数获取传参是event字段,那就是取event.ip

const res = await cloud.cloudPay.unifiedOrder({
		body: "测试微信支付功能",
		outTradeNo: uid,
		spbillCreateIp: JSON.parse(context.environment).WX_CLIENTIP?JSON.parse(context.environment).WX_CLIENTIP:event.ip,//重点是这句
		subMchId: sub_mch_id,
		totalFee: 1,
		envId: "work-01",
		functionName: "back_pay",
		tradeType: 'JSAPI'
	})
	if (res.resultCode != 'SUCCESS') {
		return {
			code: 1,
			returnMsg: res.returnMsg
		}
	}

至此解决问题

微信小程序开发交流QQ群:897729103

 本人微信:649231659,承接软件开发&学习交流

 

微信小程序开发学习视频(含免费课程):

(2022-30节免费)微信小程序开发-60W用户小程序实战基础+进阶--微信开发视频教程-移动开发-CSDN程序员研修院

H5网页-WebSocket(Workerman-PHP)即时通讯 --微信开发视频教程-移动开发-CSDN程序员研修院

从购买服务器(秒杀)配置宝塔LAMP环境(域名解析、免费SSL申请)L--其他视频教程-前端开发-CSDN程序员研修院

从购买服务器(秒杀)配置宝塔LAMP环境(域名解析、免费SSL申请)L--其他视频教程-前端开发-CSDN程序员研修院

微信小程序支付&退款&物流接口思路讲解(付前后台代码+数据库文件)--微信开发视频教程-移动开发-CSDN程序员研修院


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暴雨课堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值