apicloud中ios使用iap购买及恢复购买,

  • 修改 _courseId 为 appconnect中设置的内购商品id

ios内购审核不通过

Thank you for your reply.
Regarding to Guideline 3.1.1, to restore previously purchased in-app purchase products, it would be appropriate to provide a "Restore" button and initiate the restore process when the "Restore" button is tapped by the user. Note that automatically restoring purchases on launch will not resolve this issue.

** The Restore mechanism mush be separated from the purchase option.

翻译

谢谢你的回复。 关于准则3.1.1,要恢复以前购买的应用内购买产品,最好提供一个“恢复”按钮,并在用户点击“恢复”按钮时启动恢复过程。请注意,启动时自动恢复购买不会解决此问题。 **恢复机制必须与购买选项分开。 我们期待着审查您重新提交的应用程序。

处理方式

反馈中提示“恢复机制必须与购买选项分开”,在单独的位置添加一个恢复购买按钮。
在这里插入图片描述

购买代码及恢复购买代码

// ios购买
var _courseId = 'ios中设置的商品ID'
function openPhoneBuy() {
    var iap = api.require('iap');
    iap.getProducts({
        productIds: [
            _courseId
        ]
    }, function(ret, err) {
        if (ret.products != null && ret.products.length != 0) {
            api.showProgress({
                style: 'default',
                animationType: 'fade',
                title: '努力加载中...',
                text: '先喝杯茶...',
                modal: false
            });
            setTimeout("api.hideProgress();", 3000);
            iap.purchase({
                productId: _courseId
            }, function(ret, err) {
                 // 0 已加入交易队列
                 // 1 交易完成
                 // 2 交易失败
                 // 3 恢复购买
                 // 4 交易等待被确认, iOS 8.0及以后有效
                if (ret) {
                    var state = ret.state;
                    switch (state) {
                        case 0:
                            // console.log("case 0");
                            break;
                        case 1:
                             // console.log("case 1");
                            if (ret.originalTransactionId != '' && ret.originalTransactionId != null && ret.originalTransactionId != 'undefined') {
                                //恢复流程
                                api.setPrefs({
                                    key: _courseId,
                                    value: '1'
                                });
                            } else {
                              api.toast({
                                msg: "购买成功",
                                duration: 2000,
                                location: 'middle'
                              });
                            }
                            break;
                        case 2:
                            api.toast({
                                msg: "交易失败",
                                duration: 2000,
                                location: 'middle'
                            });
                            break
                        case 3:
                            // console.log("case 3");
                            ios_recovery_course()
                            break;
                        default:
                            break;
                    }
                } else {
                    api.toast({
                        msg: err.msg,
                        duration: 2000,
                        location: 'bottom'
                    });
                }
            });
        }
        else {
          //非ios应用内购买
        }
    });
}

// ios 恢复购买
function ios_recovery_course() {
  api.confirm({
    title: '温馨提示',
    msg: '点击确定恢复之前所购买的课程',
    buttons: ['确定', '取消']
  }, function (ret, err) {
    if (ret.buttonIndex == 1) {
      var iap = api.require('iap');
      iap.restoreTransactions(function (ret, err) {
        if (ret) {
          var restore_courses = JSON.stringify(ret);
          //恢复之前购买的所有课程
          if (JSON.stringify(ret) != '{}') {
            if (JSON.stringify(ret.transaction) != '{}') {
              api.setPrefs({
                key: ret.transaction.productId,
                value: '1'
              });
            }
            if (ret.finished) {
              api.toast({
                msg: '恭喜您,已成功恢复之前购买课程',
                duration: 3000,
                location: 'middle'
              });
            }
          }
          //如果该课程已经购买过,则恢复该课程
          if (restore_courses.indexOf(_courseId) != -1) {
            api.setPrefs({
              key: _courseId,
              value: '1'
            });
            api.toast({
              msg: '恭喜您,恢复购买成功',
              duration: 3000,
              location: 'middle'
            });
          }

        } else {
          // alert(JSON.stringify(err));
          // console.log(JSON.stringify(err));
        }
      });
    } else {
      //  alert( JSON.stringify( err ) );
    }
  });
}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐