ios apple苹果app不能使用微信支付宝充值打赏送礼,请问怎么走苹果内购?
网友回复
是的,必须走苹果内购,你看微信打赏由于没走苹果内购,没使用IAP,直接下架,后来微信去掉了打赏。
那么什么是IAP,即in-app-purchase。(虚拟商品如:课程、视频、音乐等数字产品只能走apple 的内购),苹果要扣除30%的销售额,再扣除一点相关的交易税,用户到手将不到7成。如果是实体的商品是可以使用微信支付宝支付的。内购流程
1.获取内购列表(从App内读取或从自己服务器读取)
2.App Store请求可用的内购列表
3.向用户展示内购列表
4.用户选择了内购列表,再发个购买请求,收到购买完成的回调(购买完成后会把钱打给申请内购的银行卡内)
5.购买流程结束后, 向服务器发起验证凭证以及支付结果的请求
6.自己的服务器将支付结果信息返回给前端并发放虚拟产品
7.服务端的工作比较简单,分4步:
7.1.接收ios端发过来的购买凭证。
7.2.判断凭证是否已经存在或验证过,然后存储该凭证。
7.3.将该凭证发送到苹果的服务器验证,并将验证结果返回给客户端。
7.4.如果需要,修改用户相应的会员权限。
7.5.考虑到网络异常情况,服务器的验证应该是一个可恢复的队列,如果网络失败了,应该进行重试。
简单来说就是将该购买凭证用Base64编码,然后POST给苹果的验证服务器,苹果将验证结果以JSON形式返回。二、流程
1.登录苹果开发者网站新建一个App应用:
2.填写协议、税务、银行信息:

3.创建内购商品:
(1).商品名称根据你的消费道具的实际意义来说明,比如“100颗宝石”,“100金币”等。 (2).产品ID是比较重要的,由项目自定义,只要唯一即可,我一般都是用App的bundleID加一个后缀来表示,这样既跟项目关联又具有唯一性。 (3).价格等级的话“查看价格表”中有对应的说明,可以对照着表中每个国家的货币价格与等级来选择。
4.添加沙盒测试者
沙盒测试环境下苹果不会抽成,购买成功后直接返回商品。appid 需要时从未与apple id 从未关联过的账号
appid 可以是任何有效的邮箱地址
5.内购代码封装IapManager.swift:
//
// IapManager.swift
// tai_chi
//
// Created by vincent on 2019/10/9.
// Copyright © 2019 vincent. All rights reserved.
//
import Foundation
import StoreKit
//内购协议
@objc protocol IapManagerProtocol {
//商品请求结果回调
func productsResponse(_ response:SKProductsResponse?,error:Error?)
//交易成功回调
func completedTransaction(_ transaction:SKPaymentTransaction)
//交易失败回调
@objc optional func transactionFail(transaction:SKPaymentTransaction)
}
//内购管理
class IapManager : NSObject,SKProductsRequestDelegate,SKPaymentTransactionObserver {
private static var instance:IapManager?
var delegate:IapManagerProtocol?
var requestResponse:SKProductsResponse?
var requestErr:Error?
override init() {
super.init()
SKPaymentQueue.default().add(self)
}
//静态方法
static func shared() -> IapManager{
if instance == nil {
instance = IapManager()
}
return instance!
}
//判断app 是否允许...点击查看剩余70%


