前言: 本人也是从新手一步一步摸爬过来的,对于新手来说,确实会遇到很多坑.一味看别人家写的总结和帖子也不是最好的办法,个人觉得比较好的做法是:
研读官方文档 + 深学 SDK Demo + 官方常见问题汇总 + 百度看帖(支付宝技术客服)
研读官方文档
1, 认真查阅支付宝集成的官方文档,和接口说明(有利于提高自己的自学能力,学习第三方框架的能力,同时可以更加全面,深入了解到支付宝整个集成过程和代码调用运行逻辑)
深学 SDK Demo
2,运行查看支付宝 SDK 自带的 Demo,从中学习支付过程从 支付发起--->支付处理--->支付成功---> 支付成功后回调处理.
官方常见问题汇总
3.自己尝试将 SDK 集成到自己的工程,(中间肯定会遇到很多问题,报错),首先问题出来后,重在分析排查问题出现的原因,找到问题的解决思路,(官方文档有很多问题汇总解答,学会输入关键字,错误码进行定位查找问题)
百度(支付宝技术客服)
4.最后问题找不到方向时,可以将问题百度搜索,前辈的经验贴进行学习,分析,思考.(实在找不到原因:就找支付宝技术客服进行反馈寻求帮助)
升级支付宝SDK遇到的坑
问题描述: 在老工程APP 1.0 版本里 支付宝 SDK 可以支付成功,考虑到版本升级,同时 出于支付安全性,就更新 支付宝的新 SDK . 结果更新 SDK 后出现支付不成功,如下图.
这是大家集成 支付宝 SDK 最常见的 报错异常界面. 官方文档ALI40247 问题分析解决里面也分析了很多 原因,大家可以逐条查询看看自己问题出现在哪个环节.
原因:
memo = "";
result = "{\"alipay_trade_app_pay_response\":{\"code\":\"40002\",\"msg\":\"Invalid Arguments\",\"sub_code\":\"isv.invalid-signature\",\"sub_msg\":\"验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,网关生成的验签字符串为:app_id=2016041301292377&biz_content={\\\"timeout_express\\\":\\\"30m\\\",\\\"seller_id\\\":\\\"2088511860242452\\\",\\\"product_code\\\":\\\"QUICK_MSECURITY_PAY\\\",\\\"total_amount\\\":\\\"0.01\\\",\\\"subject\\\":\\\"1\\\",\\\"body\\\":\\\"我是测试数据\\\",\\\"out_trade_no\\\":\\\"KH15L8ESZL6F3HE\\\"}&charset=utf-8&method=alipay.trade.app.pay&sign_type=RSA×tamp=2017-11-01 11:45:49&version=1.0\"}}";
resultStatus = 4000;
分析: 根本原因是,更新新的支付宝 SDK 后,需要 同步更新之前 支付宝开发平台设置好的应用公钥.
因为我当时没有去重新设置应用公钥,(与私钥配对生成的,私钥就交给后台同事进行加签 支付订单 OderString)
1.确保 你的 APP 已经签约了支付宝的 APP 支付功能 而不是 移动支付功能
移动支付 和 APP 支付 是不一样的,有差别!!! 移动支付老版本和APP支付新版本接入对比
坑二: 如果发现你重新设置 应用公钥 之后 还是 出现 ALI40247 错误.很有可能是下面情况
如果之前 你的APP 是由主账号 和支付宝平台签约,上线的.而你开发集成用的是 支付宝子账号.子账号一定要添加 APP 支付这个功能,然后再设定 应用公钥. (因为子账号没有 APP 支付功能的前提下,设定应用公钥是没有效果的)
主账号:一般是公司主要负责人的 支付宝账号(私人账号) 或者公司的企业支付宝账号,负责与支付宝平台签约相关开发的功能,比如 APP支付功能等. 同时该账号负责接收 用户交易金额.有很高的隐私安全性,不会随便给开发人员使用.
子账号: 用来关联 主账号,用于主账号下所有 APP 项目的管理与开发,相关参数调试设置.比如,重新设定应用公钥,授权回调地址等等.一般为 开发人员的 工作用的支付宝账号.
注意: 支付宝 SDK 的更新,支付接口的名字一般没有变,但是各个版本间,要传递的一些参数名字是有略微修改的,切勿将老版本 SDK 的参数名字 直接引用到新 SDK 中.
最后分享一下成功的喜悦:
总之:生搬硬套很危险,理解逻辑才是硬道理!
本文旨在记录分享自己的学习历程,如有不足还望包涵指正.
创作不易,转载请说明出处.