【App 支付】交易查询接口

概念理解

支付宝分为“合作伙伴”和“开放平台”两个概念,各自都有一套独立的 RSA 密钥,在调用支付宝接口之前,一定要区分是属于两者中的哪一个。

例如:商家 App 端调起支付宝 App 支付时,使用的是合作伙伴密钥;而商家主动查询交易状态时,使用的是开放平台密钥。

 

密钥管理

访问 b.alipay.com,单击“查询PID、Key”即进入密钥管理页面。

如果密钥已经由其他管理人员生成,那么必须向管理人员索取,不能擅自修改密钥,否则会影响他人程序。

如果密钥还未生成,那么按以下步骤来完成:

  1. 下载支付宝提供的密钥生成工具
  2. 执行“支付宝RAS密钥生成器SHAwithRSA1024_V1.0.bat”,注意:该文件所在路径不能有中文。
  3. 单击“重新生成”按钮,把生成的三个 pem 文件保存下来,其中 rsa_private_key_pkcs8.pem 为商家安卓 App 使用的私钥,其他需要使用私钥的地方均使用 rsa_private_key.pem。
  4. 单击工具中的“复制”按钮,把复制的公钥上传到支付宝密钥管理页面 -> 合作伙伴密钥管理或者开放平台密钥管理 -> RSA 加密:查看密钥 -> 修改 -> 粘贴 -> 确定。
  5. 单击支付宝密钥管理页面 -> 合作伙伴密钥管理或者开放平台密钥管理 -> RSA 加密:查看支付宝公钥,把公钥保存到本地。这个公钥和 rsa_private_key.pem 是一对。
  6. 特别注意,在支付宝密钥管理页面中修改公钥时,可能会提示“密钥上传失败”或者“密钥格式错误”,此时要先检查网站登录是否超时。

 

交易查询

在线文档链接

上述文档中,“请求示例”的 .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编辑  收藏  举报