【滑唯】oneplusx

编程题实操

中级开发文档---使用入门---示例代码

常用知识点:
1) Req请求数据的使用: 创建对象, set属性
ProductInfoReq req = new ProductInfoReq();
// priceType: 0:消耗型商品; 1:非消耗型商品; 2:订阅型商品
req.setPriceType(0);
req.setProductIds(productIdList);

2)列表的使用
List<String> productIdList = new ArrayList<>(); 
或者
List<String> productIdList = new LinkedList<>();

3) 回调函数: [被别的函数调用的函数], [回调函数的参数值自动填充]。

4)获取调用接口的Activity对象
// 获取当前的activity
final Activity activity = getActivity();
// 在Activity的响应事件中获取
final Activity activity=MainActivity.this;

5)调用obtainProductInfo接口获取AppGallery Connect网站配置的商品的详情信息
Task<ProductInfoResult> task = Iap.getIapClient(activity).obtainProductInfo(req);

6) task.addOnSuccessListener(new OnSuccessListener<ProductInfoResult>() {
       @Override
       public void onSuccess(ProductInfoResult productInfoResult) {
          List<ProductInfo> productInfoList= productInfoResult.getProductInfoList();
       }
   });

7) 支付状态: OrderStatusCode 枚举类

8) 设置文本 setText(...)


5. 作业
----------------------------------------------------------------------------------

答案
---------------------------------------------
    /**
     * 实现获取商品列表功能  - 请不要删除,否则影响考试成绩
     * 非消耗型商品ID : Exams_NonConsumable_001
     */
    public void onGetProductList() {
        // TODO 根据非消耗型商品类型为:"1" 以及 商品ID固定为:"Exams_NonConsumable_001",设置请求商品列表参数 ProductInfoReq

        ProductInfoReq req=new ProductInfoReq();
        List<String> list=new ArrayList<>();
        list.add("Exams_NonConsumable_001");
        req.setPriceType(1);
        req.setProductIds(list);
        // TODO 通过调用 obtainProductInfo 接口,获取商品列表数据
        Task<ProductInfoResult> task=Iap.getIapClient(MainActivity.this).obtainProductInfo(req);

        // TODO 回调接口添加 addOnSuccessListener 监听,在 onSuccess(ProductInfoResult result) 回调成功方法中调用 onUpdateProductInfo 方法,展示商品信息
        task.addOnSuccessListener(new OnSuccessListener<ProductInfoResult>() {
            @Override
            public void onSuccess(ProductInfoResult productInfoResult) {
                onUpdateProductInfo(productInfoResult.getProductInfoList());
            }
        });
    }

    /**
     * 实现购买商品功能  - 请不要删除,否则影响考试成绩
     */
    private void onBuyProduct() {
        // TODO 根据非消耗型商品类型 以及 商品ID,构建购买请求参数 PurchaseIntentReq

        PurchaseIntentReq req=new PurchaseIntentReq();
        req.setPriceType(1);
        req.setProductId("Exams_NonConsumable_001");
        // TODO 根据构建的 PurchaseIntentReq,调用createPurchaseIntent接口,创建托管商品订单
        Task<PurchaseIntentResult> task=Iap.getIapClient(MainActivity.this).createPurchaseIntent(req);
        // TODO 回调接口添加addOnSuccessListener监听,在 onSuccess() 回调成功方法中,启动IAP返回的收银台页面

        task.addOnSuccessListener(new OnSuccessListener<PurchaseIntentResult>() {
            @Override
            public void onSuccess(PurchaseIntentResult result) {
                Status status = result.getStatus();
                if (status.hasResolution()) {
                    try {
                        // 6666是您自定义的常量
                        // 启动IAP返回的收银台页面
                        status.startResolutionForResult(MainActivity.this, 6666);
                    } catch (IntentSender.SendIntentException exp) {
                    }
                }
            }
        });


    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        try {
            if (data == null) {
                Log.e(TAG, "data is null");
                return;
            }

            // TODO 支付成功后回调, 根据返回的 Intent data参数,调用 parsePurchaseResultInfoFromIntent 解析支付结果数据\


            PurchaseResultInfo info=Iap.getIapClient(MainActivity.this).parsePurchaseResultInfoFromIntent(data);

            // TODO 根据解析结果数据中 ReturnCode 判断支付是否成功

            if(info.getReturnCode()== OrderStatusCode.ORDER_STATE_SUCCESS) {

                //  TODO  根据解析结果数据获取的 getInAppPurchaseData()数据,构造 InAppPurchaseData 对象,
                InAppPurchaseData inAppPurchaseData=new InAppPurchaseData(info.getInAppPurchaseData());
                //   并使用 InAppPurchaseData getPurchaseToken 方法获取 PurchaseToken,
                String token=inAppPurchaseData.getPurchaseToken();
                //  TODO 将获取的 PurchaseToke 值设置到 mTvPurchaseToken 控件中
                mTvPurchaseToken.setText(token);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值