app id里的钱可以充值app游戏充值怎么退款吗?

&&&游戏点卡 &&&iTunes App Store 中国区 苹果账号 Apple ID 官方账户充值
iTunes App Store 中国区 苹果账号 Apple ID 官方账户充值
iTunes App Store 中国区苹果账号直充50元--[直充]
iTunes App Store 中国区苹果账号直充100元--[直充]
iTunes App Store 中国区苹果账号直充300元--[直充]
iTunes App Store 中国区苹果账号直充500元--[直充]
iTunes App Store 中国区苹果账号直充1000元--[直充]
iTunes App Store 中国区苹果账号直充1500元--[直充]
支付货币:
阿联酋迪拉姆
澳大利亚元
巴西里亚尔
菲律宾比索
沙特里亚尔
土耳其里拉
购买数量:
普通注册会员:16.04美元√6.822
VIP黄金会员:16.04美元
VIP白金会员:16.04美元
VIP钻石会员:16.04美元
终身VIP钻石会员:16.04美元
如果需要充值账号信息,会在下一步要求提供
421***客服这次的服务很好,处理问题很有耐心也很认真!
421***谢谢客服!这次的充值还是很高效!
421***充值速度很快!非常好!
che***很方便!!
421***充值速度很好!很赞!
q40***账号搞错了 还 麻烦 客服 谢谢 很满意
421***服务很好,充值速度很快!
q40***不错
q40***不错
HW2***客服人很好呢
服务承诺:唐朝卡向您保证所售商品均为游戏公司、游戏公司官方指定代理公司正规点卡产品,质量保证,请您放心购买!
声明:如遇到游戏公司、指定代理公司产品本身维护,发卡可能会延迟,请及时关注游戏官方网站!有钱没钱回家过年,提前祝大家春节快乐!
一年一度的农历春节即将来临,狮子威威在此代表威锋网及威锋网所有工作人员恭祝天下的...
在威锋十周年之际,第九届『WeiPhone 摄影大赛』拉开了帷幕,现在第一季开始征稿了!
根据苹果新总部 Campus 2 最新的航拍视频,我们可以看到很多配套设施也在逐步完工。
苹果开发人员网站上的一个新帖子显示,开发人员很快将在iOS 10.3中更改图标图像,而不...
如果这一行政命令被签署,这可能意味着苹果等科技公司需要付出更大的代价来招揽想要的...
当然,目前关于苹果下架伊朗应用的细节尚不清楚。
黑色的AirPods,和黑色的iPhone更搭哦。
《DROP'd》首先在画面上就一改以往的昏沉灰暗,使用了相当明亮的色调,一下子让人倍感...
《米亚夺宝传奇》采用了卡通的设计风格,而与此同时,多种色彩的合理搭配也让游戏的场...
科学原本应该是推动人类发展的力量,但是如果被坏人掌握的话,那对于人类来说就会是一...
这款游戏集快节奏操控与精选音轨于一身,试图打造与众不同的游戏体验。
国粹不愧是国粹,独特的皮影效果令人耳目一新!
经过最近几年的发展,MOBA 类游戏现在已经基本形成了其固定的游戏模式,审美疲劳之下...
游戏在中国区的本周新游推荐里不是太显眼,但当你抱着试一试的心情购买下载之后,就会...
黑色的AirPods,和黑色的iPhone更搭哦。
亚马逊较为宽松的认证环境已经催生了250多款兼容Alexa产品,而拿到苹果认证的仅有100...
周四的时候,美国商标专利局(USPTO)披露了一份来自苹果的“升华器 / 汽化器”专利申...
要知道新功能的作用,以及一些限制。
此前有用户指出,苹果因为收到的差评太多而删除部分评论。
安全摄像头 Dropcam 公司联合创始人和前 CEO Greg Duffy 将离开谷歌,并加入苹果,根...
希望更多我们喜欢的电影或者游戏,能推出相应主题的iPhone配件~
数据居然是不准确的?不管醉没醉,我们都不能酒后驾车!
苹果ID里有钱为什么游戏里不能充值
注册时间 最后登录
在线时间41 小时 UID
主题帖子人气
小苹果, 积分 39, 距离下一级还需 11 积分
苹果ID里有钱为什么游戏里不能充值苹果ID里有钱为什么游戏里不能充值
注册时间 最后登录
在线时间1381 小时 UID
主题帖子人气
我里面没有钱
注册时间 最后登录
在线时间919 小时 UID
主题帖子人气
可以在设备上设置不能进行支付的
注册时间 最后登录
在线时间0 小时 UID
主题帖子人气
威锋旗下产品
Hi~我是威威!
沪公网安备 29号 | 沪ICP备号-1
新三板上市公司威锋科技(836555)
增值电信业务经营许可证:
Powered by Discuz!12434人阅读
本文会给大家详细介绍iOS内购,这是本人16年5月底的开发过程,希望对看完此篇文章的人有所帮助。
本文基于XcodeVersion 7.3 (7D175)版本,手机是iPhone 6,9.3系统。
部分地方直接摘自网络,基本上是我的逻辑,省时省心省力。
一. 创建测试App
首先你需要登录 App的ItunesConnection,你会看到如下界面
简单的介绍一下这几个选项
1.我的App主要用于管理自己的App应用,例如编辑资料,上架,下架等。
2.销售和趋势主要是来查看App在各个平台的下载量,收入等方面数据,里面有曲线图等图文结合的方式给我们参考。
3.付款和财务报告显示的是你的收入以及付款等相关信息。
4.iAd主要是跟广告有关,开发者可以登录到Workbench,通过iAd对应用的广告进行控制。
5.用户和职能用于生成相应账号,例如苹果沙河测试账号。
6.协议,税务和银行业务则是你银行相关账户的信息设置。
在这里我们选择第一个选项,我的App, 然后点击左上角的加号,新建一个用来测试用的App。
点新建 App,会出现新建窗口;
在这里有几个需要填写的地方,名称自己取,平台IOS,语言选择了简体中文,套装ID也就是你的Bundle Identifier,需要你在 申请BundleID,SKU可以理解为用户看一看到的唯一标示,会体现在你的app的App Store的链接中。
二.添加内购
App创建好之后,我们打开创建的App,在左上角选择功能,会看到左侧的App 内购买项目。我们点击右下角的加号,为App添加内购项目。
之后我们会看到类型的选项,如下图
官方的注释写的很清楚了,只在这里简单的说下前两种:
- 消耗型项目 就像你玩游戏需要买金币,买钻石等,只要花钱就可以无限次的购买
- 非消耗型项目 就像你在App Store购买App,买了一次之后就不用再买第二次,你拥有永久使用权。
在我们的app中,是充值会员,所以选择的是第一种,可以无限次购买。
这里有几个选项,需要填写商品名称,产品ID以及价格等级,简单说明一下
1. 商品名称根据你的消费道具的实际意义来说明,比如“100颗宝石”,“100金币”等。
2. 产品ID是比较重要的,由项目自定义,只要唯一即可,因为测试,我在这里随便填写的123,在实际应用中,一定要认真填写。
3. 价格等级的话“查看价格表”中有对应的说明,可以对照着表中每个国家的货币价格与等级来选择
接下来是语言选择,和上传快照如下图
点击添加语言,填写名称和描述,这里我们依然选择简体中文,如下
审核备注,根据实际情况填写,可以不填。而下面的屏幕快照,则是商品图片,以像素为单位,最低尺寸为321,390,尺寸需求如下图,上传即可。
到这里为止, 我们的内购项目则添加完成。接下来则是测试阶段了。
三.申请沙盒测试账号(用来测试购买项目)
这个账号,是利用苹果的沙盒测试环境来模拟AppStore的购买流程,你肯定不会想要用真实RMB去购买测试吧?
首先我们回到iTunes Connect中,在这里我们选择用户和职能。
然后在上面的第三个选项沙箱技术测试员中点击加号,添加测试员。
在信息填写页面只简单说两句。
所有信息都可以随意填写,不用管是否真实。
App Store地区选择,一定要选对,它对应的是你创建的App的地区, 你App是中国的话, 在这里我们依然选择中国。
此账号只能用来测试,不要在正式的appstore上使用
填写完毕,点击保存后,我们则生成一个测试账号,当然这个账号是可以随时删除和添加的。
之后终于到了写代码的时候了,点开你的Xcode创建你的项目!
大部分代码都可以在.m文件中实现。
#import "ViewController.h"
#import &StoreKit/StoreKit.h&
#import "SVProgressHUD.h"
@interface ViewController ()&SKPaymentTransactionObserver,SKProductsRequestDelegate&
@property (nonatomic,copy) NSString *currentProId;
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(100, 100, 100, 100);
button.backgroundColor = [UIColor greenColor];
[button setTitle:@"6元" forState:UIControlStateNormal];
[button addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:button];
- (void)btnClick:(UIButton *)button
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
_currentProId = @"123";
if([SKPaymentQueue canMakePayments]){
[self requestProductData:product];
NSLog(@"不允许程序内付费");
- (void)requestProductData:(NSString *)type{
NSLog(@"-------------请求对应的产品信息----------------");
[SVProgressHUD showWithStatus:nil maskType:SVProgressHUDMaskTypeBlack];
NSArray *product = [[NSArray alloc] initWithObjects:type,nil];
NSSet *nsset = [NSSet setWithArray:product];
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:nsset];
request.delegate = self;
[request start];
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
NSLog(@"--------------收到产品反馈消息---------------------");
NSArray *product = response.products;
if([product count] == 0){
[SVProgressHUD dismiss];
NSLog(@"--------------没有商品------------------");
NSLog(@"productID:%@", response.invalidProductIdentifiers);
NSLog(@"产品付费数量:%lu",(unsigned long)[product count]);
SKProduct *p = nil;
for (SKProduct *pro in product) {
NSLog(@"%@", [pro description]);
NSLog(@"%@", [pro localizedTitle]);
NSLog(@"%@", [pro localizedDescription]);
NSLog(@"%@", [pro price]);
NSLog(@"%@", [pro productIdentifier]);
if([pro.productIdentifier isEqualToString:_currentProId]){
SKPayment *payment = [SKPayment paymentWithProduct:p];
NSLog(@"发送购买请求");
[[SKPaymentQueue defaultQueue] addPayment:payment];
- (void)request:(SKRequest *)request didFailWithError:(NSError *)error{
[SVProgressHUD showErrorWithStatus:@"支付失败"];
NSLog(@"------------------错误-----------------:%@", error);
- (void)requestDidFinish:(SKRequest *)request{
[SVProgressHUD dismiss];
NSLog(@"------------反馈信息结束-----------------");
#define SANDBOX @"https://sandbox./verifyReceipt"
#define AppStore @"https://buy./verifyReceipt"
-(void)verifyPurchaseWithPaymentTransaction{
NSURL *receiptUrl=[[NSBundle mainBundle] appStoreReceiptURL];
NSData *receiptData=[NSData dataWithContentsOfURL:receiptUrl];
NSString *receiptString=[receiptData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
NSString *bodyString = [NSString stringWithFormat:@"{\"receipt-data\" : \"%@\"}", receiptString];
NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
NSURL *url=[NSURL URLWithString:SANDBOX];
NSMutableURLRequest *requestM=[NSMutableURLRequest requestWithURL:url];
requestM.HTTPBody=bodyD
requestM.HTTPMethod=@"POST";
NSError *error=nil;
NSData *responseData=[NSURLConnection sendSynchronousRequest:requestM returningResponse:nil error:&error];
if (error) {
NSLog(@"验证购买过程中发生错误,错误信息:%@",error.localizedDescription);
NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@",dic);
if([dic[@"status"] intValue]==0){
NSLog(@"购买成功!");
NSDictionary *dicReceipt= dic[@"receipt"];
NSDictionary *dicInApp=[dicReceipt[@"in_app"] firstObject];
NSString *productIdentifier= dicInApp[@"product_id"];
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
if ([productIdentifier isEqualToString:@"123"]) {
int purchasedCount=[defaults integerForKey:productIdentifier];
[[NSUserDefaults standardUserDefaults] setInteger:(purchasedCount+1) forKey:productIdentifier];
[defaults setBool:YES forKey:productIdentifier];
NSLog(@"购买失败,未通过验证!");
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transaction{
for(SKPaymentTransaction *tran in transaction){
switch (tran.transactionState) {
case SKPaymentTransactionStatePurchased:{
NSLog(@"交易完成");
[self verifyPurchaseWithPaymentTransaction];
[[SKPaymentQueue defaultQueue] finishTransaction:tran];
case SKPaymentTransactionStatePurchasing:
NSLog(@"商品添加进列表");
case SKPaymentTransactionStateRestored:{
NSLog(@"已经购买过商品");
[[SKPaymentQueue defaultQueue] finishTransaction:tran];
case SKPaymentTransactionStateFailed:{
NSLog(@"交易失败");
[[SKPaymentQueue defaultQueue] finishTransaction:tran];
[SVProgressHUD showErrorWithStatus:@"购买失败"];
- (void)completeTransaction:(SKPaymentTransaction *)transaction{
NSLog(@"交易结束");
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
- (void)dealloc{
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
在这里需要注意几点,
1. 代码中的_currentProId所填写的是你的购买项目的的ID,这个和第二步创建的内购的productID要一致;本例中是 123。
2. 在监听购买结果后,一定要调用[[SKPaymentQueue defaultQueue] finishTransaction:tran];来允许你从支付队列中移除交易。
3. 沙盒环境测试appStore内购流程的时候,请使用没越狱的设备。
4. 请务必使用真机来测试,一切以真机为准。
5. 项目的Bundle identifier需要与您申请AppID时填写的bundleID一致,不然会无法请求到商品信息。
6. 真机测试的时候,一定要退出原来的账号,才能用沙盒测试账号
7. 二次验证,请注意区分宏, 测试用沙盒验证,App Store审核的时候也使用的是沙盒购买,所以验证购买凭证的时候需要判断返回Status Code决定是否去沙盒进行二次验证,为了线上用户的使用,验证的顺序肯定是先验证正式环境,此时若返回值为21007,就需要去沙盒二次验证,因为此购买的是在沙盒进行的。
附:苹果支付错误目录
Status Code
Description
The App Store could not read the JSON object you provided.
The data in the receipt-data property was malformed or missing.
The receipt could not be authenticated.
The shared secret you provided does not match the shared secret on file for your account.Only returned for iOS 6 style transaction receipts for auto-renewable subscriptions.
The receipt server is not currently available.
This receipt is valid but the subscription has expired. When this status code is returned to your server, the receipt data is also decoded and returned as part of the response.Only returned for iOS 6 style transaction receipts for auto-renewable subscriptions.
This receipt is from the test environment, but it was sent to the production environment for verification. Send it to the test environment instead.
This receipt is from the production environment, but it was sent to the test environment for verification. Send it to the production environment instead.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16249次
排名:千里之外
(1)(1)(1)(2)(3)(1)(1)(1)(1)}

我要回帖

更多关于 app id不能充值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信