Skip to content

配置第三方sdk

ZefengYu edited this page Feb 24, 2016 · 6 revisions

@(githubIO)[iOS] [toc]

配置第三方sdk

1.支付宝-移动支付

1.1.参考官方的demo,里面包含交易状态判断和其他加密解密封装库。

客户端demo 服务端demo

1.2.涉及RSAmd5加密,支付宝公钥[alipay_public_key.pem]、商户公钥[rsa_public_key.pem]、商户私钥[rsa_private_key.pem,rsa_private_key.pem(pkcs8)]、安全校验码[privateKey]

1.2.1. 支付宝公钥钥[alipay_public_key.pem]:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRA
FljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQE
B/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5Ksi
NG9zpgmLCUYuLkxpLQIDAQAB
-----END PUBLIC KEY-----

1.2.2. 商户公钥[rsa_public_key.pem]:内容和支付宝公钥不一样。一下仅供参考。

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRA
FljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQE
B/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5Ksi
NG9zpgmLCUYuLkxpLQIDAQAB
-----END PUBLIC KEY-----

1.2.3. 商户私钥:

1.2.3.1.标准的私钥文件示例[rsa_private_key.pem](PHP.NET使用)

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQC+L0rfjLl3neHleNMOsYTW8r0QXZ5RVb2p/vvY3fJNNugvJ7lo4+fdBz+LN4mDxTz4MTOhi5e2yeAqx+v3nKpNmPzC5LmDjhHZURhwbqFtIpZD51mOfno2c3MDwlrsVi6mTypbNu4uaQzw/TOpwufSLWF7k6p2pLoVmmqJzQiD0QIDAQABAoGAakB1risquv9D4zX7hCv9MTFwGyKSfpJOYhkIjwKAik7wrNeeqFEbisqv35FpjGq3Q1oJpGkem4pxaLVEyZOHONefZ9MGVChT/MNH5b0FJYWl392RZy8KCdq376Vt4gKVlABvaV1DkapL+nLh7LMo/bENudARsxD55IGObMU19lkCQQDwHmzWPMHfc3kdY6AqiLrOss+MVIAhQqZOHhDe0aW2gZtwiWeYK1wB/fRxJ5esk1sScOWgzvCN/oGJLhU3kipHAkEAysNoSdG2oWADxlIt4W9kUiiiqNgimHGMHPwp4JMxupHMTm7D9XtGUIiDijZxunHv3kvktNfWj3Yji0661zHVJwJBAM8TDf077F4NsVc9AXVs8N0sq3xzqwQD/HPFzfq6hdR8tVY5yRMb4X7+SX4EDPORKKsgnYcur5lk8MUi7r072iUCQQC8xQvUne+fcdpRyrR4StJlQvucogwjTKMbYRBDygXkIlTJOIorgudFlrKP/HwJDoY4uQNl8gQJb/1LdrKwIe7FAkBl0TNtfodGrDXBHwBgtN/t3pyi+sz7OpJdUklKE7zMSBuLd1E3O4JMzvWP9wEE7JDb+brjgK4/cxxUHUTkk592
-----END RSA PRIVATE KEY-----

1.2.3.2.PKCS8处理后的私钥文件示例[rsa_private_key.pem(pkcs8)](Java使用)

-----BEGIN PRIVATE KEY-----
MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAN0yqPkLXlnhM+2H/57aHsYHaHXazr9pFQun907TMvmbR04wHChVsKVgGUF1hC0FN9hfeYT5v2SXg1WJSg2tSgk7F29SpsF0I36oSLCIszxdu7ClO7c22mxEVuCjmYpJdqb6XweAZzv4Is661jXP4PdrCTHRdVTU5zR9xUByiLSVAgMBAAECgYEAhznORRonHylm9oKaygEsqQGkYdBXbnsOS6busLi6xA+iovEUdbAVIrTCG9t854z2HAgaISoRUKyztJoOtJfI1wJaQU+XL+U3JIh4jmNx/k5UzJijfvfpT7Cv3ueMtqyAGBJrkLvXjiS7O5ylaCGuB0Qz711bWGkRrVoosPM3N6ECQQD8hVQUgnHEVHZYtvFqfcoq2g/onPbSqyjdrRu35a7PvgDAZx69Mr/XggGNTgT3jJn7+2XmiGkHM1fd1Ob/3uAdAkEA4D7aE3ZgXG/PQqlm3VbE/+4MvNl8xhjqOkByBOY2ZFfWKhlRziLEPSSAh16xEJ79WgY9iti+guLRAMravGrs2QJBAOmKWYeaWKNNxiIoF7/4VDgrcpkcSf3uRB44UjFSn8kLnWBUPo6WV+x1FQBdjqRviZ4NFGIP+KqrJnFHzNgJhVUCQFzCAukMDV4PLfeQJSmna8PFz2UKva8fvTutTryyEYu+PauaX5laDjyQbc4RIEMU0Q29CRX3BA8WDYg7YPGRdTkCQQCG+pjU2FB17ZLuKRlKEdtXNV6zQFTmFc1TKhlsDTtCkWs/xwkoCfZKstuV3Uc5J4BNJDkQOGm38pDRPcUDUh2/
-----END PRIVATE KEY-----

1.2.4.安全校验码[privateKey]:在MD5签名时,需要支付宝安全校验码(Key)参与签名。安全校验码(Key)是以英文字母和数字组成的32位字符串。


坑1 移动端的商户私钥使用rsa_private_key.pem(pkcs8),php服务端需要用到rsa_private_key.pem。必须保证只有一行文字。 坑2 移动端的支付宝公钥使用alipay_public_key.pem,php服务端需要用到也一样。不过,移动端的必须保证只有一行文字,而php端直接采用服务端demo提供的alipay_public_key.pem即可,弄成一行文字会导致isSign验证失败,因为openssl无法识别一行文字的pem坑3 服务端demo路径需要手动调整,例如证书路径、打印日志路径。


特别注意1 因为是支付宝异步通知,只能通过php的error_log或者官方demo本身封装的输出日志进行测试异步通知。

特别注意2 必须开启curl服务 (1)使用Curl需要修改服务器中php.ini文件的设置,找到php_curl.dll去掉前面的";"即可 (2)文件夹中cacert.pem文件请务必放置到商户网站平台中(如:服务器上),并且保证其路径有效,提供的代码demo中的默认路径是当前文件夹下——getcwd().'\cacert.pem'

特别注意3

  • 签名机制 ---RSA签名: 1.客户的私钥 2.支付宝的公钥

在 RSA 的签名时,需要私钥公钥一起参与签名。私钥公钥皆是客户通过 OPENSSL 来生成得出的。客户把生成出的公钥与支付宝技术人员配置好的支付宝公钥做交换。因此,在签名时,客户要用到的是客户的私钥及支付宝的公钥。 ​ 请求时签名
当拿到请求时的待签名字符串后,把待签名字符串与客户的私钥一同放入 RSA 的签名函数中进行签名运算,从而得到签名结果字符串。

  • 验签机制

1.待签名字符串 2.支付宝提供的公钥 3.支付宝通知返回参数中的参数sign

通知返回时验证签名

当获得到通知返回时的待签名字符串后,把待签名字符串、支付宝提供的公钥、支付宝通知返回参数中的参数 sign 的值三者一同放入 RSA 的签名函数中进行非对称的签名运算,来判断签名是否验证通过。

特别注意4 验证是否支付宝请求---notify_id

  • 目的 验证此次通知信息是否是支付宝服务器发来的信息,以帮助校验反馈回来的数据的 真假性。

  • 工作原理 获取支付宝返回数据之一的通知校验 ID(notify_id),按照支付宝要求的格式拼接成要请求的链接,如:

    支付宝(中国)网络技术有限公司 版权所有| 版本:1.1 第 23 页---支付宝钱包支付接口开发包 2.0 标准版

https://mapi.alipay.com/gateway.do?service=notify_verify&partner=2088002396 712354&notify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8j wyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg

通过访问这个请求链接,利用编程方法来模拟 http 请求与支付宝服务器进行交互, 获得支付宝服务器上处理的结果。 如果获得的信息是 true,则校验成功;如果获得的信息是其他,则校验失败。

2.您的微博版本不支持分享

按照友盟官方demo和文档处理,但是居然“您的微博版本不支持分享”。只怪自己学艺不精,没能一下子看出是白名单的问题。

2.1.打开友盟日志打印。

[UMSocialData openLog:YES];

2.2.

在工程项目中的info.plist文件中的LSApplicationQueriesSchemes添加新浪微博相关的URL themes ,即把微博相关的应用添加到调用应用的白名单中。

sinaweibohd

sinaweibo

sinaweibosso

weibosdk

weibosdk2.5