-
Notifications
You must be signed in to change notification settings - Fork 0
配置第三方sdk
@(githubIO)[iOS] [toc]
1.1.参考官方的demo,里面包含交易状态判断和其他加密解密封装库。
客户端demo 服务端demo
1.2.涉及RSA
、md5
加密,支付宝公钥[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¬ify_id=RqPnCoPT3K9%252Fvwbh3I%252BFioE227%252BPfNMl8j wyZqMIiXQWxhOCmQ5MQO%252FWd93rvCB%252BaiGg
通过访问这个请求链接,利用编程方法来模拟 http 请求与支付宝服务器进行交互, 获得支付宝服务器上处理的结果。
如果获得的信息是 true
,则校验成功;如果获得的信息是其他,则校验失败。
按照友盟官方demo和文档处理,但是居然“您的微博版本不支持分享”。只怪自己学艺不精,没能一下子看出是白名单的问题。
2.1.打开友盟日志打印。
[UMSocialData openLog:YES];
2.2.
在工程项目中的info.plist
文件中的LSApplicationQueriesSchemes
添加新浪微博相关的URL themes
,即把微博相关的应用添加到调用应用的白名单中。
sinaweibohd
sinaweibo
sinaweibosso
weibosdk
weibosdk2.5