iOS应用如何隐藏第三方支付接口开发

输入关键字或相关内容进行搜索
IOS平台最新集成了苹果官方提供的应用内支付(In-App Purchase),新的插件是在plus.payment的基础上进行了扩展,但是在使用方法上与原有的支付API的使用流程稍有区别,下面对IAP插件的使用方法进行说明HBuilder 里的调试基座默认不带IAP支付通道,如果需要调试IAP需要使用开发证书生成一个自定义调试基座,用来实现IAP的开发和调试。
自定义调试基座使用方法请参考文档手机用户可以在“设置-&通用-&访问限制-&App 内购买项目”中关闭支付,如果用户关闭了IAP,开发者将获取不到ID为“appleiap”的支付通道。IAP支付对PaymentChannel对象进行了扩展添加了以下几个方法
requestOrder
向Appstore请求有效的商品详情
restoreComplateRequest 向Appstore发送请求获取已经购买商品(非消耗型项目和订阅项目)的支付信息,获取成功以后会返回一个的已购商品收据列表。下面对应用内支付的使用方法进行说明,文中API的参数及使用实例请参考购买商品接口使用方法\n
首先调用plus.payment.getChannels获取支付通道,IAP支付通道的ID为“appleiap”
调用ID为“appleiap”的PaymentChannel对象的requestOrder方法,像Appstore请求有效的商品详情。注意:IAP支付必须在调用payment.request方法之前,调用requestOrder方法,否则调用payment.request将会报错。
调用plus.payment.request方法发起支付请求,传入statement的参数为JSON对象,可以设置如下参数
productid String(必选)要支付的商品的标识(必须是调用requestOrder返回的有效的商品标识)
username String(可选)购买商品用户的用户名
String (可选)购买商品的数量,如果不填写默认为1
&meta charset=&utf-8& /&
&meta name=&viewport& content=&initial-scale=1.0, maximum-scale=1.0, user-scalable=no& /&
&title&Hello H5+&/title&
&script type=&text/javascript&&
var IAPOrders = ['io.dcloud.payTest1', 'io.dcloud.payTest2'];
function plusReady() {
// 获取支付通道
plus.payment.getChannels(function(channels) {
for (var i in channels) {
if (channel[i].id == 'appleiap') {
iapChannel = channel[i];
iapChannel.requestOrder(IAPOrders, function(event) {
for (var index in event) {
var OrderItem = event[index];
outLine(&Title:& + OrderItem.title + &Price:& + OrderItem.price + &Description:& + OrderItem.description + &ProductID:& + OrderItem.productid);
}, function(errormsg) {
outLine(&获取支付通道失败:& + errormsg.message);
}, function(e) {
outLine(&获取支付通道失败:& + e.message);
document.addEventListener('plusready', plusReady, false);
function pay(id) {
plus.payment.request(iapChannel, {
&productid&: id,
&username&: &appusername&,
&quantity&: 2
}, function(result) {
alert(JSON.stringify(result));
}, function(e) {
plus.nativeUI.alert(&更多错误信息请参考支付(Payment)规范文档:http://www.html5plus.org/#specification#/specification/Payment.html&, null, &支付失败:& + e.code);
\n恢复已购项目接口使用方法\n
首先调用plus.payment.getChannels获取支付通道,IAP支付通道的ID为“appleiap”
调用ID为“appleiap”的PaymentChannel对象的restoreComplateRequest方法
\n示例:&!DOCTYPE HTML&
&meta charset=&utf-8& /&
&meta name=&viewport& content=&initial-scale=1.0, maximum-scale=1.0, user-scalable=no& /&
&title&Hello H5+&/title&
&script type=&text/javascript&&
var IAPOrders = ['io.dcloud.payTest1', 'io.dcloud.payTest2'];
function plusReady() {
// 获取支付通道
plus.payment.getChannels(function(channels) {
for (var i in channels) {
if (channel[i].id == 'appleiap') {
iapChannel = channel[i];
iapChannel.requestOrder(IAPOrders, function(event) {
for (var index in event) {
var OrderItem = event[index];
outLine(&Title:& + OrderItem.title + &Price:& + OrderItem.price + &Description:& + OrderItem.description + &ProductID:& + OrderItem.productid);
}, function(errormsg) {
outLine(&获取支付通道失败:& + errormsg.message);
}, function(e) {
outLine(&获取支付通道失败:& + e.message);
document.addEventListener('plusready', plusReady, false);
function getPayedTrances() {
iapChannel.restoreComplateRequest({
&username&: &waipptt&
},function(trancs){
outLine(“获取已经购买项目成功:” + JSON.stringify(trancs));
}, function(errormsg){
outLine(&获取支付通道失败:& + errormsg.message);
restoreComplateRequest 这个一直是雪花等待,都没有返回啊
大家有收到返回的吗
做出来了,你继续看电影,看直播
你你ios内购做好了吗?还在睡觉!
你ios内购做好了吗?
你ios内购做好了吗?
它给我返回 返回订单信息失败,http://ask.dcloud.net.cn/article/282 咋搞,itunes connect里面已经添加商品了,app也打包出来测试的
这里只说了如果获取产品跟恢复产品,在itune connect 里面如果生成产品没有说,我购买产品成功后,如果返回服务器如何修改状态也没有说。
我在channel里面也是获取不到appleiap,是不是我要打包安装到手机才会出现???
请问下,hbuilder最终是能不能接入IOS 应用内支付的??
苹果不让使用第三方SDK调用IAP支付,导致应用被打回,这种情况怎么处理?今天苹果APPSTORE REVIEW打电话说的。
你做好了苹果内购了吗?
我的目前也报这个错了,怎么解决啊,用的苹果沙盒测试账号支付完全没问题,换为正式账号就报这个错了。
检查一下itunes账号是否有测试的权限,或者商品为非消耗性商品重复购买了
payment_appleiap:-6
在文档中找不到这个报错
打印一下错误的message看下详细的错误信息
iap一直报-100.。。。怎么破@客服
你做好了吗
IAPOrders @ DCloud_SDK_骁骑 大神 这里面参数写什么
看你的支付涉及到什么东西,如果支付的商品时虚拟商品(类似:游戏币,视频等等),就必须用到苹果内支付(人家要收取提成的),如果是实物的话就可以不用苹果支付,微信或者支付宝都可以
谢谢亲,研究一下
支付申请的部分可以参考文档
http://www.cnblogs.com/XimuYouzi/archive//5401749.html
请问有完整示例么?官方的html5+例子不能用,没明白原理,是跟微信一样需要在微信平台申请接口,然后客户服务器端写接口程序,app端按上面代码即可么?@大神
请问,您那边解决了么
苹果端有支付的话,必须用应用内支付接口么?客户需求是用微信支付,我提交了几个版本都没有通过审核,请问是这个原因么(说明里提到支付)
谁有具体的 苹果内购实例啊,苹果内购没法做出来,无法通过审核,开发苹果的APP就没有意义了啊
云端打包后测试,也还没有获取到appleiap 呢 代码也跟上边例子一样的
在manifest.json中的plus-&distribute-&plugins-&payment节点下添加“appleiap”相关的节点,并提交云端打包。
更多说明参考:
[http://ask.dcloud.net.cn/article/71](http://ask.dcloud.net.cn/article/71)
[http://ask.dcloud.net.cn/article/497](http://ask.dcloud.net.cn/article/497)
获取不到 appleiap 的channel呢?其他的都可以得到!
要回复文章请先或
赞助DCloud可免广告,
赞助DCloud可免广告,iOS应用如何隐藏第三方支付接口? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。4被浏览294分享邀请回答赞同 添加评论分享收藏感谢收起iOS第三方APP接入微信支付流程 - 简书
iOS第三方APP接入微信支付流程
使用pod下载微信支付SDK
platform:ios, ‘7.0‘
use_frameworks!
target ‘你的工程名’ do
pod 'WeChat_SDK', '~& 1.7.5.1'
在AppDelegate.m中注册你申请的微信app_id
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//1 微信pay
[WXApi registerApp:@"你的微信app_id" withDescription:@"你的项目名称"];
重写AppDelegate的openURL方法
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options
//设置微信WXApi的代理是当前控制器
return [WXApi handleOpenURL:url delegate:self];
AppDelegate继承代理WXApiDelegate
@interface AppDelegate : UIResponder &UIApplicationDelegate,WXApiDelegate&
在AppDelegate.m中重写WXApiDelegate的onResp方法
- (void)onResp:(BaseResp *)resp{
NSString * strMsg = [NSString stringWithFormat:@"errorCode: %d",resp.errCode];
NSLog(@"strMsg: %@",strMsg);
NSString * errStr
= [NSString stringWithFormat:@"errStr: %@",resp.errStr];
NSLog(@"errStr: %@",errStr);
NSString * strT
//判断是微信消息的回调 --& 是支付回调回来的还是消息回调回来的.
if ([resp isKindOfClass:[SendMessageToWXResp class]])
strTitle = [NSString stringWithFormat:@"发送媒体消息的结果"];
NSString * wxPayR
//判断是否是微信支付回调
if ([resp isKindOfClass:[PayResp class]])
//支付返回的结果, 实际支付结果需要去微信服务器端查询
strTitle = [NSString stringWithFormat:@"支付结果"];
switch (resp.errCode)
case WXSuccess:
strMsg = @"支付结果:";
NSLog(@"支付成功: %d",resp.errCode);
wxPayResult = @"success";
case WXErrCodeUserCancel:
strMsg = @"用户取消了支付";
NSLog(@"用户取消支付: %d",resp.errCode);
wxPayResult = @"cancel";
strMsg = [NSString stringWithFormat:@"支付失败! code: %d
errorStr: %@",resp.errCode,resp.errStr];
NSLog(@":支付失败: code: %d str: %@",resp.errCode,resp.errStr);
wxPayResult = @"faile";
//全局广播
NSNotification * notification = [NSNotification notificationWithName:@"WXPay" object:wxPayResult];
[[NSNotificationCenter defaultCenter] postNotification:notification];
在调起支付的控制器XXX.m中接受广播
- (void)viewDidLoad {
[super viewDidLoad];
//是否安装微信
if ([WXApi isWXAppInstalled])
//监听通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getOrderPayResult:) name:@"WXPay" object:nil];
处理广播内容
- (void)getOrderPayResult:(NSNotification *)notification
if ([notification.object isEqualToString:@"success"])
UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"提示信息" message:@"支付成功" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alertView show];
[self paySuccessHandler];
[self alert:@"提示" msg:@"支付失败"];
[self payFailHandler];
//客户端提示信息
- (void)alert:(NSString *)title msg:(NSString *)msg
UIAlertView *alter = [[UIAlertView alloc] initWithTitle:title message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alter show];
请求服务器对微信支付签名后的数据
-(void)wechat{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[@"nos"] = self.payN //订单号
dict[@"token"] = [self token];
NSString* urlString = @"http://api.xxxxx.com/order/pay_wx";
[manager GET:urlString parameters:dict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id
_Nullable responseObject) {
WXDataModel *dataModel = [WXDataModel mj_objectWithKeyValues:responseObject[@"data"]];
WXSelectedModel *selectModel = [WXSelectedModel mj_objectWithKeyValues:dataModel.selected_pay_data];
WechatModel *weChatModel = [WechatModel mj_objectWithKeyValues:selectModel.native];
//调起支付
BOOL result = [self wechatPay:weChatModel];
NSLog(@"result = %d",result?YES:NO);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@",error);
调起支付,WechatModel是数据模型,封装了服务器sign签名后返回的数据
// 微信支付
-(BOOL)wechatPay:(WechatModel *)dict{
PayReq *req
= [[PayReq alloc]init];
req.partnerId
req.prepayId
req.nonceStr
req.timeStamp
= dict.timestamp.intV
req.package
return [WXApi sendReq:req];
-(void)dealloc {
[[NSNotificationCenter defaultCenter]removeObserver:self];
微信支付 商家系统和微信支付系统主要交互说明: 步骤1:用户在商品APP选择商品,提交订单,选择微信支付.步骤2:商户后台收到用户支付单,调用微信支付统一下单接口.步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP.参与签名的字...
iOS支付 iOS支付分为两类,第三方支付和应用内支付(内购)。 第三方支付包括:支付宝支付、微信支付、银联支付、百度钱包、京东支付等等。 应用内支付(In-App Purchase):在应用程序内购买虚拟商品。如果你在App Store上销售的应用程序,将收到支付金额的7...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
实现支付宝支付的准备工作: 1.向支付宝签约,成为支付宝的商户 签约完成后,支付宝会提供一些必要的数据给我们 商户ID:partner 账号ID:seller 即支付宝账号 签约需要营业执照 2.获取支付相关的 私钥和密钥,这两个东西为了数据安全 上面这几个东西只要签约成功...
万事开头难,很多事没做前总觉得不可能成功、难度很大,没开始就已经被吓住了而一直没有付诸行动。然而一旦行动,会发现事情远没有我们想象的复杂,任何事情都是同人关联,只要是人,就离开不了沟通,沟通到位了,把人搞定,事情也就解决了。
但是,你有马上付诸行动吗?
(接上期) (三)要培养孩子良好的生活习惯 生活习惯是伴随一个人终生的。从小生活邋遢、丢三落四、不懂礼貌、信口开河的人,长大以后很难有所转变。良好的生活习惯应当包括以下内容:健康规律的作息,干净整洁的仪表,文明礼貌的语言,宽以待人的胸怀,尊老爱幼的风范,乐于助人的心态,自立...
快速书写十五分钟,突然觉得内心有个小宇宙,很想要爆发。不知道是不是平时不说话压抑得太多,感觉内在有一张嘴不停在说。很多很多的事情,不同的人,都在对话,想喊叫,想哭闹,想大声说话,自由随性。又有一股躁动,不停在翻动,不知是哪股力量,很着急又很想哭泣,怎么办? 时常想去蹦极,体...
那还是大一的时候了,一腔热血的我一入学便参加了校学生会。国庆节收假回来,我当时所在的公关部召集所有大一的部员开会。放假前部长给我们布置了任务,要求我们去给校园活动拉赞助,现在部长们要听听我们在假期中的工作情况。 汇报就要开始了,坐在我身边的女孩儿很紧张地拉住我的手,不停地说...
专注你的专注 注意力是有限的 最近通过一些事情才发现注意力是有限的,而且它很容易被别人套走。 具体的事件是:因为爱好运动所以去报了健身房,同时又一次,有一位铁友向我要微信号,然后我就意识到了一点,我的注意力也在那一刻被分散了一部分。 在此之前,我在健身房训练的计划是:40分...页面不存在
我们已经将此错误信息记录下来,并将尽快处理,为此造成您的不便请多见谅您需要通过验证再能继续浏览 3秒后开始验证
丨 粤ICP备号-10 丨 新三板上市公司威锋科技(836555)
增值电信业务经营许可证:
Powered by Discuz!
(C) Joyslink Inc. All rights reserved 保留所有权利

我要回帖

更多关于 第三方支付接口对接 的文章

 

随机推荐