zoukankan      html  css  js  c++  java
  • tp支付宝接口

    一、下载支付宝接口包

    下载地址:
    https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103566&docType=1
    具体如何下载,我就不在罗嗦了~~

    解压后放到框架的Vendor目录中即可~

    二、重新整理接口包文件,这一步应该算是比较关键的(个人认为)

    下载下来的接口包文件有很多语言的源码,

    我们选择 create_direct_pay_by_user-PHP-UTF-8 这个名称的接口文件。里面包括如下文件:

    images文件里是支付宝相关的一些标志的图片,我们暂不管他,lib文件很重要,是整个接口的核心类文件;
    alipay.config.php是相关参数的配置文件
    alipayapi.php 是支付宝接口入口文件
    notify_url.php 是服务器异步通知页面文件;
    return_url.php 是页面跳转同步通知文件;

    在ThinkPHP的框架文件下,找到Extend 进入,再进入Vendor,在Vendor文件夹下,新建文件夹Alipay,把支付宝作为第三方类库引入。然后,复制支付宝接口文件包中lib文件里的所有文件。一共4个文件,如下:

    现在对以上文件进行重命名,
    alipay_core.function.php重命名为:Corefunction.php;
    alipay_md5.function.php重命名为:Md5function.php;
    alipay_notify.class.php重命名为:Notify.php;
    alipay_submit.class.php重命名为:Submit.php;

    然后,打开Submit.php文件,把以下代码去掉;

    同样,打开Notify.php文件,把以下两段代码去掉

     

    为什么要去掉以上两个文件中的这两段代码,因为在项目中调用接口文件的时候,我把所有4个核心文件都通过vendor来进行引入。所以,这不再需要导入。

    到此,支付宝接口包相关核心类库的整理基本完成。现在开始在项目中调用;

    三、在项目中调用支付宝接口

    调用分两步:
    1、在配置文件中Conf/Config.php文件中对支付宝相关参数进行配置:

    2、新建一个PayAction控制器代码如下:

    3、这里有几个支付处理过程中需要用到的函数,我把这些函数写到了项目的Common/common.php中,这样不用手动调用,即可直接使用这些函数,代码如下:

    四、总结几点

    1、接口包中lib文件中的文件复制到Vendor后,重命名为TP规范的命名规则,为的是调用方便,当然你要改成其他名称也可以;
    2、把执行支付操作(doalipay),处理异步返回结果(notifyurl),处理跳转返回结果(returnurl)三个支付接口的核心页面写到一个PayAction控制器中。
    3、提交支付的页面中,可以在提交之前先把一些参数要传递的内容先通过隐藏域的方法组合好,比如金额先计算好,订单名称,订单描述等先用字符串组合好。然后提交表单,这样,在doalipay方法中只要直接构造传递参数,直接进行提交就行过了。
    4、支付返回后的处理因为要在异步和跳转两个方法中都要进行相应的判断和处理,所以,把这些判断和处理写到一个自定义函数中,这样只要调用函数即可,使得代码更加清晰明了。
    5、notify_url和return_url两种模式的返回url必须使用http://xxxxxxx这样的绝对路径,因为里是从支付宝平台返回到你的项目页面。不能使用相对路径。

    以上代码在ThinkPHP3.0中正常使用!!

    ————————修正补充!!2013.08.13——————————
    在第三部分中Orderlist数据表结构中,我有一个字段是OrdCode,这个字段是我系统中用来发送短信给客户的消费密码,也就是客户凭手机短信来消费时就要验证这个字段。
    其实,大家在做系统的时候,可以把这个字段忽略,可以不用他。代码最后部分中,有一个获取一个随机且唯一的订单号的函数 getordcode(),这里我其实写错了,不是获取订单号,是ordcode,也就是消费密码,这个函数也不需要。系统中的订单号(ordid字段),我用的是时间戳。
    在此修正!

    ——————–解决签名错误问题 修正 13-08-16————————
    有人说在在调试时,签名出现无法通过的问题,产生问题的原因是在返回的URL地址中返回的参数中,可能存在__URL__这样的字符串。导致无法正确过滤参数。

    解决办法:
    方法1:
    在向支付宝提交需要的参数时,不要使用__URL__,__PUBLIC__等TP中的模版替换变量,如果TP对这些变量解析不成功,会直接传递过去,所以,在这些地方直接使用原始的URL地址。

    方法2:
    在接口的Core文件中,加入改造后的过滤函数,如下:

  • 相关阅读:
    TdxGaugeControl
    TdxSkinController
    delphi TdxMemData 使用
    深入方法(16)- 方法的顺序
    深入方法(15)- 调用其他单元的函数
    深入方法(14)- 在TForm1 类内声明的方法
    深入方法(13)- 在 interface 区声明的方法
    深入方法(12)- implementation 区中的方法
    深入方法(11)- 参数前缀
    深入方法(10)- 默认参数
  • 原文地址:https://www.cnblogs.com/hdd-zero/p/8085835.html
Copyright © 2011-2022 走看看