支付宝小程序 组件 web-view h5交互

本文介绍了支付宝小程序中组件的使用,包括子组件与父组件的通信,以及如何通过`web-view`与H5页面进行交互。通过示例展示了`index-page`组件的结构,`onFun`方法的调用,以及H5如何通过`my.postMessage`传递消息给小程序,并在小程序中接收并处理这些消息。

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

目录结构

/component
    /index-page
        /index.js
        /index.acss
        /index.axml
        /index.json
/pages
    /index
        /index.acss
        /index.axml
        /index.js
        /index.json
    /web
        /web.acss
        /web.axml
        /web.js
        /web.json

支付宝小程序

/pages/index/index.axml

<cny-index-page id="{{id}}"  arr="{{arr}}" ref="saveRef" onFun="onFun"   /> 

/pages/index/index.js

Page({
   data: {
    id:'',
    arr:[],
    
  },
  onLoad(query) {
     
     // 调用子组件方法
     this.ref.music_click();


     // 子组件的变量只能通过xml进行传递

  },
  onReady() {
    // 页面加载完成
  },
  onShow() {
    // 页面显示
    
  },
  onHide() {
    // 页面隐藏
  },
  onUnload() {
    // 页面被关闭
  },
  onTitleClick() {
    // 标题被点击
  },
  onPullDownRefresh() {
    
  },
  onReachBottom() {
    // 页面被拉到底部
  },
  onShareAppMessage() {
    // 返回自定义分享信息
    
  },
  onFun(){

      // 子调用父
  },
  // 父调用子
  saveRef(ref){
      // 将ref存起来,在想要调用的地方使用
      this.ref = ref
  },

});

/pages/index/index.json

{
 
  "usingComponents": {
    "index-page": "/component/index-page/index"    // 引入组件
  }
}

组件

 /component/index-page/index.axml

<view></view>

 /component/index-page/index.js

Component({

	/**
	 * 组件的初始数据
	 */
	data: {
		

	},
	// 父传子组件 给值默认值
	props: {
		id: Number, // 活动ID
		arr: Object, // 加载数据
		onFun: () => {}, // 用户定位
	},
    // 在组件创建时触发
	onInit() {
        // 页面初始化加载
        
        // 使用父级变量
        this.props.id

        // 使用父级方法
        this.props.onFun()

	},
    // 自定义组件首次渲染完毕后的回调
	didMount() {
	     
	},
    // 自定义组件被卸载后的回调
	didUnmount() {

	},

	/**
	 * 组件的方法列表
	 */
	methods: {
        // 播放音乐
        music_click(){
            
        }

	}
})

  /component/index-page/index.json

{
  "allowsBounceVertical": "NO"
}

web-view

/pages/web/web.axml

<web-view src="{{weburl}}"onMessage="onmessage">
</web-view>

/pages/web/web.js

Page({
	data: {
		weburl: '',

	},
	onLoad(options) {

	},
	//监听来自于h5页面的消息  
	onmessage(e) {
		// e.detail.变量
		var music = e.detail.music;
		// 获取所有页面
		var pages = getCurrentPages();
		for (var i = 0; i < pages.length; ++i) {
			var currentPage = pages[i];;
			let currentPage_url = currentPage.route;
			if (currentPage_url == 'pages/theme/theme') {
				// 操作该页面的数据
				currentPage.onFun()

				if(music == 'music'){
				    // 操作该页面子组件的方法
				    currentPage.ref.music_click();
                }

				break;
			}

		}

	},
});

h5

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>h5 向支付宝小程序传参数</title>
		<!-- 引入支付宝js -->
		<script type="text/javascript" src="https://appx/web-view.min.js" rel="external nofollow"  ></script>
		<script>
			// 保留当前页面,跳转到新页面。
			my.navigateTo({
				url: '/pages/theme/theme?rid=2941&lid='+vifnn.lid+'&fromname=mini' //路径可以使用相对路径或绝对路径的方式进行传递
			})
			
			// 是关闭当前页面,返回上一级或多级页面的 API。
			my.navigateBack()
			
			// 传参数
			my.postMessage({
				music: 'music',
			});
		</script>
	</head>
	<body>
	</body>
</html>

### 微信小程序集成支付宝支付的实现方式 #### 使用 `web-view` 组件嵌入 H5 页面 一种常见的解决方案是在微信小程序中使用 `web-view` 组件来加载外部网页,从而间接地引入支付宝支付功能[^3]。此方法绕过了微信对于内置支付渠道的限制。 ```html <web-view src="https://your-alipay-payment-page.com"></web-view> ``` 这种方法适用于那些希望快速上线并测试不同支付选项的小程序开发者。不过需要注意的是,在用户体验方面可能会有所折扣,因为页面会在小程序内部打开一个新的浏览器窗口来进行交易操作。 #### 基于 Spring Boot 和支付宝沙箱环境开发 另一种更为复杂但也更加灵活的方式是利用后端技术栈(如 Java 的 Spring Boot 框架),配合支付宝提供的沙盒环境完成整个支付流程的设计实施[^4]。这涉及到服务器端处理请求、签名验证以及回调通知等多个环节: 1. **创建订单接口**:前端向后台发送创建订单的信息; 2. **生成预付款链接**:后台接收到请求后调用支付宝 API 获取预付单号,并返回给客户端用于展示二维码或其他形式的支付入口; 3. **监听支付状态变化**:通过异步消息机制接收来自网关的通知更新本地数据库记录; 这种架构不仅能够满足生产环境中严格的安全性和稳定性要求,同时也便于后续维护和技术升级。 #### PHP + Laravel 实现方案 除了上述两种途径外,还可以考虑采用PHP及其流行的Laravel框架作为后端支撑体系的一部分[^5]。具体来说就是借助第三方库(比如 yansongda/pay)简化同支付宝之间的交互过程: ```bash composer require yansongda/pay:^2.10 -vvv ``` 之后按照官方文档指引配置好相应的参数即可轻松发起一笔完整的线上转账动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值