react-native-inapp-purchase

Build Phases-> Link Binary With Libraries中添加libRCTInAppPurchase.a

Usage no npm install needed!

<script type="module">
  import reactNativeInappPurchase from 'https://cdn.skypack.dev/react-native-inapp-purchase';
</script>

README

ios配置

  1. Build Phases-> Link Binary With Libraries中添加libRCTInAppPurchase.a

参见index.js

使用说明

    //  引用方式
    const InAppUtils = NativeModules.InAppPurchase;
    
    //  使用方式
    import { NativeEventEmitter} from 'react-native';
    const emitter = new NativeEventEmitter(InAppUtils); //用获取的模块创建监听器
    this.subScription = emitter.addListener(EVENT_CANMAKEPAYEVENTS,(body) => Alert.alert(body));
    
    [注]:在componentWillUnmount里移除监听
    componentWillUnmount() {
    this.listener && this.listener.remove();  //记得remove哦
    this.listener = null;
    }

    //  进程被杀死掉单接收通知
    对应事件:   EVENT_SINGLE_OUT        返回类型:数组(key为info{ 子对象key为:transactionDate,transactionIdentifier,productIdentifier,transactionReceipt,transationInfo })
    
    //  查看商品能否支付
    InAppUtils.canMakePayments(() => {});
    对应事件:   EVENT_CANMAKEPAYEVENTS  返回类型:BOOL
    
    //  加载商品
    InAppUtils.loadProducts([order.apple_goods_id], () => {});
    对应事件:   EVENT_LOAD_PRODUCTS     返回类型:对象(key为:identifier,price,currencySymbol,currencyCode,downloadable,description,title)
    
    //  支付
    const const goodInfo = {'userInfo':{'orderID':'13djhha'}};  //该参数为对象,是与订单绑定的信息
    InAppUtils.purchaseProduct(order.apple_goods_id, goodInfo, () => {});
    对应事件:   EVENT_PURCHASE_PRODUCT  返回类型:对象(key为info{ 子对象key为:transactionDate,transactionIdentifier,productIdentifier,transactionReceipt,transationInfo })
    
    //  支付失败,用户取消支付等情况(正常支付情况下)
    对应事件:   EVENT_TRANSACTION_ERROR 返回类型 :对象【key为message(苹果服务器返回的错误提示信息,字符串),isUserCancel:BOOL(用户取消为true,其他情况为false),errorMessage:(字符串,具体错误的信息) ,info(我们绑定的信息,对象)】
    
    [注]:使用isUserCancel来判断是否是用户点击取消   message是苹果后台返回来的错误信息,什么情况下都返回的是无法连接 ituns store这条信息
    
        errorMessage所有信息情况如下: SKErrorUnknown                           未知的错误,您可能正在使用越狱手机
                                    SKErrorClientInvalid                    当前苹果账户无法购买商品(如有疑问,可以询问苹果客服)
                                    SKErrorPaymentCancelled                 订单已取消
                                    SKErrorPaymentInvalid                   订单无效(如有疑问,可以询问苹果客服)
                                    SKErrorPaymentNotAllowed                当前苹果设备无法购买商品(如有疑问,可以询问苹果客服
                                    SKErrorStoreProductNotAvailable         当前商品不可用
                                    others                                  未知错误

    //  支付进程杀死后点击取消等支付失败触发事件
    对应事件:   EVENT_SINGLE_USER_CANCEL  返回类型:数组(key为 isUserCancel:BOOL(用户取消为true,其他情况为false),errorMessage:(字符串,具体错误的信息) ,info(我们绑定的信息,对象))
     [注]:使用isUserCancel来判断是否是用户点击取消
        errorMessage所有信息情况如下: SKErrorUnknown                           未知的错误,您可能正在使用越狱手机
        SKErrorClientInvalid                    当前苹果账户无法购买商品(如有疑问,可以询问苹果客服)
        SKErrorPaymentCancelled                 订单已取消
        SKErrorPaymentInvalid                   订单无效(如有疑问,可以询问苹果客服)
        SKErrorPaymentNotAllowed                当前苹果设备无法购买商品(如有疑问,可以询问苹果客服
        SKErrorStoreProductNotAvailable         当前商品不可用
        others
    
    //  该商品不正确
    对应事件:   EVENT_INVALID_PRODUCT  返回类型:BOOL
    
    //  用户手动取消
    对应事件:   EVENT_USER_CANCELLED  返回类型:BOOL
    
    //  购买商品失败
    对应事件:   EVENT_RESTORE_FAILED  返回类型:BOOL
    
    //  商品信息错误 (苹果后台绑定的信息与服务端的商品号对应不上)
    对应事件:   EVENT_NOT_AVAILABLE  返回类型:BOOL