Unity接入IAP内购(Android,IOS)最新流程,第一篇:内购接入

这篇具有很好参考价值的文章主要介绍了Unity接入IAP内购(Android,IOS)最新流程,第一篇:内购接入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

欢迎进入Unity内购系列

你好! 这将是一个系列的文章
第一篇 介绍客户端里支付的调起以及购买。
第二篇 介绍后台对购买结果的验证以及发货(IOS)。
第三篇 介绍后台对购买结果的验证以及发货(Android)。
第四篇 介绍后台对内购退单问题的处理(IOS欺诈检测以及欺诈信息反馈)。

整体流程介绍

我们是用的Unity客户端+PHP后台

客户端内完成内购 -> 内购结果发送给PHP后台 -> PHP后台向IOS或Google后台请求验证订单真实性 -> 验证通过则进行发货 -> 正常情况到此就结束了

非正常情况:如果玩家后期在IOS或Google申请退款,如果退款成功,则IOS或Google会向我们提供的接口发送通知,这时我们需要对退款订单进行处理

第一篇(内购接入)

本篇介绍unity里内购插件IAP的接入,这一篇只包含客户端内支付的调起以及购买。
流程非常简单,不需要开启Unity Service等服务,也不需要Google后台服务公钥,只需5分钟即可完成接入,只需要按照我的流程,就一定能成功

接入环境

本篇介绍unity里内购插件IAP的接入,这一篇只包含客户端内支付的调起以及购买。

  1. unity版本: 2021.3.21f1;其中JDK、NDK、SDK使用unity自带的。
  2. IAP版本: 4.10.0;

一、创建空工程

使用2021.3.21f1创建3D核心模板空工程

二、添加IAP插件

1、打开Package Manager,选择Unity Register,找到In App Purchasing,点击Install。
unity iap ios,ios,unity,android

2、IAP导入完成之后会有一个弹窗让我们Link Project,这里我们不用管,选Close就可以了
不要选Link Project,因为那些是给单机游戏用的,需要客户端内自己验证订单的情况下要选Link Project,然后还要填入Google的公钥以及其他设置。
unity iap ios,ios,unity,android

三、写代码

1、创建UI,新建2个按钮,一个挂载脚本的空物体。
2、新建脚本,代码如下,将脚本拖到空物体上。
3、给按钮点击事件赋值。
unity iap ios,ios,unity,android

using System;
using UnityEngine;
using UnityEngine.Purchasing;
using UnityEngine.Purchasing.Extension;
using UnityEngine.UI;

public class MyIAP : MonoBehaviour, IDetailedStoreListener
{
    IStoreController m_StoreController; // The Unity Purchasing system.

    void Start()
    {
        InitializePurchasing();
    }

    void InitializePurchasing()
    {
        var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());

        //Add products that will be purchasable and indicate its type.
        //初始化产品列表,这里要跟IOS和Google后台的产品列表一致
        builder.AddProduct("acepro_diamond1", ProductType.Consumable);
        builder.AddProduct("acepro_diamond2", ProductType.Consumable);
        builder.AddProduct("acepro_diamond3", ProductType.Consumable);
        builder.AddProduct("acepro_diamond4", ProductType.Consumable);
        builder.AddProduct("acepro_diamond5", ProductType.Consumable);
        builder.AddProduct("acepro_diamond6", ProductType.Consumable);

        UnityPurchasing.Initialize(this, builder);
    }
    //测试用的,正式代码可删除
    public void BuyDimaond1()
    {
        BuyProduct("acepro_diamond1");
    }
    //测试用的,正式代码可删除
    public void BuyDimaond2()
    {
        BuyProduct("acepro_diamond2");
    }
    //购买时调用的接口,外部只需调用这一个接口即可
    public void BuyProduct(string pruductid)
    {
        //开始购买
        m_StoreController.InitiatePurchase(m_StoreController.products.WithID(pruductid));
    }

    public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
    {
        //初始化成功
        Debug.Log("In-App Purchasing successfully initialized");
        m_StoreController = controller;
    }

    public void OnInitializeFailed(InitializationFailureReason error)
    {
        //初始化失败
        OnInitializeFailed(error, null);
    }

    public void OnInitializeFailed(InitializationFailureReason error, string message)
    {
        //初始化失败
        var errorMessage = $"Purchasing failed to initialize. Reason: {error}.";

        if (message != null)
        {
            errorMessage += $" More details: {message}";
        }

        Debug.Log(errorMessage);
    }

    public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
    {
        //Retrieve the purchased product
        var product = args.purchasedProduct;

        //Add the purchased product to the players inventory
        //付款成功,通知服务器发货
        //此处需要自行添加逻辑,通知自己的服务器发货,我这边就省略了。
        /*
         ***
         ***
         ***
         */
        Debug.Log($"Purchase Complete - Product: {product.definition.id}");

        //We return Complete, informing IAP that the processing on our side is done and the transaction can be closed.
        return PurchaseProcessingResult.Complete;
    }

    public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason)
    {
        //付款失败
        Debug.Log($"Purchase failed - Product: '{product.definition.id}', PurchaseFailureReason: {failureReason}");
    }

    public void OnPurchaseFailed(Product product, PurchaseFailureDescription failureDescription)
    {
        //付款失败
        Debug.Log($"Purchase failed - Product: '{product.definition.id}'," +
            $" Purchase failure reason: {failureDescription.reason}," +
            $" Purchase failure details: {failureDescription.message}");
    }

}

四、Google后台配置

Google后台配置。(暂时无图,等有图了再补上)
只需要添加应用内商品,并激活即可,不需要其他设置。

五、IOS后台配置

IOS后台配置。(暂时无图,等有图了再补上)
只需要添加应用内商品,并激活即可,不需要其他设置。

六、打包测试

Google测试前提条件:
1、手机开启VPN,否则无法完成初始化而且无法调起内购。
2、需要Google账号添加可用的银行卡。如果可以正常调起内购,并且显示了价格等信息,基本上是没有问题的,客户端内购买的流程就算结束了。

打包设置里面需要注意的地方我已经用红框标记了
1、版本号需要比自己google商店的最新版本一样或者比google版本高,如果比google版本低,会提示当前版本不支持google结算等提示,另外google后台的商品也需要设置为激活状态,否则也会出现当前版本不支持google结算等提示

2、keystore换成自己的,而且要跟google上的一致。如果加入了Google Play 签名计划,那么也是无法完成内购的,需要提包到google测试轨道,如果没有加入Google Play 签名计划,可以本地打包直接测试。
3、包名肯定是需要一致的。

总的来说就是要和自己google上的应用,包名、签名、版本一致就可以了
unity iap ios,ios,unity,android
unity iap ios,ios,unity,android
unity iap ios,ios,unity,android

七、Demo

其中的代码可直接使用,APK可直接运行,第一个商品是有效的,第二个商品是无效的。
unity iap ios,ios,unity,android
unity iap ios,ios,unity,android

Demo地址如下:
Unity IAP完整Demo,内含可运行APK文章来源地址https://www.toymoban.com/news/detail-849363.html

到了这里,关于Unity接入IAP内购(Android,IOS)最新流程,第一篇:内购接入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity接入IAP、服务器验单(Google Play)

    最近因为项目需要,被分配来做项目SDK接入以及上架相关事宜。搞了好几天关于Unity接入支付的SDK,接入很简单,卡的最久的就是服务器验单,google相关文档也不是很全,走通之后觉得可以发出来共享一下,第一次写文章,有什么不足多多见谅 Unity已经集成了Google Pay、Apple

    2023年04月11日
    浏览(36)
  • Unity3D PC、Android、iOS平台打包流程

    在Unity窗口中,按下Ctrl+Shift+B快捷键,或者在菜单栏选择File-BuildSettings...,打开设置窗口。“Platform”下的选择项默认选择“Windows,Mac,Linux”。单击左下方的“Player Settings...”继续后续设置(应用名、应用分辨率、图标等),如图1-1所示。 图1-1 PC平台选择 接着,点击Add Op

    2023年04月20日
    浏览(53)
  • 最新ios证书申请流程

    苹果官方申请ios证书的方法,需要mac电脑,需要使用钥匙串管理先生成csr文件,然后去苹果开发者中心生成证书,然后再用mac电脑导出p12证书。假如我们没有mac电脑,又如何申请证书呢?这个教程我将教会大家如何使用windows电脑申请ios证书 首先,申请ios证书,需要苹果开发

    2024年02月05日
    浏览(33)
  • Unity与iOS交互(2)——接入SDK

    【前言】 接入Android和iOS SDK有很多相同的地方,建议先看下Android SDK如何接入。  【UnityAppController详解】  整个程序的入口在MainApp文件下的 main.mm 文件中,先加载了unityframework,然后调用runUIApplicationMain。源码如下:(这些源码在Xcode工程里都有) 可以看看 UnityFramework.h 文件中

    2024年02月13日
    浏览(109)
  • Java接入内购 Apple Pay、Google Play

    内购流程: 客户端向服务器发起请求生成预订单,服务器校验后生成预订单返回客户端。若调起支付界面后未支付,则通知服务器取消本订单。 客户端拿到预订单号后,在玩家完成付款操作后,携带预订单号请求支付平台,将预订单号存储在支付平台中,并获取支付凭证。

    2024年04月16日
    浏览(34)
  • iOS - 订阅型内购指南

    一、App Store Connect 帮助 二、测试 三、订阅状态 四、问题思考 1、订阅归属: 以往的消耗性内购, 通常会生成订单ID对应到苹果的内购ID及用户id,对于我们来说,内购仅仅只是个支付工具,而订阅型内购有一整套销售模型 订阅内购是跟随AppleID的,但是在开发过程中,我们是获

    2024年02月11日
    浏览(31)
  • iOS_苹果内购详细步骤

    什么是Apple Pay? 简单说是一种“支付工具”。对于国外流行信用卡,Apple Pay很符合美国的国情。但对于中国,微信支付、支付宝支付更加便利符合中国的人的行为习惯。 说到这你可能就理解了,Apple Pay,就是类比支付宝类似的线上线下支付工具。 Apple Pay和 支付宝、微信一样

    2023年04月09日
    浏览(32)
  • android支付宝接入流程

    接入APP支付能力前,开发者需要完成以下前置步骤。 本文档展示了如何从零开始,使用支付宝开放平台服务端 SDK 快速接入App支付产品,完成与支付宝对接的部分。 要在您的应用中接入支付宝 App 支付能力,您需要登录支付宝开放平台open.alipay.com),在开发者中心中创建您的

    2024年04月13日
    浏览(29)
  • IOS内购自动续费订阅测试

    一、IOS 内购类型 1、 消耗型商品: 只可使用一次的产品,使用之后即失效,必须再次购买。 示例 :抽奖券。 2、 非消耗型商品: 只需购买一次,不会过期或随着使用而减少的产品。 示例 :游戏 App 的赛道。 3、 自动续期订阅: 允许用户在固定时间段内购买动态内容的产品

    2024年02月16日
    浏览(28)
  • Java服务端接入苹果内购。实现票据二次校验、自动续期订阅

    记录一下 Java 服务端接入苹果内购。 苹果规定在 APP Store上架的 APP 使用苹果自己的支付方式(IAP内购),并且苹果会抽30%的税。 上架商品包括:消耗性,非消耗性,自动续期订阅,非续期订阅。上架商品可在 APP Store后台配置。 由用户完成付款操作后,苹果返回 票据 给 IO

    2024年02月02日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包