iOS 支付宝相关

1.支付宝支付

在说完了微信支付之后,下面我们来说一说支付宝支付,支付宝支付相对微信支付而言要简单很多,下面大家就一起来研究一下。

1.1支付宝开放平台注册

支付宝开放平台(支付宝支付是免费的,注册成功后使用的主要为AppKey/SecretKey,其中SecrectKey交由后台完成集成) 
平台入口:https://open.alipay.com/platform/home.htm

1.2下载并使用SDK

支付宝支付SDK可以到支付宝开放平台下载(附带文档Demo) 
或者您使用的是Pods,直接在Podfile添加你要的SDK版本,Pods Update就可以了(Pods的好处是方便管理三方) 
这里使用的是Pods直接下载的:(AliPaySDK-2.0) 
这里写图片描述

1.3项目中操作

同上一篇博客所说的微信一样,添加好URL Schemes、添加白名单(这里就不在附图说明了)

1.4使用支付

在使用支付的时候,要和后台沟通好,他需要哪些参数用于生成订单你就给他哪些参数(他要写好接口,返回的是你用于调起支付的message)

关于支付宝支付回调有两种模式,在这里要注意一下,一种是在未安装支付宝客户端的时候发起的网页支付,另一种是安装客户端由客户端调起支付。

1)这是对返回参数的操作:(未安装支付宝客户端,调起网页支付)

<code class="language-Python hljs objectivec has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *mesage = [responseObject objectForKey:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"resultCode"</span>];
        <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *appScheme = @<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"alisdkdemo"</span>;

        [[AlipaySDK defaultService] payOrder:mesage fromScheme:appScheme callback:^(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSDictionary</span> *resultDic) {
            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> code = [[resultDic objectForKey:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"resultStatus"</span>] intValue];

            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>(code == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9000</span>){

                <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//SVProgressHUD使用的第三方作为提示</span>
                [SVProgressHUD showSuccessWithStatus:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"支付成功"</span>];

            }<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (code == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8000</span>){

                [SVProgressHUD showInfoWithStatus:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"正在处理中"</span>];

            }<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (code == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4000</span>){

                [SVProgressHUD showInfoWithStatus:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"订单支付失败"</span>];

            }<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (code == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6001</span>){

                [SVProgressHUD showInfoWithStatus:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"用户中途取消"</span>];

            }<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (code == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6002</span>){

                [SVProgressHUD showInfoWithStatus:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"网络连接出错"</span>];
            }
        }];

</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li></ul>

2)这是对返回参数的操作:(安装支付宝客户端,调起支付)

<code class="language-Python hljs objectivec has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">- (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">BOOL</span>)application:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIApplication</span> *)application openURL:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSURL</span> *)url sourceApplication:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span> *)sourceApplication annotation:(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">id</span>)annotation
{

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// 支付宝(有几种模式这里只举例:safepay)</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> ([url<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">.host</span> isEqualToString:@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"safepay"</span>]) {
    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//安装客户端调起支付和未安装客户端调起支付方法是有区别的  </span>
        [[AlipaySDK defaultService]processOderWithPaymentResult:url standbyCallback:^(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSDictionary</span> *resultDic) {
    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//支付成功(同理可以根据状态码判断其他的状态)</span>
            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>([resultDic[@<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"resultStatus"</span>] floatValue] == <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9000</span>){
    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//返回状态(有很多人会犯这个错误  要注意下)</span>
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">YES</span>;
    }
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul>

1.5支付宝支付常见异常Bug处理

支付宝支付其实非常简单的,常见的问题也不是非常多,当第一次做支付的时候,可能会忽略掉,客户端调起支付,误把网页支付当做通用的,其实呢,两次两种调起是分开的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值