【App 支付】交易查询接口
概念理解
支付宝分为“合作伙伴”和“开放平台”两个概念,各自都有一套独立的 RSA 密钥,在调用支付宝接口之前,一定要区分是属于两者中的哪一个。
例如:商家 App 端调起支付宝 App 支付时,使用的是合作伙伴密钥;而商家主动查询交易状态时,使用的是开放平台密钥。
密钥管理
访问 b.alipay.com,单击“查询PID、Key”即进入密钥管理页面。
如果密钥已经由其他管理人员生成,那么必须向管理人员索取,不能擅自修改密钥,否则会影响他人程序。
如果密钥还未生成,那么按以下步骤来完成:
- 下载支付宝提供的密钥生成工具。
- 执行“支付宝RAS密钥生成器SHAwithRSA1024_V1.0.bat”,注意:该文件所在路径不能有中文。
- 单击“重新生成”按钮,把生成的三个 pem 文件保存下来,其中 rsa_private_key_pkcs8.pem 为商家安卓 App 使用的私钥,其他需要使用私钥的地方均使用 rsa_private_key.pem。
- 单击工具中的“复制”按钮,把复制的公钥上传到支付宝密钥管理页面 -> 合作伙伴密钥管理或者开放平台密钥管理 -> RSA 加密:查看密钥 -> 修改 -> 粘贴 -> 确定。
- 单击支付宝密钥管理页面 -> 合作伙伴密钥管理或者开放平台密钥管理 -> RSA 加密:查看支付宝公钥,把公钥保存到本地。这个公钥和 rsa_private_key.pem 是一对。
- 特别注意,在支付宝密钥管理页面中修改公钥时,可能会提示“密钥上传失败”或者“密钥格式错误”,此时要先检查网站登录是否超时。
交易查询
上述文档中,“请求示例”的 .NET 代码部分有明显错误,示例代码复制下来后,需要根据实际情况进行修正。
IAopClient client = new DefaultAopClient( "https://openapi.alipay.com/gateway.do", appId, "rsa_private_key.pem 中的私钥部分,不需要头和尾", "json", "1.0", "RSA", "支付宝公钥,不需要头和尾", "utf-8"); AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); request.BizContent = "{\"out_trade_no\":\"111\", \"trade_no\":\"222\"}";
AlipayTradeQueryResponse response = client.Execute(request);
- 代码中的 appId 为开放平台中的 Appid,管理地址:https://openhome.alipay.com/platform/appManage.htm
注意:该应用的功能中必须包含“APP”支付,如果不包含,必须创建新的应用来包含。 - 私钥和公钥都不需要头和尾,即 ----- begin ... ------、----- end ... -----
注意:所有应用的公钥和私钥都是相同的,统称开发平台密钥。 - out_trade_no 和 trade_no 二选一即可。
- 根据 response 的内容来判断调用结果,失败时可能会产生异常
posted on 2016-11-26 22:53 CsharpStyle 阅读(219) 评论(0) 编辑 收藏 举报