您的位置:首页 > 移动开发 > IOS开发

iOS支付功能的学习

2015-03-16 16:03 155 查看
</pre>支付功能总结:  http://blog.csdn.net/zuoyou1314/article/details/39858219<p></p><p style="margin-top:0px; margin-bottom:0px"><span style="font-family:Heiti SC Light; font-size:18px"></span></p><p style="margin-top:0px; margin-bottom:0px"><span style="font-family:Heiti SC Light"><span style="font-size:18px">从上文看到,有三种支付方式:</span></span></p><p style="font-size:14px; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:18px"><span style="color:rgb(204,102,0)">第一类,就是我们最常见的应用内支付(IAP),例如APPStore里面我们可以付费下载一些APP或者游戏.</span></span></p><p style="font-size:14px; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:18px; color:rgb(204,102,0)">第二类,就是我们经常使用第三方支付,例如支付宝,财付通,微信.银联等等,</span></p><p style="font-size:14px; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:18px; color:rgb(204,102,0)">第三类,就是我们很少使用的在线支付.通过UIWebView跳转到官网上.</span></p><p style="font-size:14px; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:18px; color:rgb(204,102,0)"></span></p><p style="font-size:14px; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:18px">这里重点学习第三方支付:</span></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:48px"></span></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:48px; color:#ff6600">1.支付宝: </span></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:18px"><span style="font-family:'Heiti SC Light'"></span></span></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:18px"><span style="font-family:'Heiti SC Light'">支付宝SDk</span><span style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; letter-spacing:0px">官方下载地址:https://b.alipay.com/order/productDetail.htm?productId=2013080604609654&tabId=4#ps-tabinfo-hash</span></span></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:18px"><span style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; letter-spacing:0px"></span></span></p><div style="font-family:Arial; font-size:14px; margin:0px; padding:0px; line-height:19.5px; background-color:rgb(254,2
4000
54,242)"><span style="font-family:'Comic Sans MS'; font-size:18px">使用支付宝进行一个完整的支付功能,大致有以下步骤:</span></div><div style="font-family:Arial; font-size:14px; margin:0px; padding:0px; line-height:19.5px; background-color:rgb(254,254,242)"><span style="font-family:'Comic Sans MS'; font-size:18px">1>先与支付宝签约,获得商户ID(partner)和账号ID(seller)</span></div><div style="font-family:Arial; font-size:14px; margin:0px; padding:0px; line-height:19.5px; background-color:rgb(254,254,242)"><span style="font-family:'Comic Sans MS'; font-size:18px">(这个主要是公司的负责)</span></div><div style="font-family:Arial; font-size:14px; margin:0px; padding:0px; line-height:19.5px; background-color:rgb(254,254,242)"><span style="font-family:'Comic Sans MS'; font-size:18px"> </span></div><div style="font-family:Arial; font-size:14px; margin:0px; padding:0px; line-height:19.5px; background-color:rgb(254,254,242)"><span style="font-family:'Comic Sans MS'; font-size:18px">2>下载相应的公钥私钥文件(加密签名用)</span></div><div style="font-family:Arial; font-size:14px; margin:0px; padding:0px; line-height:19.5px; background-color:rgb(254,254,242)"><span style="font-family:'Comic Sans MS'; font-size:18px">3>下载支付宝SDK</span></div><div style="font-family:Arial; font-size:14px; margin:0px; padding:0px; line-height:19.5px; background-color:rgb(254,254,242)"><span style="font-family:'Comic Sans MS'; font-size:18px"></span><div style="font-family:Arial; font-size:14px; margin:0px; padding:0px; line-height:19.5px; background-color:rgb(254,254,242)"><span style="font-family:'Comic Sans MS'; font-size:18px">4>生成订单信息</span></div><div style="font-family:Arial; font-size:14px; margin:0px; padding:0px; line-height:19.5px; background-color:rgb(254,254,242)"><span style="font-family:'Comic Sans MS'; font-size:18px">5>调用支付宝客户端,由支付宝客户端跟支付宝安全服务器打交道</span></div><div style="font-family:Arial; font-size:14px; margin:0px; padding:0px; line-height:19.5px; background-color:rgb(254,254,242)"><span style="font-family:'Comic Sans MS'; font-size:18px">6>支付完毕后返回支付结果给商户客户端和服务器</span></div></div><p></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:18px"><span style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; letter-spacing:0px">SDK里有集成支付宝功能的一个Demo>  集成支付功能的具体操作方式,可以参考Demo当第一次打开运行Demo时,我出现了两个问题:</span></span></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:18px"><span style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; letter-spacing:0px"></span></span></p><p style="margin-top:0px; margin-bottom:0px; margin-left:12px; text-indent:-12px; font-size:11px; font-family:Menlo"><span style="white-space:pre"></span>No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv7).</p>解决办法:  改为NO<p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:18px"><span style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; letter-spacing:0px"> <img src="https://img-blog.csdn.net/20150316161357502?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2FmaXJp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span></span></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:18px"><span style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; letter-spacing:0px"><span style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; font-size:18px; line-height:26px">调用支付接口可以参考AlixPayDemoViewController的下面方法</span><br style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; line-height:26px" /><span style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; font-size:18px; line-height:26px">-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath</span><br style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; line-height:26px" /><br style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; line-height:26px" /><span style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; font-size:18px; line-height:26px">如何创建订单 ( 订单根据自己公司看是什么样的)</span><br style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; line-height:26px" /><br style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; line-height:26px" /><span style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; font-size:18px; line-height:26px">如何签名</span><br style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; line-height:26px" /><br style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; line-height:26px" /><span style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; font-size:18px; line-height:26px">如何调用支付接口</span><br style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; line-height:26px" /><br style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; line-height:26px" /><span style="color:rgb(85,85,85); font-family:'Microsoft YaHei'; font-size:18px; line-height:26px">都在这个方法里面了:</span></span></span></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; line-height:26px"><span style="font-size:18px"><span style="font-family:'Microsoft YaHei'; letter-spacing:0px"></span></span></p><p style="color:rgb(130,46,14); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">#pragma mark -</p><p style="color:rgb(130,46,14); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">#pragma mark   ==============<span style="font-family:'Heiti SC Light'">点击订单模拟支付行为</span>==============</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">//</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:'Heiti SC Light'"><span style="font-family:Menlo">//</span>选中商品调用支付宝极简支付</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">//</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">- (<span style="color:#c32275">void</span>)tableView:(<span style="color:#6122ae">UITableView</span> *)tableView didSelectRowAtIndexPath:(<span style="color:#6122ae">NSIndexPath</span> *)indexPath</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">{</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; min-height:21px"></p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300"><span style="white-space:pre"></span></span>/*</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:'Heiti SC Light'"><span style="font-family:Menlo"><span style="white-space:pre"></span>*</span>点击获取<span style="font-family:Menlo">prodcut</span>实例并初始化订单信息</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span>*/</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span><span style="color:#3c828c">Product</span> *product = [<span style="color:#c32275">self</span>.<span style="color:#539aa4">productList</span><span style="color:#3d1d81">objectAtIndex</span>:indexPath.<span style="color:#703daa">row</span>];</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; min-height:21px"><span style="white-space:pre"></span></p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300"><span style="white-space:pre"></span></span>/*</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span>*<span style="font-family:'Heiti SC Light'">商户的唯一的</span>parnter<span style="font-family:'Heiti SC Light'">和</span>seller<span style="font-family:'Heiti SC Light'">。</span></p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:'Heiti SC Light'"><span style="font-family:Menlo"><span style="white-space:pre"></span>*</span>签约后,支付宝会为每个商户分配一个唯一的<span style="font-family:Menlo"> parnter</span>和<span style="font-family:Menlo"> seller</span>。</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span>*/</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; min-height:21px">    </p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">/*============================================================================*/</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">/*=======================<span style="font-family:'Heiti SC Light'">需要填写商户</span>app<span style="font-family:'Heiti SC Light'">申请的</span>===================================*/</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">/*============================================================================*/</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span><span style="color:#6122ae">NSString</span> *partner =<span style="color:#c91b13">@""</span>;</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">    <span style="color:#6122ae">NSString</span> *seller = <span style="color:#c91b13">@""</span>;</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">    <span style="color:#6122ae">NSString</span> *privateKey = <span style="color:#c91b13">@""</span>;</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">/*============================================================================*/</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">/*============================================================================*/</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">/*============================================================================*/</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; min-height:21px"><span style="white-space:pre"></span></p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300"><span style="white-space:pre"></span></span>//partner<span style="font-family:'Heiti SC Light'">和</span>seller<span style="font-family:'Heiti SC Light'">获取失败</span>,<span style="font-family:'Heiti SC Light'">提示</span></p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span><span style="color:#c32275">if</span> ([partner<span style="color:#3d1d81">length</span>] == <span style="color:#0435ff">0</span> ||</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">        [seller <span style="color:#3d1d81">length</span>] == <span style="color:#0435ff">0</span> ||</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">        [privateKey <span style="color:#3d1d81">length</span>] == <span style="color:#0435ff">0</span>)</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span>{</p><p style="color:rgb(97,34,174); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300"><span style="white-space:pre"></span></span>UIAlertView<span style="color:#ff9300"> *alert = [[</span>UIAlertView<span style="color:#ff9300"></span><span style="color:#3d1d81">alloc</span><span style="color:#ff9300">] </span><span style="color:#3d1d81">initWithTitle</span><span style="color:#ff9300">:</span><span style="color:#c91b13">@"</span><span style="font-family:'Heiti SC Light'; color:rgb(201,27,19)">提示</span><span style="color:#c91b13">" </span><span style="letter-spacing:0px; color:rgb(61,29,129)">message</span><span style="letter-spacing:0px; color:rgb(255,147,0)">:</span><span style="color:rgb(201,27,19); letter-spacing:0px">@"</span><span style="color:rgb(201,27,19); letter-spacing:0px; font-family:'Heiti SC Light'">缺少</span><span style="color:rgb(201,27,19); letter-spacing:0px">partner</span><span style="color:rgb(201,27,19); letter-spacing:0px; font-family:'Heiti SC Light'">或者</span><span style="color:rgb(201,27,19); letter-spacing:0px">seller</span><span style="color:rgb(201,27,19); letter-spacing:0px; font-family:'Heiti SC Light'">或者私钥。</span><span style="color:rgb(201,27,19); letter-spacing:0px">"</span></p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span>  <span style="color:#3d1d81">delegate</span>:<span style="color:#c32275">self </span><span style="color:rgb(61,29,129); letter-spacing:0px">cancelButtonTitle</span><span style="letter-spacing:0px">:</span><span style="letter-spacing:0px; color:rgb(201,27,19)">@"</span><span style="letter-spacing:0px; font-fami
1191f
ly:'Heiti SC Light'; color:rgb(201,27,19)">确定</span><span style="letter-spacing:0px; color:rgb(201,27,19)">" </span><span style="color:rgb(61,29,129); letter-spacing:0px">otherButtonTitles</span><span style="letter-spacing:0px">:</span><span style="letter-spacing:0px; color:rgb(195,34,117)">nil</span><span style="letter-spacing:0px">];</span></p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span>[alert <span style="color:#3d1d81">show</span>];</p><p style="color:rgb(195,34,117); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300"><span style="white-space:pre"></span></span>return<span style="color:#ff9300">;</span></p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span>}</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; min-height:21px"><span style="white-space:pre"></span></p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300"><span style="white-space:pre"></span></span>/*</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:'Heiti SC Light'"><span style="font-family:Menlo"><span style="white-space:pre"></span>*</span>生成订单信息及签名</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span>*/</p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300"><span style="white-space:pre"></span></span>//<span style="font-family:'Heiti SC Light'">将商品信息赋予</span>AlixPayOrder<span style="font-family:'Heiti SC Light'">的成员变量</span></p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">    <span style="color:#3c828c">Order</span> *order = [[<span style="color:#3c828c">Order</span><span style="color:#3d1d81">alloc</span>] <span style="color:#3d1d81">init</span>];</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span>order.<span style="color:#539aa4">partner</span> = partner;</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span>order.<span style="color:#539aa4">seller</span> = seller;</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span>order.<span style="color:#539aa4">tradeNO</span> = [<span style="color:#c32275">self</span><span style="color:#294c50">generateTradeNO</span>]; <span style="color:#1d9421">//</span><span style="font-family:'Heiti SC Light'; color:rgb(29,148,33)">订单</span><span style="color:#1d9421">ID</span><span style="font-family:'Heiti SC Light'; color:rgb(29,148,33)">(由商家自行制定)</span></p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span>order.<span style="color:#539aa4">productName</span> = product.<span style="color:#539aa4">subject</span>;<span style="color:#1d9421">//</span><span style="font-family:'Heiti SC Light'; color:rgb(29,148,33)">商品标题</span></p><p style="color:rgb(83,154,164); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300"><span style="white-space:pre"></span>order.</span>productDescription<span style="color:#ff9300"> = product.</span>body<span style="color:#ff9300">;</span><span style="color:#1d9421">//</span><span style="font-family:'Heiti SC Light'; color:rgb(29,148,33)">商品描述</span></p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span>order.<span style="color:#539aa4">amount</span> = [<span style="color:#6122ae">NSString</span><span style="color:#3d1d81">stringWithFormat</span>:<span style="color:#c91b13">@"%.2f"</span>,product.<span style="color:#539aa4">price</span>];<span style="color:#1d9421">//</span><span style="font-family:'Heiti SC Light'; color:rgb(29,148,33)">商品价格</span></p><p style="color:rgb(201,27,19); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300"><span style="white-space:pre"></span>order.</span><span style="color:#539aa4">notifyURL</span><span style="color:#ff9300"> = </span>@"http://www.xxx.com"<span style="color:#ff9300">; </span><span style="color:#1d9421">//</span><span style="font-family:'Heiti SC Light'; color:rgb(29,148,33)">回调</span><span style="color:#1d9421">URL</span></p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; min-height:21px">    </p><p style="color:rgb(201,27,19); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300">    order.</span><span style="color:#539aa4">service</span><span style="color:#ff9300"> =</span>@"mobile.securitypay.pay"<span style="color:#ff9300">;</span></p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">    order.<span style="color:#539aa4">paymentType</span> = <span style="color:#c91b13">@"1"</span>;</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">    order.<span style="color:#539aa4">inputCharset</span> = <span style="color:#c91b13">@"utf-8"</span>;</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">    order.<span style="color:#539aa4">itBPay</span> = <span style="color:#c91b13">@"30m"</span>;</p><p style="color:rgb(201,27,19); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300">    order.</span><span style="color:#539aa4">showUrl</span><span style="color:#ff9300"> =</span>@"m.alipay.com"<span style="color:#ff9300">;</span></p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; min-height:21px"><span style="white-space:pre"></span></p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300"><span style="white-space:pre"></span></span>//<span style="font-family:'Heiti SC Light'">应用注册</span>scheme,<span style="font-family:'Heiti SC Light'">在</span>AlixPayDemo-Info.plist<span style="font-family:'Heiti SC Light'">定义</span>URL types,用于快捷支付成功后重新唤起商户应用</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span><span style="color:rgb(97,34,174)">NSString</span> *appScheme =<span style="color:#c91b13">@"alisdkdemo"</span>;</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; min-height:21px"><span style="white-space:pre"></span></p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:'Heiti SC Light'"><span style="font-family:Menlo; color:rgb(255,147,0)"><span style="white-space:pre"></span></span><span style="font-family:Menlo">//</span>将商品信息拼接成字符串</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span><span style="color:#6122ae">NSString</span> *orderSpec = [order<span style="color:#3d1d81">description</span>];</p><p style="color:rgb(201,27,19); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300"><span style="white-space:pre"></span></span><span style="color:#3d1d81">NSLog</span><span style="color:#ff9300">(</span>@"orderSpec = %@"<span style="color:#ff9300">,orderSpec);</span></p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; min-height:21px"><span style="white-space:pre"></span></p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:'Heiti SC Light'"><span style="font-family:Menlo; color:rgb(255,147,0)"><span style="white-space:pre"></span></span><span style="font-family:Menlo">//</span>获取私钥并将商户信息签名<span style="font-family:Menlo">,</span>外部商户可以根据情况存放私钥和签名<span style="font-family:Menlo">,</span>只需要遵循<span style="font-family:Menlo">RSA</span>签名规范<span style="font-family:Menlo">,</span>并将签名字符串<span style="font-family:Menlo">base64</span>编码和<span style="font-family:Menlo">UrlEncode</span></p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span><span style="color:#c32275">id</span><<span style="color:#3c828c">DataSigner</span>> signer =<span style="color:#294c50">CreateRSADataSigner</span>(privateKey);</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span><span style="color:#6122ae">NSString</span> *signedString = [signer<span style="color:#294c50">signString</span>:orderSpec];</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; min-height:21px"><span style="white-space:pre"></span></p><p style="color:rgb(29,148,33); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:'Heiti SC Light'"><span style="font-family:Menlo; color:rgb(255,147,0)"><span style="white-space:pre"></span></span><span style="font-family:Menlo">//</span>将签名成功字符串格式化为订单字符串<span style="font-family:Menlo">,</span>请严格按照该格式</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span><span style="color:#6122ae">NSString</span> *orderString =<span style="color:#c32275">nil</span>;</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="white-space:pre"></span><span style="color:#c32275">if</span> (signedString !=<span style="color:#c32275">nil</span>) {</p><p style="color:rgb(201,27,19); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"><span style="color:#ff9300"><span style="white-space:pre"></span>orderString = [</span><span style="color:#6122ae">NSString</span><span style="color:#ff9300"></span><span style="color:#3d1d81">stringWithFormat</span><span style="color:#ff9300">:</span>@"%@&sign=\"%@\"&sign_type=\"%@\""<span style="color:#ff9300">,</span></p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">                       orderSpec, signedString, <span style="color:#c91b13">@"RSA"</span>];</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; min-height:21px">        </p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">        [[<span style="color:#6122ae">AlipaySDK</span> <span style="color:#3d1d81">defaultService</span>] <span style="color:#3d1d81">payOrder</span>:orderString <span style="color:#3d1d81">fromScheme</span>:appScheme <span style="color:#3d1d81">callback</span>:^(<span style="color:#6122ae">NSDictionary</span> *resultDic) {</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">            <span style="color:#3d1d81">NSLog</span>(<span style="color:#c91b13">@"reslut = %@"</span>,resultDic);</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">        }];</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; min-height:21px">        </p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">        [tableView <span style="color:#3d1d81">deselectRowAtIndexPath</span>:indexPath<span style="color:#3d1d81">animated</span>:<span style="color:#c32275">YES</span>];</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">    }</p><p style="color:rgb(255,147,0); margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">}</p><p style="margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo">总结上面的方法,主要集成的关键就是下面几步:</p><p style="margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo"></p><pre style="white-space:pre-wrap; word-wrap:break-word; font-size:14px; line-height:19.5px; background-color:rgb(245,245,245); margin-top:0px; margin-bottom:0px; padding:0px"><pre style="white-space:pre-wrap; word-wrap:break-word; font-size:14px; line-height:19.5px; background-color:rgb(245,245,245); margin-top:0px; margin-bottom:0px; padding:0px"><span style="font-family:'Comic Sans MS'; font-size:18px"><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(0,128,0)">//1</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(0,128,0)">.封装订单模型</span>
Order *order =<span style="margin:0px; padding:0px; line-height:1.5"> [[Order alloc] init];
</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(0,128,0)">//</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(0,128,0)"> 生成订单描述</span>
NSString *orderSpec =<span style="margin:0px; padding:0px; line-height:1.5"> [order description];

</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(0,128,0)">//</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(0,128,0)">2.签名</span>
<span style="margin:0px; padding:0px; line-height:1.5; color:rgb(0,0,255)">id</span><DataSigner> signer =<span style="margin:0px; padding:0px; line-height:1.5"> CreateRSADataSigner(@“私钥key”);
</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(0,128,0)">//</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(0,128,0)"> 传入订单描述 进行 签名</span>
NSString *signedString =<span style="margin:0px; padding:0px; line-height:1.5"> [signer signString:orderSpec];

</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(0,128,0)">//</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(0,128,0)">3.生成订单字符串</span>
NSString *orderString = [NSString stringWithFormat:<span style="margin:0px; padding:0px; line-height:1.5; color:rgb(128,0,0)">@"</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(128,0,0)">%@&sign=\</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(128,0,0)">"</span>%@\<span style="margin:0px; padding:0px; line-height:1.5; color:rgb(128,0,0)">"</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(128,0,0)">&sign_type=\"%@\"</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(128,0,0)">"</span><span style="margin:0px; padding:0px; line-height:1.5">,
orderSpec, signedString, </span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(128,0,0)">@"</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(128,0,0)">RSA</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(128,0,0)">"</span><span style="margin:0px; padding:0px; line-height:1.5">];

</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(0,128,0)">//</span><span style="margin:0px; padding:0px; line-height:1.5; color:rgb(0,128,0)">4.调用支付接口</span>
</span><p style="margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; color:rgb(255,147,0)">[[<span style="color:#6122ae">AlipaySDK</span> <span style="color:#3d1d81">defaultService</span>] <span style="color:#3d1d81">payOrder</span>:orderString <span style="color:#3d1d81">fromScheme</span>:appScheme <span style="color:#3d1d81">callback</span>:^(<span style="color:#6122ae">NSDictionary</span> *resultDic) {</p><p style="margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; color:rgb(255,147,0)">            <span style="color:#3d1d81">NSLog</span>(<span style="color:#c91b13">@"reslut = %@"</span>,resultDic);</p><p style="margin-top:0px; margin-bottom:0px; font-size:18px; font-family:Menlo; color:rgb(255,147,0)">        }];</p><div>
</div>



小kips: 学习产生随机字符串

#pragma mark -

#pragma mark   ==============产生随机订单号==============

- (NSString *)generateTradeNO

{

static
int kNumber = 15;

NSString *sourceStr =@"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

NSMutableString *resultStr = [[NSMutableStringalloc]
init];
srand(time(0));//随机数种子

for (int i =0; i < kNumber; i++)

{
unsigned index =rand()
% [sourceStrlength];//在字符串长度中随机选一个数
NSString *oneStr = [sourceStrsubstringWithRange:NSMakeRange(index,1)];//取出对应的单个字符
[resultStrappendString:oneStr];//将单个字符一次组合起来形成虚拟订单号

}

return resultStr;

}

2.微信支付



具体实现查看APP支付接口文档,在微信开放平台下载

3.百度钱包等查阅相关文档学习

4.集成支付宝,微信,百度钱包等支付功能: Ping++ SDK ,可以

查阅学习
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐