diff --git a/docs/api/plugins/payment.md b/docs/api/plugins/payment.md index 4606e46e2d0875eb5b2c0d512cfe169c94a65ef8..fcc31a98ae9106773da29261798dc29c02815576 100644 --- a/docs/api/plugins/payment.md +++ b/docs/api/plugins/payment.md @@ -241,7 +241,16 @@ uni.requestPayment({ |username|String||透传参数,一般用于标记订单和用户的关系,向苹果服务器二次验证票据时返回此字段| |quantity|Number|1|购买数量,至少大于等于 `1`| |manualFinishTransaction|Boolean|false|3.5.1+ 支持,手动关闭订单,值为 `false` 时支付完成后自动关闭订单,`true`时不关闭订单,需要在合适的时机调用 `finishTransaction` 关闭订单。建议设置为 `true`, 默认值为 `false` 是为了向下兼容| +| paymentDiscount | Object | 否 | 促销优惠(HBuilderX 3.7.0+ 手机系统iOS12.2+支持) | +##### 促销优惠参数说明 +| 属性 | 类型 | 必填 | 说明 | +| :--- | :--- | :--- | :--- | +| offerIdentifier | String | 是 | 促销id | +| keyIdentifier | String | 是 | 密钥 | +| nonce | String | 是 | 唯一id (必须小写 24小时有效) | +| signature | String | 是 | 签名 | +| timestamp | Number | 是 | 创建证书的时间戳(毫秒 24小时有效) | #### Product @@ -252,6 +261,17 @@ uni.requestPayment({ |productid|String|产品id,在苹果开发者中心配置| |price|Number|价格| |pricelocal|String|币种,例如: `zh_CN@currency=CNY`| +|discount|Array|折扣信息(HBuilderX 3.7.0+ 手机系统iOS12.2+支持)| + +##### Discount +| 属性 | 类型 | 说明 | +| :--- | :--- | :--- | +| price | Number | 促销价格 | +| periodUnit | String | 周期单位(day: 日,week: 周,month: 月,year: 年) | +| discountType | String | 优惠类型(introductory: 推介促销 subscription: 订阅促销) | +| promotionType | String | 促销类型(payAsYouGo: 随用随付,payUpFront: 预先支付,freeTrial: 免费试用) | +| code | String | 促销代码| +| units | Number | 促销期数 | #### Transaction diff --git a/docs/tutorial/app-payment-aip.md b/docs/tutorial/app-payment-aip.md index c51d3f36467040c92977946d1e33e2af55383d45..921fb3855a7787f0c634ee95d559780c1f432064 100644 --- a/docs/tutorial/app-payment-aip.md +++ b/docs/tutorial/app-payment-aip.md @@ -45,7 +45,7 @@ plus.payment.getChannels(function(channels){ }); ``` -#### 获取订单信息 +#### 获取商品信息 发起支付前需调用[requestOrder](https://www.html5plus.org/doc/zh_cn/payment.html#plus.payment.PaymentChannel.requestOrder)传入产品ID(productId)获取订单信息: ``` js // ids 数组中的项为 App Store Connect 配置的内购买项目产品ID(productId) @@ -59,10 +59,33 @@ iap.requestOrder(ids, function(e) { console.log('requestOrder failed: ' + JSON.stringify(e)); }); ``` +##### 商品信息参数说明 +Object对象类型 + +| 属性 | 类型 | 说明 | +| :--- | :--- | :--- | +| title | String | 产品标题 | +| description | String | 产品描述 | +| productid | String | 产品id | +| price | Number | 价格 | +| pricelocal | String | 币种,例如: zh_CN@currency=CNY | +| discount | Array | 折扣信息(HBuilderX 3.7.0+ 手机系统iOS12.2+支持) | + +##### 优惠促销信息参数说明 +| 属性 | 类型 | 说明 | +| :--- | :--- | :--- | +| price | Number | 促销价格 | +| periodUnit | String | 周期单位(day: 日,week: 周,month: 月,year: 年) | +| discountType | String | 优惠类型(introductory: 推介促销 subscription: 订阅促销) | +| promotionType | String | 促销类型(payAsYouGo: 随用随付,payUpFront: 预先支付,freeTrial: 免费试用) | +| code | String | 促销代码| +| units | Number | 促销期数 | #### 发起支付 调用 [plus.payment.request(channel, orderInfo, successCB, errorCB)](https://www.html5plus.org/doc/zh_cn/payment.html#plus.payment.request) 发起支付, channel参数为应用内支付对象,orderInfo参数为订单对象 + +使用订阅促销优惠参考[服务端生成签名](https://developer.apple.com/documentation/storekit/in-app_purchase/original_api_for_in-app_purchase/subscriptions_and_offers/generating_a_signature_for_promotional_offers) ##### 订单对象参数说明 Object对象类型 @@ -71,7 +94,18 @@ Object对象类型 | productid | String | 是 | App Store Connect 配置的内购买项目产品ID(productId) | | username | String | 否 | 用户标识 | | manualFinishTransaction | Boolean | 否 | 3.5.1+ 支持,手动关闭订单,值为 false 时支付完成后自动关闭订单,true时不关闭订单,需要在合适的时机调用 finishTransaction 关闭订单。建议设置为 true, 默认值为 false 是为了向下兼容 | -| password | String | 否 | App专用共享密钥(内购商品为自动续期订阅类时必传) | +| paymentDiscount | Object | 否 | 促销优惠(HBuilderX 3.7.0+ 手机系统iOS12.2+支持) | + +##### 促销优惠参数说明 +| 属性 | 类型 | 必填 | 说明 | +| :--- | :--- | :--- | :--- | +| offerIdentifier | String | 是 | 促销id(客户端获取) | +| keyIdentifier | String | 是 | 密钥(appstore后台获取) | +| nonce | String | 是 | 服务器生成的UUID(必须小写 24小时有效) | +| signature | String | 是 | 签名(服务器生成) | +| timestamp | Number | 是 | 服务器创建证书的时间戳(毫秒 24小时有效) | + + ##### 示例代码 ``` js @@ -81,6 +115,13 @@ plus.payment.request(iap, { productid: "商品id", username: "appusername", // 用户标识 manualFinishTransaction: true // 3.5.1+ 支持,设置此参数后需要开发者主动关闭订单,参见下面的关闭订单方法 finishTransaction() + paymentDiscount: { + offerIdentifier:"", + keyIdentifier:"", + nonce:"", + signature:"", + timestamp:0 + } // 3.7.0+ 支持 }, function(result){ restoreFlag = false; // 支付成功清除标记 restoreFlag = false // 支付成功,result 为 IAP商品交易信息对象 IAPTransaction 需将返回的支付凭证传给后端进行二次认证 @@ -188,4 +229,6 @@ iapChannel.restoreComplateRequest({ - 提前绑定支付方式可以有效避免丢单情况,示例: `plus.runtime.openURL("https://apps.apple.com/account/billing"); //跳转AppStore绑定支付方式` - 建议在每个接口调用前后添加打点日志收集,以便快速定位问题 +- [推介促销优惠参考](https://developer.apple.com/cn/documentation/storekit/in-app_purchase/subscriptions_and_offers/implementing_introductory_offers_in_your_app/) +- [订阅促销优惠参考](https://developer.apple.com/cn/documentation/storekit/in-app_purchase/subscriptions_and_offers/implementing_subscription_offers_in_your_app/)