ios哪个版本支付宝ios历史版本支

iOS支付宝 9.x 版本首页效果
iOS支付宝 9.x 版本首页效果
支付宝 9.x 版本首页效果
对于新版支付宝首页的产品功能这里就不说什么了,一大堆人吐槽,我们只想要一个好好的支付工具,阿里硬是要融入社交...
今天这里不是来评论支付宝功能的,而是作为一个iOS开发人员在使用的过程中发现,首页这滑动好“怪异”啊~~
首先,右侧的滚动条的位置好怪!为什么在中间?只能说明一个问题,这个tableview是从这里开始的。
其次,既然tableview在中间开始,那上面那一片view是如何滚动的(从滚动条可以看出不是tableviewheader)?而且和tableview做到无缝衔接。
再次,滑动tableview上面那块view,直接响应滑动。
通过上面种种奇怪的现象,于是我决定针对这个效果些一个demo来玩玩。
因为是demo嘛,所以代码就尽量简单,处理就基本只放在一个class中,这样比较容易理解,大家就不要吐槽这一块了~~~
经过我反复实验,还是 UIScrollView + UITableView 的方式实现最靠谱,那问题来了,如何处理两个ScrollView的滑动冲突?
答案就是关掉一个滑动!当然就是关掉tableview的滑动,通过外层scrollview的offset来直接控制tableview的滑动,关键代码:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let y = scrollView.contentOffset.y
if y &= 0 {
var newFrame = self.headerView.frame
newFrame.origin.y = y
self.headerView.frame = newFrame
newFrame = self.mainTableView.frame
newFrame.origin.y = y + topOffsetY
self.mainTableView.frame = newFrame
//偏移量给到tableview,tableview自己来滑动
self.mainTableView.setScrollViewContentOffSet(point: CGPoint(x: 0, y: y))
//功能区状态回归
newFrame = self.functionHeaderView.frame
newFrame.origin.y = 0
self.functionHeaderView.frame = newFrame
} else if y & functionHeaderViewHeight && y & 0{
//处理功能区隐藏和视差
var newFrame = self.functionHeaderView.frame
newFrame.origin.y = y/2
self.functionHeaderView.frame = newFrame
//处理透明度
let alpha = (1 - y/functionHeaderViewHeight*2.5 ) & 0 ? (1 - y/functionHeaderViewHeight*2.5 ) : 0
functionHeaderView.alpha = alpha
if alpha & 0.5 {
let newAlpha =
alpha*2 - 1
mainNavView.alpha = newAlpha
coverNavView.alpha = 0
let newAlpha =
mainNavView.alpha = 0
coverNavView.alpha = 1 - newAlpha
这里的关键就是当想上滑动的时候,实际就是滑动最外层的scrollview,然而想下滑动到顶的时候仅仅只讲offset传递给tableview让其继续滚动。
tableview嵌入方式借鉴了:
一个iOS开发者3459人阅读
支付宝和微信(2)
1.iOS 集成流程
说实话,新版的官方指南,比老板的好多了,老板的集成总是遇到很多坑,新版的集成比较顺利,
这里就不在一一介绍集成过程了,
关于openssl/asn.h file not found的问题
2.在开发者账号的真正公司项目中如何使用支付宝支付功能
有两种路径做处理
1.客户端最快,最方便的处理方式,就是按照官方的说明,所有信息都在服务端处理
后台需要处理的事宜:
设置商品信息
将商品信息按要求拼接成字符串
用私钥将商品信息签名 .
将加签成功后的字符串格式化成订单字符串,返回给客户端orderStr
signedString签名字符串base64编码和UrlEncode处理(官方demo),这种方式,不要忘记了让后对对signedString进行这两步处理
客户端需要处理的事宜:
获取后台返回的订单字符串,调用支付宝支付接口发起支付请求
处理支付宝返回的支付结果
// 完成支付宝支付需要的四个文件
#import &AlipaySDK/AlipaySDK.h&
#import "Order.h"
- (void)payBtnClick { "下面的代码" }
// 向后台发起网络请求获取signedString,进一步处理
就能调用成功了
2.商品信息拼接在客户端处理,加签过程在后台处理
- (void)payBtnClick { "下面的代码" }
1.拼接商品信息转给后台
2.将商品信息传递给后天,让后台加签,返回加签字符串,自己做处理后发送请求
3.上图中红框的问题,就是本次实际开发中遇到的坑 AL140247报错
后台加签时,多signedStrign只进行了base64编码,没有进行UrlEncode处理,总是报错
AL140247这个错误
进行下面处理后就没有问题了
其他问题:难点就是商品订单的组装拼接,传入后台用私钥加签,对加签的字符串base64和UrlEncode处理,然后就是讲商品信息也进行UrlEncode,最后就是拿到处理后的商品信息和加签串按格式拼接,向支付宝发起请求
调用支付宝支付,支付宝闪退
// 参数一定要正确
关于支付结果的回调提示用户支付结果的问题
用户手机上安装了支付宝APP的情况–AppDelegate.m中,支付结果的回调会走这里的方法,支付成功的时候发通知,方便界面收到支付成功的界面候进行跳转
收到通知后处理相应逻辑
2.如果用户没有安装支付宝app,就会调起网页的支付宝界面支付,网页支付成功的回调走的不是appdelegate的方法,而是点击支付按钮支付时写的方法
网页支付成功的回调走的不是appdelegate的方法,而是支付时写的方法
重复支付,很少遇到这种情况:AL138869
这种情况是,此种订单用户已经完成了操作
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:80680次
积分:1861
积分:1861
排名:千里之外
原创:108篇
评论:17条
(3)(9)(1)(2)(2)(1)(4)(27)(45)(22)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'iOS开发之第三方支付支付宝支付教程
支付宝支付大致流程为 :
1. 公司与支付宝进行签约 ,获得商户ID(partner)和账号ID(seller)和私钥(privateKey),开发中用到的,很重要。
请商户在里进行产品签约;
审核:商户登录,可在&签约订单&中查看审核进度。 2. 下载支付宝SDK 网址:
3. 生成订单 ,签名。
4. 开始支付,调起支付宝客户端或者网页端,然后进行支付,由支付宝与银行进行打交道,并由支付宝返回处理的结果给客户端。
5. 展示对应的支付结果给客户。
下面详细介绍, 商户公钥,商户私钥,支付宝公钥,支付宝私钥,RSA生成方式,DSA生成方式。
商户公钥: 这个上传到支付宝后台换取 支付宝的公钥 、 支付宝公钥(后面代码中会用到,非常重要)
商户私钥: 这个下订单的时候会用到。 (非常重要)
支付宝公钥: 由商户公钥上传到支付宝后台生成 支付宝公钥 (非常重要)
1.商户公钥与商户私钥的生成 (DSA方式):
生成方式一(推荐):使用支付宝提供的一键生成工具(内附使用说明)
Windows:MAC OSX:
OpenSSL& pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out rsa_private_key_pkcs8.pem #开发者需要将私钥转换成PKCS8格式
OpenSSL& rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem #生成公钥
OpenSSL& exit #退出OpenSSL程序
解压打开文件夹,直接运行&支付宝RAS密钥生成器SHAwithRSA.bat&(WINDOWS)或&SHAwithRSA1024_mand&(MACOSX),点击&生成RSA密钥&,会自动生成公私钥,然后点击&打开文件位置&,即可找到工具自动生成的密钥。
生成方式二:也可以使用命令生成
首先进入OpenSSL工具,再输入以下命令。
OpenSSL& genrsa -out rsa_private_key.pem 1024#生成私钥
经过以上步骤,开发者可以在当前文件夹中(OpenSSL运行文件夹),看到rsa_private_key.pem(RSA私钥)、rsa_private_key_pkcs8.pem(pkcs8格式RSA私钥)和rsa_public_key.pem(对应RSA公钥)3个文件。开发者将私钥保留,将公钥提交给支付宝网关,用于验证签名。以下为私钥文件和公钥文件示例。
注意:对于使用Java的开发者,将pkcs8在console中输出的私钥去除头尾、换行和空格,作为开发者私钥,对于.NET和的开发者来说,无需进行pkcs8命令行操作。
更详细信息:
2.商户公钥与商户私钥的生成 (DSA方式):
进入,再输入以下命令。
OpenSSL& dsaparam-outdsa_param.pem1024#生成参数文件
OpenSSL& gendsa-outdsa_private_key.pemdsa_param.pem#生成私钥
OpenSSL& pkcs8-topk8-informPEM-indsa_private_key.pem-outformPEM-nocrypt-outdsa_private_key_pkcs8.pem#Java开发者需要将私钥转换成PKCS8格式
OpenSSL& dsa-indsa_private_key_pkcs8.pem-pubout-outdsa_public_key.pem #生成公钥
OpenSSL& exit #退出OpenSSL程序
经过以上步骤,开发者可以在当前文件夹中(OpenSSL运行文件夹),看到dsa_private_key.pem(DSA私钥)、dsa_private_key_pkcs8.pem(pkcs8格式DSA私钥)、dsa_public_key.pem(对应DSA公钥)和dsa_param.pem(参数文件)4个文件。开发者将私钥保留,将公钥提交给支付宝网关,用于验证签名。
注意:对于使用Java的开发者,将pkcs8在console中输出的私钥去除头尾、换行和空格,作为开发者私钥,对于.NET和PHP的开发者来说,无需进行pkcs8命令行操作。
更详细信息:
3. 上传RSA 商户公钥 , 获取支付宝公钥。 以及查看支付宝 RSA生成公钥。
上传RSA商户公钥:
查看支付宝RSA生成公钥:
4. 上传DSA商户公钥 , 获取支付宝公钥。 以及查看支付宝DSA生成公钥。
上传DSA商户公钥:
查看支付宝DSA生成公钥:
通过上面的讲解:
大家应该吧 : 商户私钥、 支付宝公钥、商户ID(partner)和账号ID(seller) 都记录下来。
3.支付宝 SDK 集成讲解:
1. 从下载出来的SDK中吧以下文件取出来,并保存到另外一个文件夹,如下文件:
2。我们把上面这个文件拖入新建的工程里面。
3. 导入依赖库 (出现莫名其妙的错误的时候,多检查下 依赖库, 看是不是添加少了)
然后编译程序, 然后发现 unknown type nesting ,int, nsdata之类的语句, 这个是因为没有引入对应的框架。
解决办法在出错的类里面加上
在编译程序:说openssl/asn1.h not found.
解决方法如下:
现在编译项目,应该是编译通过了。
设置 URL types
设置 支付宝白名单。 在info.plist 文件中添加
项目结构预览:
4.正式编码:
appdelegate.h
#import &Product.h&
alipyDelegate
-(void)alipydidS
-(void)alipydidF
@interface AppDelegate : UIResponder
@property (strong, nonatomic) UIWindow *
@property (weak
, nonatomic) id aliD
-(void)payByAlipay:(Product *)
appDelegate.m
#import &AppDelegate.h&
#import &Product.h&
#import &Order.h&
#import &DataSigner.h&
@interface AppDelegate ()
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
return YES;
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options{
[self alipayUrlAction:url];
return YES;
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
//有多中支付方式,要用scheme 来进行判断,看是那种途径的url.
[self alipayUrlAction:url];
return YES;
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
[self alipayUrlAction:url];
return YES;
-(void)alipayUrlAction:(NSURL *)url{
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
if ([[resultDic valueForKey:@&resultStatus&] intValue] == 9000) {
if ([_aliDelegate respondsToSelector:@selector(alipydidSuccess)]) {
[_aliDelegate alipydidSuccess];
if ([_aliDelegate respondsToSelector:@selector(alipydidFaile)]) {
[_aliDelegate alipydidFaile];
-(void)payByAlipay:(Product *)product{
*商户的唯一的parnter和seller。
*签约后,支付宝会为每个商户分配一个唯一的 parnter 和 seller。
/*============================================================================*/
/*=======================需要填写商户app申请的===================================*/
/*============================================================================*/
NSString *partner = @&&;
NSString *seller = @&&;
签约账号。
NSString *privateKey = @&&;
//partner和seller获取失败,提示
if ([partner length] == 0 ||
[seller length] == 0 ||
[privateKey length] == 0)
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@&提示&
message:@&缺少partner或者seller或者私钥。&
delegate:self
cancelButtonTitle:@&确定&
otherButtonTitles:nil];
[alert show];
*生成订单信息及签名
//将商品信息赋予AlixPayOrder的成员变量
Order *order = [[Order alloc] init];
order.partner =
order.sellerID =
order.outTradeNO = @&xxxxxx&; //订单ID(由商家自行制定)
order.subject = product.productN //商品标题
order.body = product.productN //商品描述
order.totalFee = [NSString stringWithFormat:@&%.2f&,product.price]; //商品价格
order.notifyURL =
@&&; //回调URL
order.service = @&mobile.securitypay.pay&;
order.paymentType = @&1&;
order.inputCharset = @&utf-8&;
order.itBPay = @&30m&;
order.showURL = @&&;
//应用注册scheme,在AlixPayDemo-Info.plist定义URL types
NSString *appScheme = @&alisdkdemo&;
//将商品信息拼接成字符串
NSString *orderSpec = [order description];
NSLog(@&orderSpec = %@&,orderSpec);
//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
id signer = CreateRSADataSigner(privateKey);
NSString *signedString = [signer signString:orderSpec];
//将签名成功字符串格式化为订单字符串,请严格按照该格式
NSString *orderString =
if (signedString != nil) {
orderString = [NSString stringWithFormat:@&%@&sign=\&%@\&&sign_type=\&%@\&&,
orderSpec, signedString, @&RSA&];
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@&reslut = %@&,resultDic);
if ([[resultDic valueForKey:@&resultStatus&] intValue] == 9000) {
if ([_aliDelegate respondsToSelector:@selector(alipydidSuccess)]) {
[_aliDelegate alipydidSuccess];
if ([_aliDelegate respondsToSelector:@selector(alipydidFaile)]) {
[_aliDelegate alipydidFaile];
ViewController.h
@interface ViewController : UIViewController
ViewController.m
#import &ViewController.h&
#import &Product.h&
#import &Order.h&
#import &AppDelegate.h&
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITableView *myTableV
@property(nonatomic, strong)NSMutableArray *productL
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self generateData];
#pragma mark -
#pragma mark
==============产生随机订单号==============
- (NSString *)generateTradeNO
static int kNumber = 15;
NSString *sourceStr = @&ABCDEFGHIJKLMNOPQRSTUVWXYZ&;
NSMutableString *resultStr = [[NSMutableString alloc] init];
srand((unsigned)time(0));
for (int i = 0; i & kN i++)
unsigned index = rand() % [sourceStr length];
NSString *oneStr = [sourceStr substringWithRange:NSMakeRange(index, 1)];
[resultStr appendString:oneStr];
return resultS
#pragma mark -
#pragma mark
==============产生订单信息==============
- (void)generateData{
NSArray *subjects = @[@&1&,
@&2&,@&3&,@&4&,
@&5&,@&6&,@&7&,
@&8&,@&9&,@&10&];
NSArray *body = @[@&我是测试数据&,
@&我是测试数据&,
@&我是测试数据&,
@&我是测试数据&,
@&我是测试数据&,
@&我是测试数据&,
@&我是测试数据&,
@&我是测试数据&,
@&我是测试数据&,
@&我是测试数据&];
self.productList = [[NSMutableArray alloc] init];
for (int i = 0; i & [body count]; ++i) {
Product *product = [[Product alloc] init];
product.productName = [body objectAtIndex:i];
product.price = 0.01f+pow(10,i-2);
[self.productList addObject:product];
#pragma mark -
#pragma mark UITableViewDelegate
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
return 55.0f;
#pragma mark -
#pragma mark UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return [self.productList count];
//用TableView呈现测试数据,外部商户不需要考虑
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:@&Cell&];
Product *product = [self.productList objectAtIndex:indexPath.row];
cell.textLabel.text = product.productN
cell.detailTextLabel.text = [NSString stringWithFormat:@&一口价:%.2f&,product.price];
#pragma mark -
#pragma mark
==============点击订单模拟支付行为==============
//选中商品调用支付宝极简支付
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
*点击获取prodcut实例并初始化订单信息
Product *product = [self.productList objectAtIndex:indexPath.row];
AppDelegate *appdele = (AppDelegate *)[UIApplication sharedApplication].
[appdele payByAlipay:product];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
@interface Product : NSObject
@property (nonatomic, copy)
NSString* productN
@property (nonatomic, assign)
#import &Product.h&
@implementation Product
上传RSA公钥前言:继上次《》以来,一直没有太多时间,更新总结详细支付这样的长篇大论,很抱歉。今天,推出支付宝支付的详细流程。
1、开始下载和查看支付宝支付的Demo。
  我们直接进入支付宝的支付平台参考来进行集成支付宝支付:
  集成过程基本上就是按照上面的四个流程就可以完成集成iOS的支付宝SDK。
  好,我们实际步骤来一边流程:
  点击下载SDK和Demo
  然后就会进入下面的一页,网址这里顺便给出:
  下载之后解压:
  然后运行Demo之后:
  我们会发现,不管我们点击那个Cell都会弹出这个的信息提示框。我们需要在源码中找到弹出这个信息的地方,这里顺便教大家一个快速找到目标代码的方法。
  你看弹出框提示的是:"缺少partner或者seller或者私钥",然后就这样:
  从上面图中的148、149、150行代码,我们可以看到,我们需要三个参数的值:partner、seller、privateKey。
  那么这三个参数就需要商户app申请的:
2、我们自己来实现支付宝支付功能:
  2-1、添加SDK:
  2-2、添加SDK依赖的类库:
  2-3、我们创建一个订单对象: AlipayOrder 
  2-4、然后我们把支付宝Demo中的订单对象的参数都拷贝进去:
  2-5、接着我们来处理支付的代码:
  2-6、下面我对拷贝的部分代码适当的抽取和修改,最后放在在了一个aliPay的方法中:
1 - (void)aliPay {
// 支付宝支付
/* 在调用支付宝支付之前,需要我们将相关订单参数发送至我们的后台服务器,由后台服务器进行签名处理,
并返回客户端所有相关参数,客户端直接使用参数调起支付宝支付。
*商户的唯一的parnter和seller。
*签约后,支付宝会为每个商户分配一个唯一的 parnter 和 seller。
/*============================================================================*/
/*=======================需要填写商户app申请的===================================*/
/*============================================================================*/
NSString *partner = @"";
NSString *seller = @"";
NSString *privateKey = @"";
/*============================================================================*/
/*============================================================================*/
/*============================================================================*/
//partner和seller获取失败,提示
if ([partner length] == 0 ||
[seller length] == 0 ||
[privateKey length] == 0)
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
message:@"缺少partner或者seller或者私钥。"
delegate:self
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alert show];
*生成订单信息及签名
//将商品信息赋予AlixPayOrder的成员变量
AlipayOrder *order = [[AlipayOrder alloc] init];
order.partner =
order.seller =
order.tradeNO = @""; //订单ID(由商家自行制定)
order.productName = @"测试商品标题"; //商品标题
order.productDescription = @"测试商品描述"; //商品描述
order.amount = @"0.01"; //商品价格
order.notifyURL =
@""; //回调URL
order.service = @"mobile.securitypay.pay";
order.paymentType = @"1";
order.inputCharset = @"utf-8";
order.itBPay = @"30m";
order.showUrl = @"";
//应用注册scheme,在AlixPayDemo-Info.plist定义URL types
NSString *appScheme = @"alisdkdemo";
//将商品信息拼接成字符串
NSString *orderSpec = [order description];
NSLog(@"orderSpec = %@",orderSpec);
//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
id&DataSigner& signer = CreateRSADataSigner(privateKey);
// 签名值由服务器处理并返回客户端
NSString *signedString = @"xxxxxxx_sign";
//将签名成功字符串格式化为订单字符串,请严格按照该格式
NSString *orderString =
if (signedString != nil) {
orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
orderSpec, signedString, @"RSA"];
// 发起支付
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"支付结果 reslut = %@",resultDic);
  2-7、另外我们需要在应用中注册appScheme,这个Scheme可以从上面代码中获取:
  2-8、添加appScheme  
  2-9、支付代码处理之后,我们处理回调结果,我们需要在Appdelegate中添加支付宝头文件#import &AlipaySDK/AlipaySDK.h&并添加处理回到结果的代理方法:
  2-10、别忘了添加按钮监听和设置商户ID的参数
  补充:如果我们在使用支付宝支付的时候,如果我们手机安装了支付宝app,就会调用支付宝进行支付。
                     如果我们手机没有安装了支付宝app,就会调用H5界面进行支付。
3、获取商户支付ID
转载注明出处:,尊重劳动成果。
阅读(...) 评论()再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
威锋网7月10日消锋网7月10日消息,《植物大战僵尸2》 如今...
威锋网7月10日消息,《植物大...
近日,开发商 Esquilax Games ..
说到方块游戏,相信有很多朋友应该还会记得 Gavina Games 早...
威锋网7月10日消息,《植物大...
近日,开发商 Esquilax Games ..
说到方块游戏,相信有很多朋友应该还会记得 Gavina Games 早...
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
再吸金!SE推出《最终幻想:全员勇者》钥匙扣
您需要通过验证再能继续浏览 3秒后开始验证
威锋旗下产品
Hi~我是威威!
 粤公网安备 11号
新三板上市公司威锋科技(836555)
增值电信业务经营许可证:
Powered by Discuz!}

我要回帖

更多关于 ios支付宝9.2版本 的文章

更多推荐

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

点击添加站长微信