# Samsung 支付

**Note**: SDK中使用三星IAP 5.0版本

## 商品类型

1. 物品（可消耗，不可消耗）
2. 订购（无自动订购（NRS），自动订购）

## 接入要求

* 支持Android API 14及以上版本，在更早版本上无法正常运行
* 需要Galaxy Apps商店 4.2.13.xx 版本或以上

## 购买流程

请按以下步骤测试购买流程：&#x20;

1 在主页面上点击Purchase One Item .验证三星账号页面出现。

2 输入三星账号密码并点击确认

3 支付页面出现，可以选择支付方式

4 点击选择需要的支付方式&#x20;

5 点击Buy 开始IAP支付流程

## 关于测试

{% hint style="info" %}
&#x20;IAP支持封闭beta测试，用户可以从Galaxy Apps下载并购买商品。在BETA测试中，注册阶段的内容可 以被浏览，购买，消耗，真实交易付款或者测试交易。

&#x20;更多信息请参考三星开发者网站: (<http://developer.samsung.com/iap/how-to-start>).
{% endhint %}

## 权限和组件

在 `AndroidManifest.xml` 中加入以下配置:

```markup
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="您的应用包名">

    <!-- 权限声明 -->
    <!--三星商店权限-->
    <uses-permission android:name="com.samsung.android.iap.permission.BILLING"/>

    <application
        ...>
        <!-- 三星商店 IAP Activity ↓↓↓-->
        <!--发起支付请求-->
        <activity
            android:name="com.samsung.android.sdk.iap.lib.activity.PaymentActivity"
            android:theme="@style/Theme.Empty"
            android:configChanges="orientation|screenSize"/>
        <!--请求商品列表-->
        <activity
            android:name="com.samsung.android.sdk.iap.lib.activity.ProductActivity"
            android:theme="@style/Theme.Empty"
            android:configChanges="orientation|screenSize"/>
        <!--请求已购物品列表-->
        <activity
            android:name="com.samsung.android.sdk.iap.lib.activity.OwnedProductActivity"
            android:theme="@style/Theme.Empty"
            android:configChanges="orientation|screenSize"/>
        <!--请求已购物品的消耗情况-->
        <activity
            android:name="com.samsung.android.sdk.iap.lib.activity.ConsumePurchasedItemsActivity"
            android:theme="@style/Theme.Empty"
            android:configChanges="orientation|screenSize"/>
        <!-- 三星商店 IAP Activity ↑↑↑-->
    </application>
</manifest>

```

{% hint style="danger" %}
&#x20;1.必须要配置权限  `com.samsung.android.iap.permission.BILLING` ，用于链接三星IAP

&#x20;2\. 四个activities必须为透明背景，需设置 `android:theme="@style/Theme.Empty"`. 否则会覆盖原本的应用。
{% endhint %}

## 初始化 <a href="#chu-shi-hua" id="chu-shi-hua"></a>

#### 在主Activity#onCreate初始化 <a href="#zai-zhu-activityoncreate-chu-shi-hua" id="zai-zhu-activityoncreate-chu-shi-hua"></a>

```java
private SamsungBillingSupport mSamsungBillingSupport;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    //初始化三星商店内购
    mSamsungBillingSupport = SamsungBillingSupport.getInstance(this, new BillingCallback() {
        @Override
        public void onPurchased(String productId, String orderId) {
            //购买成功
        }
    
        @Override
        public void onBillingInitialized() {
        
        }
        
        @Override
        public void onError(int errorCode) {
            //购买失败
        }
    });
}
```

> #### API原型 <a href="#api-yuan-xing-1" id="api-yuan-xing-1"></a>

```java
/**
 * 初始化三星商店内购实例
 * @param activity        当前Activity
 * @param billingCallback 购买回调
 * @return
 */
public static SamsungBillingSupport getInstance(Activity activity, BillingCallback billingCallback)
```

> #### 参数 <a href="#can-shu-1" id="can-shu-1"></a>

* Activity activity ：当前Activity
* BillingCallback billingCallback : 购买回调

## 设置调试模式 <a href="#ji-lu-tong-ji-shi-jian" id="ji-lu-tong-ji-shi-jian"></a>

> #### API介绍 <a href="#api-jie-shao" id="api-jie-shao"></a>

设置三星商店内购调试模式

> #### API原型 <a href="#api-yuan-xing-2" id="api-yuan-xing-2"></a>

```java
/**
 * 设置三星商店调试模式
 * @param isDebug
 */
public void setDebug(boolean isDebug)
```

> #### 示例 <a href="#shi-li" id="shi-li"></a>

```java
//设置三星商店调试模式
mSamsungBillingSupport.setDebug(true);
```

{% hint style="info" %}
调试模式下，内购为测试订单。
{% endhint %}

{% hint style="danger" %}
打包发布前，测试完成，务必将调试模式设置为false&#x20;

请注意：下图中的弹窗出现时，说明该应用仍在 **测试模式** 下：

![](blob:https://gamesamba.gitbook.io/226c1cbe-210e-4592-9856-e5ba1c9aa02a)![](blob:https://gamesamba.gitbook.io/953fad3c-8583-45f9-bb59-9925cb7b1891)
{% endhint %}

## 购买商品 <a href="#ji-lu-tong-ji-shi-jian" id="ji-lu-tong-ji-shi-jian"></a>

> #### API介绍 <a href="#api-jie-shao" id="api-jie-shao"></a>

购买三星商店内购商品

> #### API原型 <a href="#api-yuan-xing-2" id="api-yuan-xing-2"></a>

```java
/**
 * 购买商品
 * @param itemId 商品ID
 * @param userId 用户ID
 * @param userName 用户角色名称
 * @param serverId 服务器ID
 * @param serverName 服务器名称
 */
public void purchase(String itemId, String userId, String userName, String serverId, String serverName)
```

> #### 示例 <a href="#shi-li" id="shi-li"></a>

```java
String itemId = "ipa.tg.na002";//商品ID
String userId = "1";//用户ID
String userName = "test";//用户名称
String serverId = "1";//服务器ID
String serverName = "test";//服务器名称
//购买商品
mSamsungBillingSupport.purchase(itemId, userId, userName, serverId, serverName);
```
