zoukankan      html  css  js  c++  java
  • [转]关于支付宝API开发的一点心得

     

    支付宝(http://www.alipay.com/)的产生的确对于促进网络支付的确起到了很大的推动作用,笔者就在目前自己使用支付宝API接口开发中,遇到的一些问题,解决办法,做了简短的记录,由此与大家共分享,由于作者水平有限,难免出现错误,请大家指出,谢谢。

    目前,申请支付宝接口主要有两种方式,1.免费接口,淘宝抽取手续费2%;2.付费接口,比如600元允许48000元交易金额的配额等,笔者使用的是前者,免费接口。在免费接口中,又分为两种,标准双接口交易类型和即时到账交易,这两种支付方式中,前者为淘宝担保交易+即时到账交易,而后者仅仅为即时到账交易,可根据自己的需要进行申请。

    具体申请的过程在这里就不赘述了,如有需要,可以通过留言的方式,我会告知您。

    支付接口申请成功后,会的到两个重要的参数支付宝安全校验码(key)和合作伙伴id(partner),这两个参数起到了支付是否成功的重要作用,申请成功后,都可以在支付宝后台商家工具中获得。

    支付宝的原理其实就是通过浏览器传参数到支付网关(https://www.alipay.com/cooperate/gateway.do),支付网关是由Struts构建的,笔者感觉是通过ActionForm获得浏览器参数,进行内部解析的,浏览器传的参数都进过了MD5加密处理。

    笔者遇到的第一个问题:
    HAS_NO_PRIVILEGE,在官方给出的API介绍中是这样解释的:“该错误提示的是,您没有使用该接口的权限,那么登陆自己的支付宝账户,商家工具,查看实物交易服务或者虚拟物品交易服务,如果没有申请,请立刻申请并且当时开通。”我很肯定的是我已经开通了服务,那么问题就不是出在这儿,仔细查阅了API发现,在service的参数中,设置错误了,所以,在以后的开发中请注意,如果您选择的是:
    标准双接口交易->service=trade_create_by_buyer
    即时到帐交易->service=create_direct_pay_by_user
    这里一定要填写正确,否则就会出现没有权限这样的问题,这里请注意一下。

    笔者遇到的第二个问题:
    支付成功了,但是总是返回的错误页面,首先请看下面的代码:


    ……
    //生成Md5摘要;
    string mysign = GetMD5(prestr.ToString(), _input_charset);

    string sign = Request.QueryString["sign"];

    if (mysign == sign && responseTxt == "true") //验证支付发过来的消息,签名是否正确
    {
    Response.Write(
    "success"); //返回给支付宝消息,成功

    }
    else
    {
    Response.Write(
    "fail");
    }

    ……

    这里如果mysign和responseTxt为flase,则会显示错误信息,这是由于在Return页面中,没有设置支付宝安全校验码(key)和合作伙伴id(partner),解决方法,在page_lode中加入常量:
    String key = "xxxxxxxxxxxxxxxxx";//你的安全效验码
    String partner = "xxxxxxxxxxxxxx";//你的合作伙伴id;

    这样,加入后,当付款成功时,就会返回到正确的Success了!

    笔者使用的是.net版的支付方式,Java版也许会有所不同,不过原理应该和这个是一样的,我已经下载了官方给出的Java实例,待看后与大家分享经验心得。

  • 相关阅读:
    php 下载保存文件保存到本地的两种实现方法
    MySQL select语句直接导出数据
    Go学习笔记03-附录
    Go学习笔记02-源码
    Go学习笔记01-语言
    Go语言极速入门手册
    最简单的抓取网络图片或音乐文件
    使用PHP生成PDF文档
    Oracle常用函数
    ORACLE常用数值函数、转换函数、字符串函数
  • 原文地址:https://www.cnblogs.com/hsapphire/p/1634750.html
Copyright © 2011-2022 走看看