* ## 第三方支付权限申请
### 微信支付
进入微信支付官网申请App支付权限 [微信支付](https://open.weixin.qq.com/cgi-bin/frame?t=home/app_tmpl&lang=zh_CN)
1、项目设置APPID
商户在微信开放平台申请开发APP应用后,微信开放平台会生成APP的唯一标识APPID。在Xcode中打开项目,设置项目属性中的URL Schemes为您的APPID。如图
![](https://box.kancloud.cn/6e65bd04c9836d8eb25e8712315acc31_1344x814.png)
2、注册APPID
商户APP工程中引入微信lib库和头文件,调用API前,需要先向微信注册您的APPID,代码如下:
`[WXApi registerApp:WXAPPID];`
3、调起支付
商户服务器生成支付订单,先调用【统一下单API】生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付。以下是调起微信支付的关键代码:
PayReq *request = [[[PayReq alloc] init] autorelease];
request.partnerId = @"10000100";
request.prepayId= @"1101000000140415649af9fc314aa427";
request.package = @"Sign=WXPay";
request.nonceStr= @"a462b76e7436e98e0ed6e13c64b4fd1c";
request.timeStamp= @"1397527777";
request.sign= @"582282D72DD2B03AD892830965F428CB16E7A256";
[WXApi sendReq:request];
注意:该sign生成字段名列表见调起支付API
4、支付结果回调
照微信SDK Sample,在类实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意 一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。代码示例如下:
-(void)onResp:(BaseResp*)resp{
if ([respisKindOfClass:[PayRespclass]]){
PayResp*response=(PayResp*)resp;
switch(response.errCode){
caseWXSuccess:
//服务器端查询支付通知或查询API返回的结果再提示成功
NSlog(@"支付成功");
break;
default:
NSlog(@"支付失败,retcode=%d",resp.errCode);
break;
}
}
}
回调中errCode值列表:
名称 描述 解决方案
0 成功 展示成功页面
-1 错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
-2 用户取消 无需处理。发生场景:用户不支付了,点击取消,返回APP。
#### 详细流程请参考微信官方文档:[微信开放平台官方文档](https://pay.weixin.qq.com/guide/inapp_payment.shtml)
### 支付宝支付
进入支付宝开放平台申请App支付权限 [蚂蚁金服开放平台](https://open.alipay.com/developmentAccess/developmentAccess.htm)
第一步:创建应用并获取APPID
要在您的应用中接入支付宝App支付能力,需要通过创建应用的方式接入蚂蚁相关接口并进行开发,基于对行业及业务场景痛点的理解,创造能够满足市场需要的解决方案,以应用的形式服务用户。
若还未成为开放平台的入驻服务商或者商户, 请完成入驻指引。入驻完成后,您需要去蚂蚁金服开放平台(open.alipay.com),在开发者中心中创建您的应用,会为您生成应用唯一标识(APPID),并且可以申请开通开放产品使用权限,通过APPID您的应用才能调用开放产品的接口能力。需要详细了解开放平台创建应用步骤请参考《开放平台应用创建指南》。
在创建应用后即生成应用的标识APPID,使用支付宝账号登录开放平台后,在“我的应用”中按下图方式查看APPID。
![](https://box.kancloud.cn/887220743b9cc808acf044bbb5010745_554x141.png)
第二步:配置应用
添加app支付功能
应用创建完成后,需要给应用添加App支付功能,这样就可以在你的应用里使用App支付能力。此时该应用为开发中状态,只能在沙箱环境下进行调试。应用开发完成后,请开发者自行进行验收和安全性检查(安全性检查可参考《开放平台第三方应用安全开发指南》),验收检查完成后可申请上线。应用申请上线后,会同时申请此列表的功能,接口即生效,这个状态下的应用能够调用生产环境的接口。
#### 详细流程请参考支付宝官方文档:[支付宝开放平台官方文档](https://docs.open.alipay.com/204/105297/)
* ## 代码
#### 设置已申请的微信AppID和Secret
注:一定要和后台一致
![](https://box.kancloud.cn/67ed649a4905795ee79b98327de02434_1349x824.png)
#### 设置URL Schemes
在URL Schemes处设置
微信:填写AppID
支付宝:申请时的回调
![](https://box.kancloud.cn/6e65bd04c9836d8eb25e8712315acc31_1344x814.png)
这里设置支付宝的URL Schemes,要和上面一致
![](https://box.kancloud.cn/d01418c2fa09c892acf8c94a0d150efb_1346x1109.png)