- 
拿推车 准备购物
let pay = SKMutablePayment 它就是推车
pay.productIdentifier = "com.xxx.IPA.soup" 选择商品
SKPaymentQueue.default().add(pay) // 加购+去收银台排队买单 弹出让输入appid的弹窗
 钱是要给苹果的,但是苹果不在当前代码中,委托<三部曲 遵守协议 指定代理人 实现代理方法>当前的类来收银
// self 收银人
   [[SKPaymentQueue defaultQueue] addTransactionObserver:**self**];
     VC: SKPaymentTransactionObserver {
     }
// 告诉观察员 一个或多个交易被更新了。《一个或多个交易过来了 你要准备收银了》
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions {
Purchased 交易成功
Failed 交易失败 transaction.error 取消了还是网不好
无论成功失败都要调研 finishTransaction 在超市有没有买东西都要把推车放回去
}
沙箱技术测试员
非消耗型内购 沙盒账号 一旦点击购买之后 这个账号就没有用了
如果想第二次测试 需要重新登录一个沙盒账号《账号一次性》
恢复购买 删除App 沙盒没有了
直接购买也不用付费 苹果的弹窗提示已经购买是否免费恢复
这样不是好的用户体验 而且苹果审核时要求实现恢复购买的功能
当前这个iphone手机的appid 有没有购买过这个商品,
发送请求信息
restoreCompletedTransaction
苹果反馈一条信息
*- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions */
restored //恢复购买
也要 finishend


