集成支付宝钱包支付IOS SDK的方法和经验

电脑杂谈  发布时间:2020-06-07 16:26:52  来源:网络整理

支付sdk_聚合支付sdk下载_咪咕支付sdk

业务流程图

图中的“商业客户”是我们的IOS客户需要做的:

在调用支付宝支付接口之前,我们还需要一个订单. 在描述文档时,此步骤也放在客户端,但也可以在服务器端生成. (在这个图中,支付宝会在支付成功后通知服务器,这样您就可以在服务器端获得所有订单,而且会更安全):

事实上,这些步骤对业务来说已经足够了,但存在安全问题. 你当然不希望你收到的付款结果被截取和修改. 因此,在生成订单和处理付款结果时需要进行安全检查:

生成订单时对数据进行签名,收到付款结果时进行验证支付sdk,以验证数据是否被篡改

支付宝目前只支持RSA加密进行签名验证

除了加密和解密,RSA加密算法还可以用于签名验证

简而言之,RSA将生成一个私钥和一个公钥. 您应该单独保留私钥,并且可以分发公钥

对于签名验证,可以使用私钥加密要传输的数据,生成签名值,然后分发数据. 接收者通过公钥检查签名值. 如果是一致的,则认为数据是无篡改的

支付sdk_聚合支付sdk下载_咪咕支付sdk

具体到支付宝使用RSA进行签名验证,即在生成订单时,需要使用私钥生成签名值;在处理退回支付的结果时,需要使用公钥验证退回的结果是否被篡改

对于特定的值、如何生成签名以及哪些值最需要签名才能进行验证,您可以在第一个文档中找到它们. 稍后我将简要地提到它们,但仍以文件或惯例为准

一旦过程明确,就很容易理解如何整合

如果您只需要发送订单并处理付款返回结果,则只需要添加AlipaySDK.bundle包以及AlipaySDK.framework框架好吧

现在对旧版本提出抱怨. 与当前版本相比,旧版本不仅改变了,而且将原来的版本改为单个示例. 真是反复无常. 如果任何一个小工厂的SDK被抛弃了,我想

如何发送订单:

- (void)payOrder:(NSString *)orderStr
      fromScheme:(NSString *)schemeStr
        callback:(CompletionBlock)completionBlock;

支付宝的SDK只是给出了一种处理结果的方式,而不是其他第三方SDK提供了一种处理openURL的方式,所以你需要通过DEMO或者在第二个文档中找到处理openURL的方式:

咪咕支付sdk_支付sdk_聚合支付sdk下载

1 if ([url.host isEqualToString:@"safepay"]) {
2 [[AlipaySDK defaultService] processOrderWithPaymentResult:url
3 standbyCallback:^(NSDictionary *resultDic) {
4           NSLog(@"result = %@",resultDic);
5 }]; }

查看代码

SDK还提供了一种处理OpenURL返回结果的方法

- (void)processOrderWithPaymentResult:(NSURL *)resultUrl
                      standbyCallback:(CompletionBlock)completionBlock;

两个回调块都定义为typedef void(^completionblock)(nsdictionary*resultdic)

返回了字典,但SDK中没有关于密钥的提示

您可以在文档中找到它,也可以自己尝试. 返回信息如下:

备忘录: 提示信息. 例如,当状态码为6001时,备注为“用户中途取消”. 但不要完全依赖这些信息. 如果不安装支付宝应用,使用网页支付时,取消时状态码为6001,但备忘为空. (当我发现这个问题时,我决定对于这样一个不可靠的SDK,我最好尽可能地依赖自己)结果、订单信息和签名验证信息. 如果不想进行签名验证,可以忽略此字段

支付sdk_聚合支付sdk下载_咪咕支付sdk

如果您不关心或不注意支付的安全性,可以在这里完成支付宝的整合

如果要更安全,需要添加以下签名验证

首先,RSA只是一个算法,因此您可以使用任何开源算法或自己实现它,以实现签名和验证的目的

在整个过程中,由于涉及RSA公钥、私钥、签名、SHA1验证、SHA1值、Base64和URL编码的产生,所以支付宝使用开源代码对这些问题进行投诉. OpenSSL(在下一个Tucao中,它将OpenSSL放在演示中,它不知道演示中将使用多少产品. 这对季阿里本人也有不小的用处. 他什么时候能去老罗和华为这样的赞助网站

如果您想省事并使用OpenSSL,您需要将所有这些项添加到项目中: DEMO中的OpenSSL目录头文件、libcrypto.a libssl.a和Util catalog中的两个库文件

支付宝写真

如上所述,订单签名应该使用私钥,但将私钥放入应用程序本身是不安全的,因为您的应用程序是分发给用户的,私钥应该在他们自己手中,而分发的应该是公钥

所以私钥最好放在自己的服务器上. 订单加密在服务器端完成. 服务器将签署的订单信息返回给app,app通过SDK发送给支付宝. 这将更加安全;服务器还可以掌握所有订单状态

如果必须将私钥集成到应用程序中,可以参考SDK的演示,因为此演示是私钥在应用程序中本地生成的顺序签名

聚合支付sdk下载_咪咕支付sdk_支付sdk

上面的回调块提到返回的内容. 返回的付款结果中的结果字段包含订单信息和签名信息,因此签名验证是该字段的值

文档中有此字段的示例. 实际结果不换行. 我把线改成:

partner="2088101568358171"&seller_id="xxx@alipay.com"&out_trade_no="0819145412-6177"&subject="测试"&body="测试测试"&total_fee="0.01"&notify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="30m"&success="true"
&sign_type="RSA"
&sign="hkFZr+zE9499nuqDNLZEF7W75RFFPsly876QuRSeN8WMaUgcdR00IKy5ZyBJ4eldhoJ/2zghqrD4E2G2mNjs3aE+HCLiBXrPDNdLKCZ gSOIqmv46TfPTEqopYfhs+o5fZzXxt34fwdrzN4mX6S13cr3UwmEV4L3Ffir/02RBVtU="

总共有三部分

验证步骤如下:

如果希望简单,可以直接使用util目录下的dataverifier来验证签名

事实上,不用OpenSSL就可以使用其他第三方RSA的开源代码. 您可以在演示包装器源代码和SDK文档中看到OpenSSL

或以上是支付宝iOS SDK的介绍

一般来说支付sdk,我不认为我应该依赖这个不可靠的SDK来自己处理


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-237360-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 蒋雯
        蒋雯

        12海里领海和200海里专属经济区规定的既定事实

      热点图片
      拼命载入中...