apicloud含有微信支付。支付宝支付和苹果内购的代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport"
        content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
        <meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
        <title>我的余额</title>
        <link rel="stylesheet" type="text/css" href="../css/api.css"/>
        <link rel="stylesheet" type="text/css" href="../css/mui.min.css"/>
        <link rel="stylesheet" href="../css/aui.css"/>
        <link rel="stylesheet" type="text/css" href="../css/app.css"/>
        <link href="../css/style.css" rel="stylesheet"/>
        <link rel="stylesheet" href="../css/user_balance.css"/>
    </head>
    <body>
        <header class="mui-bar mui-bar-nav">
            <a class="mui-icon mui-icon-left-nav mui-pull-left" onclick="api.closeWin()"></a>
            <h1 class="mui-title">我的余额</h1>
            <a class="mui-pull-right detail" onclick="goPage(‘balance_detail‘)">明细</a>
        </header>
        <div class="aui-content">
            <div class="top">
                <p class="my-num">
                    {{myBalance}}
                </p>
                <p class="num-text">
                    学习币
                </p>
            </div>
            <div class="con aui-margin-t-10 aui-padded-15">
                <div class="con-tit aui-margin-b-10">
                    充值
                </div>
                <ul class="recharge-list flex">
                    <li :recharge-num="item.Price" :recharge-id="item.IapProductId" v-for="item in mealCoin">
                        <p class="list-name">
                            {{item.PriceInt}}学习币
                        </p>
                        <p class="money">
                            ¥{{item.Price}}
                        </p>
                    </li>
                    <!--<li>-->
                    <!--<p class="list-name">手动输入</p>-->
                    <!--<p class="money" v-if="custom">¥{{rechargeNum}}</p>-->
                    <!--<p class="money" v-else="custom">  </p>-->
                    <!--</li>-->
                </ul>
            </div>
            <div class="bot aui-padded-t-10 aui-padded-l-15 aui-padded-r-15 aui-padded-b-5">
                <div class="bot-tit aui-margin-b-10">
                    充值说明
                </div>
                <p>
                    1、充值后可用于直接购买App内虚拟内容,比如课程、电子书。
                </p>
                <p>
                    2、充值后不能在非ios设备使用,充值请参考 <a href="#">充值流程说明</a>。
                </p>
                <p>
                    3、充值后没有使用期限,无法提现退款或转赠他人。
                </p>
                <p>
                    4、如遇无法充值、充值失败问题,可关注“8分钟创伤服务号”联系我们。
                </p>
            </div>
            <div class="operation">
                <!--<div id="exchange-btn" class="aui-btn aui-btn-warning aui-margin-l-10">兑换码</div>-->
                <div id="invoice-switch" class="aui-padded-l-15 aui-padded-r-15 flex">
                    <p class="switch-text">
                        索要发票
                    </p>
                    <p>
                        <input id="invoice" type="checkbox" class="aui-switch">
                    </p>
                </div>
            </div>
            <div id="recharge" class="aui-btn aui-btn-block aui-btn-warning aui-margin-15">
                立即充值
            </div>
            <div class="aui-mask aui-mask-in"></div>
            <div id="pay-box">
                <p class="pay-tit">
                    选择支付
                </p>
                <p class="money">
                    ¥{{rechargeNum}}
                </p>
                <ul>
                    <li class="pay-item flex" v-if="wxpay==true">
                        <div class="pay-l flex aui-margin-l-15">
                            <div class="pay-icon"><img src="../image/share/wx-pay.png" alt="">
                            </div>
                            <p class="pay-text">
                                微信
                            </p>
                        </div>
                        <div class="pay-r aui-margin-r-15">
                            <input class="aui-radio" type="radio" value="wxpay" name="payType" checked>
                        </div>
                    </li>
                    <li class="pay-item flex" v-if="alipay==true">
                        <div class="pay-l flex aui-margin-l-15">
                            <div class="pay-icon"><img src="../image/share/zfb-pay.png" alt="">
                            </div>
                            <p class="pay-text">
                                支付宝
                            </p>
                        </div>
                        <div class="pay-r aui-margin-r-15">
                            <input class="aui-radio" type="radio" value="alipay" name="payType">
                        </div>
                    </li>
                    <li class="pay-item flex" v-if="iap==true">
                        <div class="pay-l flex aui-margin-l-15">
                            <div class="pay-icon"><img src="../image/share/ios.jpg" alt="">
                            </div>
                            <p class="pay-text">
                                苹果内购
                            </p>
                        </div>
                        <div class="pay-r aui-margin-r-15">
                            <input class="aui-radio" type="radio" value="iap" name="payType">
                        </div>
                    </li>
                    <li class="pay-item flex" v-if="exchange==true">
                        <div class="pay-l flex aui-margin-l-15">
                            <div class="pay-icon"><img src="../image/share/exchange.png" alt="">
                            </div>
                            <p class="pay-text">
                                兑换码
                            </p>
                        </div>
                        <div class="pay-r aui-margin-r-15">
                            <input class="aui-radio" type="radio" value="exchange" name="payType">
                        </div>
                    </li>
                </ul>
                <div id="pay" class="aui-btn aui-padded-t-5 aui-padded-b-5 aui-margin-b-10 aui-btn-warning" onclick="subOrder(this)">
                    立即支付
                </div>
            </div>
            <!--填写发票信息-->
            <div id="invoice-box">
                <div class="invoice-list flex">
                    <div class="list-label">
                        发票类型
                    </div>
                    <div class="list-input">
                        <select id="invoiceType">
                            <option value="咨询费">咨询费</option>
                            <option value="会务费">会务费</option>
                            <option value="信息服务费">信息服务费</option>
                        </select>
                    </div>
                </div>
                <div class="invoice-list flex">
                    <div class="list-label">
                        发票抬头
                    </div>
                    <div class="list-input">
                        <input type="text" id="invoiceHead" placeholder="请输入发票抬头">
                    </div>
                </div>
                <div class="invoice-list flex">
                    <div class="list-label">
                        发票内容
                    </div>
                    <div class="list-input">
                        <input type="text" id="invoiceCon" placeholder="请输入发票内容">
                    </div>
                </div>
                <div class="invoice-list flex">
                    <div class="list-label">
                        收件人姓名
                    </div>
                    <div class="list-input">
                        <input type="text" id="addressee" placeholder="请输入收件人姓名">
                    </div>
                </div>
                <div class="invoice-list flex">
                    <div class="list-label">
                        收件人电话
                    </div>
                    <div class="list-input">
                        <input type="text" id="AddresseePhone" placeholder="请输入收件人电话">
                    </div>
                </div>
                <div class="invoice-list flex">
                    <div class="list-label">
                        发票邮寄地址
                    </div>
                    <div class="list-input">
                        <input type="text" id="invoiceAddress" placeholder="请输入邮寄地址">
                    </div>
                </div>
                <div class="invoice-list flex">
                    <div class="list-label">
                        纳税人识别号
                    </div>
                    <div class="list-input">
                        <input type="text" id="taxpayerNum" placeholder="请输入纳税人识别号">
                    </div>
                </div>
                <div class="invoice-btns aui-padded-b-15 flex">
                    <div class="aui-btn cannel">
                        取消
                    </div>
                    <div class="aui-btn ok">
                        确定
                    </div>
                </div>
            </div>
        </div>
    </body>
    <script src="../script/api.js" type="text/javascript"></script>
    <script src="../script/mui.min.js" type="text/javascript"></script>
    <script src="../script/common.js" type="text/javascript"></script>
    <script src="../script/vue.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="../script/jquery-1.11.2.min.js" type="text/javascript"></script>
    <script>
        var vm = new Vue({
            el : ".aui-content",
            data : {
                myBalance : ‘‘,
                mealCoin : [],
                rechargeNum : 0,
                rechargeId : ‘‘,
                custom : false,
                systemType : ‘‘,
                iap : false, //苹果内购
                wxpay : true, //微信支付
                alipay : true, //支付宝支付
                exchange : true,//兑换码兑换
            }
        });
        apiready = function() {
            api.ajax({
                url : host + "/api/Coin/MyCoinValue",
                method : "get",
                headers : {
                    "Authorization" : "Bearer " + token
                }
            }, function(ret, err) {
                if (ret) {
                    if (ret.code == 200) {
                        vm.myBalance = ret.res.data.myCoinValue.toFixed(2);
                    } else {
                        api.alert({
                            msg : JSON.stringify(ret.res.msg)
                        });
                    }
                } else {
                    if (err.body.code == "403") {
                        api.openWin({
                            url : "user_login_win.html",
                            name : "user_login_win",
                        })
                    } else {
                        api.alert({
                            //msg : JSON.stringify(err)
                            msg : JSON.stringify("网络已断开")
                        });
                    }
                }
            });
            iosPay();
            mealCoin();
        };
        $(".recharge-list").on("click", "li", function() {
            var i = $(this).index();
            $(".recharge-list li").removeClass("li-active");
            $(".recharge-list li").eq(i).addClass("li-active");
            var num = $(this).attr(‘recharge-num‘);
            var id = $(this).attr(‘recharge-id‘);
            if (num) {
                vm.custom = false;
                vm.rechargeNum = num;
                vm.rechargeId = id;
            } else {
                api.prompt({
                    title : ‘自定义充值‘,
                    msg : ‘请输入想要充值的金额‘,
                    text : ‘‘,
                    type : ‘number‘,
                    buttons : [‘取消‘, ‘确定‘],
                }, function(ret, err) {
                    var index = ret.buttonIndex;
                    var text = ret.text;
                    if (text) {
                        vm.rechargeNum = text;
                        vm.custom = true;
                    }
                })
            }
        });
        $("#recharge").on("click", function() {
            vm.systemType = api.systemType;
            $(".aui-mask").show();
            $("#pay-box").show();
        });
        $("#invoice").on("change", function(e) {
            if ($(this).is(‘:checked‘)) {
                $(".aui-mask").show();
                $("#invoice-box").show()
            }
        });
        $(".cannel").on("click", function() {
            $(".aui-mask").hide();
            $("#invoice-box").hide();
            $("#invoice").prop("checked", false);
        });
        $(".ok").on("click", function() {
            if (!$("#invoiceHead").val()) {
                api.toast({
                    msg : ‘发票抬头不能为空‘
                })
                return;
            }
            if (!$("#invoiceCon").val()) {
                api.toast({
                    msg : ‘发票内容不能为空‘
                })
                return;
            }
            if (!$("#addressee").val()) {
                api.toast({
                    msg : ‘收件人姓名不能为空‘
                })
                return;
            }
            if (!$("#AddresseePhone").val()) {
                api.toast({
                    msg : ‘收件人电话不能为空‘
                })
                return;
            }
            if (!$("#invoiceAddress").val()) {
                api.toast({
                    msg : ‘邮寄地址不能为空‘
                })
                return;
            }
            if (!$("#taxpayerNum").val()) {
                api.toast({
                    msg : ‘纳税人识别号不能为空‘
                })
                return;
            }
            $(".aui-mask").hide();
            $("#invoice-box").hide();
        });
        $(".aui-mask").on("click", function() {
            $(".aui-mask").hide();
            $("#pay-box").hide();
            $("#invoice-box").hide();
            $("#invoice").prop("checked", false);
        });
        function goPage(page) {
            api.openWin({
                url : page + ".html",
                name : page
            })
        }

        function fillShow() {
            $("#invoice-con").show();
            $("#invoice-con").animate({
                top : "0",
                bottom : "0"
            });
        }

        function fillHide() {
            $("#invoice-con").animate({
                top : screenHeight,
                bottom : -screenHeight
            }, function() {
                $("#invoice").prop("checked", false);
                $("#invoice-con").hide();
            });
        }

        function subOrder(obj) {
            obj.disabled = true;
            var systemType = api.systemType;
            var payType = $("input[name=‘payType‘]:checked").val();
            if (payType == ‘exchange‘) {
                api.prompt({
                    msg : ‘请输入兑换码‘,
                    buttons : [‘取消‘, ‘确定‘]
                }, function(ret, err) {
                    var index = ret.buttonIndex;
                    var text = ret.text;
                    if (index == 2) {
                        api.ajax({
                            url : host + "/api/ExchangeCode/Exchange?code=" + text,
                            method : "post",
                            headers : {
                                "Authorization" : "Bearer " + token
                            }
                        }, function(ret, err) {
                            if (ret) {
                                if (ret.code == 200) {
                                    api.toast({
                                        msg : ret.res.msg
                                    });
                                    location.reload();
                                } else {
                                    api.toast({
                                        msg : ret.res.msg
                                    })
                                }
                            } else {
                                if (err.body.code = "403") {
                                    api.openWin({
                                        url : "user_login_win.html",
                                        name : "user_login_win",
                                    })
                                } else {
                                    api.alert({
                                        //msg : JSON.stringify(err)
                                        msg : JSON.stringify("网络已断开")
                                    });
                                }
                            }
                            //                    alert(JSON.stringify(ret));
                        })
                    }
                })
            } else {
                if (!vm.rechargeNum) {
                    api.toast({
                        msg : ‘请选择充值套餐‘
                    })
                    return;
                }
                var payData = {
                    body : {}
                };
                payData.body.SystemType = systemType;
                payData.body.CoinValue = vm.rechargeNum;
                if ($("#invoice").is(":checked")) {
                    payData.body.InvoiceType = $("#invoiceType").val();
                    payData.body.InvoiceTitle = $("#invoiceHead").val();
                    payData.body.InvoiceContent = $("#invoiceCon").val();
                    payData.body.UserName = $("#addressee").val();
                    payData.body.UserMobile = $("#AddresseePhone").val();
                    payData.body.UserAddress = $("#invoiceAddress").val();
                    payData.body.TaxpayerCode = $("#taxpayerNum").val();
                }
                if (payType == ‘wxpay‘) {
                    // 获取配置
                    api.ajax({
                        url : host + ‘/api/Orders/WxPayUnifiedOrder‘,
                        method : ‘post‘,
                        headers : {
                            ‘Content-Type‘ : ‘application/json;charset=utf-8‘,
                            ‘Authorization‘ : ‘Bearer ‘ + token
                        },
                        data : payData
                    }, function(ret, err) {
                        if (ret) {
                            if (ret.Status == ‘success‘) {
                                var wxPay = api.require(‘wxPay‘);
                                var data = JSON.parse(ret.PayData);
                                wxPay.payOrder({
                                    apiKey : data.appId,
                                    orderId : data.prepayId,
                                    mchId : data.partnerId,
                                    nonceStr : data.nonceStr,
                                    timeStamp : data.timeStamp,
                                    package : ‘Sign=WXPay‘,
                                    sign : data.sign
                                }, function(ret, err) {
                                    if (ret.status) {
                                        alert("支付成功!");
                                    } else {
                                        alert("订单支付失败");
                                    }
                                    api.closeToWin({
                                        name : ‘root‘
                                    });
                                    obj.disabled = false;
                                });
                            }
                        } else {
                            api.alert({
                                msg : JSON.stringify("发起支付失败")
                            });
                            obj.disabled = false;
                        }
                    });
                } else if (payType == ‘alipay‘) {
                    api.ajax({
                        url : host + ‘/api/Orders/AliPayUnifiedOrder‘,
                        method : ‘post‘,
                        headers : {
                            ‘Content-Type‘ : ‘application/json;charset=utf-8‘,
                            ‘Authorization‘ : ‘Bearer ‘ + token
                        },
                        data : payData
                    }, function(ret, err) {
                        if (ret) {
                            if (ret.Status == ‘success‘) {
                                var aliPayPlus = api.require(‘aliPayPlus‘);
                                var data = ret.PayData
                                aliPayPlus.payOrder({
                                    orderInfo : data.replace(/\"/g, "\‘")
                                }, function(ret, err) {
                                    if (ret.code == "9000") {
                                        alert(‘支付成功‘);
                                    } else if (ret.code == "8000") {
                                        alert(‘正在处理中...‘);
                                    } else if (ret.code == "4000") {
                                        alert(‘支付失败‘);
                                    } else if (ret.code == "5000") {
                                        alert(‘重复请求‘);
                                    } else if (ret.code == "6001") {
                                        alert(‘取消支付‘);
                                    } else if (ret.code == "6002") {
                                        alert(‘网络连接出错‘);
                                    } else if (ret.code == "6004") {
                                        alert(‘支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态‘);
                                    }
                                    api.closeToWin({
                                        name : ‘root‘
                                    });
                                })
                            }
                        } else {
                            api.alert({
                                msg : JSON.stringify("发起支付失败")
                            });
                            api.closeToWin({
                                name : ‘root‘
                            });
                            obj.disabled = false;
                        }
                    })
                } else if (payType == ‘iap‘) {
                    var iap = api.require(‘iap‘);
                    //alert(vm.rechargeId)
                    iap.purchase({
                        productId : vm.rechargeId
                    }, function(ret, err) {
                        if (ret) {
                            //alert(JSON.stringify(ret));
                            if (ret.state == 1) {
                                api.ajax({
                                    url : host + ‘/api/Orders/IapNotify‘,
                                    method : ‘post‘,
                                    headers : {
                                        ‘Content-Type‘ : ‘application/json;charset=utf-8‘,
                                        ‘Authorization‘ : ‘Bearer ‘ + token
                                    },
                                    data : {
                                        body : {
                                            IapProductId : ret.productId,
                                            TransactionId : ret.transactionId,
                                            Receipt : ret.receipt,
                                        }
                                    }
                                }, function(ret, err) {
                                    if (ret) {
                                        if (ret.code == 200) {
                                            api.alert({
                                                msg : JSON.stringify(ret.res.msg)
                                            });
                                            api.closeToWin({
                                                name : ‘root‘
                                            });
                                        } else {
                                            api.alert({
                                                msg : JSON.stringify(ret.res.msg)
                                            });
                                        }
                                        api.closeToWin({
                                            name : ‘root‘
                                        });
                                    } else {
                                        if (err.body.code = "403") {
                                            api.openWin({
                                                url : "user_login_win.html",
                                                name : "user_login_win",
                                            })
                                        } else {
                                            api.alert({
                                                //msg : JSON.stringify(err)
                                                msg : JSON.stringify("网络已断开")
                                            });
                                        }
                                    }
                                })
                            }
                        } else {
                            alert("苹果内购发起失败");
                            //alert(JSON.stringify(err));
                        }
                    });
                } else {
                    alert("请选择支付方式");
                }
            }
        }

        function iosPay() {
            api.ajax({
                url : host + ‘/api/AppConfig/AppConfig‘,
                method : ‘get‘,
                headers : {
                    ‘Content-Type‘ : ‘application/json;charset=utf-8‘,
                    ‘Authorization‘ : ‘Bearer ‘ + token
                }
            }, function(ret, err) {
                if (ret) {
                    if (ret.code == 200) {
                        if (ret.res.data.model.IsAppleAudit && api.systemType == "ios") {
                            vm.iap = true;
                            vm.wxpay = false;
                            vm.alipay = false;
                            vm.exchange = false;
                        }
                    }
                } else {
                    api.alert({
                        msg : JSON.stringify("发起支付失败")
                    });
                    obj.disabled = false;
                }
            })
        }

        function mealCoin() {
            api.ajax({
                url : host + ‘/api/Coin/MyCoinValue‘,
                method : ‘get‘,
                headers : {
                    ‘Content-Type‘ : ‘application/json;charset=utf-8‘,
                    ‘Authorization‘ : ‘Bearer ‘ + token
                }
            }, function(ret, err) {
                if (ret) {
                    if (ret.code == 200) {
                        vm.mealCoin = ret.res.data.iapProductList;
                    } else {
                        api.alert({
                            msg : JSON.stringify(ret.res.msg)
                        });
                    }
                } else {
                    if (err.body.code = "403") {
                        api.openWin({
                            url : "user_login_win.html",
                            name : "user_login_win",
                        })
                    } else {
                        api.alert({
                            //msg : JSON.stringify(err)
                            msg : JSON.stringify("网络已断开")
                        });
                    }
                }
            })
        }
    </script>
</html>

原文地址:https://www.cnblogs.com/yechangzhong-826217795/p/11288280.html

时间: 2024-10-15 21:32:44

apicloud含有微信支付。支付宝支付和苹果内购的代码的相关文章

如何申请三方支付接口 微信支付 支付宝支付 网银支付 钱包支付 扫码支付等

如何申请三方支付接口 微信支付 支付宝支付 网银支付 钱包支付  扫码支付等 首先,需要提供一整套申请支付接口的资料,如下 一.企业3证加盖公司公章 二.法人手持身份证照片 三.对应企业ICP备案的交易网站域名 资料审核初步审核之后,请把支付合作协议打印出来一式二份附带企业三证打印盖章邮寄到三方支付公司进一步审核 审核通过后,进行支付接口的对接 联调 最终正式环境上线

iOS不用官方SDK实现微信和支付宝支付XHPayKit

作者:朱晓辉Allen 链接:https://juejin.im/post/5a90dd3a6fb9a0634912b755 前言 前段时间由于项目需求,移除了项目中的微信支付SDK和支付宝支付SDK,这种情况下需要自己搞定支付,第一时间考虑到的是使用openshare,但是当下载openshare下来后发现,openshare的支付接口,并不能直接替换官方SDK支付接口, 官方SDK的实现逻辑是后台订单签名完成后,客服端传签名信息及参数给支付SDK,支付SDK生成协议url,然后拉起第三方支付

Android H5调起原生微信或支付宝支付

Android H5调起原生微信或支付宝支付 WebView调用原生微信或支付宝回调:其原理就是在shouldOverrideUrlLoading(final WebView view, String url)方法中进行拦截处理. 由于支付宝的取消支付之后跳转的页面显示不太友好,所以集成支付宝SDK-手机网站支付转APP支付,说明文档参照https://docs.open.alipay.com/204/105695/.按照说明集成aliPaySdk. 初始化WebView: private vo

苹果内购支付对接

public bool ValidateApplePay() { //客户端post过来的参数 string appleReceipt = Request.Form["appleReceipt"]; //苹果内购的验证收据 string orderId = PayHelper.GetOrderIDByPrefix("AP");  //订单编号 string amount = Request.Form["amount"];             

苹果内购和 Apple Pay

作者:CC老师_MissCC链接:http://www.jianshu.com/p/e3bc47e81785來源:简书 苹果内购 1.什么是内购? 如果你购买的商品,是在本app中使用和消耗的,就一定要用内购,否则会被拒绝上线,例如:游戏币,在线书籍,app中使用的道具等虚拟产品.如果购买的就是普通的商品,例如淘宝买东西等,就不需要用内购.内购的话,苹果公司需要抽取30%佣金. 当然,打赏功能被纳入内购项目中.所以例如微信打赏功能.直播项目打赏主播都必须采用内购. 可以简单理解成,带有内购功能的

iOS:苹果内购实践

iOS 苹果的内购 一.介绍 苹果规定,凡是虚拟的物品(例如:QQ音乐的乐币)进行交易时,都必须走苹果的内购通道,苹果要收取大约30%的抽成,所以不允许接入第三方的支付方式(微信.支付宝等),当然开发者可以设置后门,在审核时避开审核人员.这个是有风险的,一旦发现,app会被立即下架,还是老老实实接入内购吧. 二.注意 内购接入还是比较简单的,苹果提供了专门的框架<StoreKit/StoreKit.h>,只要按照它提供的api进行开发就行.然而,接入的过程还是有需要注意的地方,分别是:漏单处理

(转)Cocos 2d-X Lua 游戏添加苹果内购(二) OC和Lua交互代码详解

这是第二篇 Cocos 2d-X Lua 游戏添加苹果内购(一) 图文详解准备流程 这是前面的第一篇,详细的说明了怎样添加内购项目以及填写银行信息提交以及沙盒测试员的添加使用以及需要我们注意的东西,结果,被移除首页了!前面第一篇的内容是这篇的基础,前面那些不弄好,下面的商品信息你是请求不到的,这点需要大家特别注意...有需要前面提到的内容的孩子可以点击链接进去自己看看!! 这篇就具体的总结我们Lua和OC交互的内容以及内购具体的代码以及结果的测试说明: 内购部分OC的代码实现 先自己总结一下整个

苹果内购流程详解

苹果内购主要分为两部分 itunnes 相关配置 一.在itunnes 上配置相关信息资料 首先需要配置一些前提条件,详细步骤如下 1.进入itunnes选择协议,税务银行业务 2.完善资料信息,主要有3项(联系人,银行信息,税务信息) 4.完善联系人信息,一般填申请开发者账号人员的信息,可以修改 5.完善银行信息 需要银行支付号(就是开户银行的一个标识),银行卡持有人名字 6.完善税务信息 7.以下默认选择no 8.确认界面,下图可能不太对,当时我是上下2个界面,第四项要上下一致才行 二.上面

关于苹果内购(IAP)的一些问题以及那些坑

最近在研究苹果内购功能,所以,在网上找了一些资料,进行学习.但是,内购功能在实现的过程中,有很多坑,笔者算是真的遇到了好多啊,下面也是自己对内购的一些心得与体会吧! 我这里说的可能不太详尽,所以,我先把再网上看到的一些帖子贴在这里,以便大家做内购的时候,方便查找相关信息. 这里是一篇写的比较全面的帖子,但是没有写中间问题处理: <iOS开发内购全套图文教程> 在网上搜了一些相关的帖子,简单归纳总结了一下,觉得论坛里有一个叫Teng的世界的大神,写了三篇博客,写的很详细: [IAP支付之一]In