V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
littleylv
V2EX  ›  PHP

吐槽一下支付宝 alipay-sdk- PHP

  •  
  •   littleylv · 2017-03-18 15:09:50 +08:00 · 15811 次点击
    这是一个创建于 2595 天前的主题,其中的信息可能已经有所发展或是发生改变。

    官方的 sdk

    各种槽点。没法 composer ,没有命名空间,引用 lotusphp_runtime...

    微信支付都有了 wxpay/WXPay-SDK-PHP (话说这个是官方的吧?)wxpay

    求问大牛们:你们在一些使用命名空间的框架里是怎么优雅的使用官方的 alipay-sdk-PHP 的?

    PS :虽然也有这种第三方修改过的版本 fishlab/alipay-sdk-php ,但不是官方的总不是很放心(不是针对该作者的意思,作者辛苦了),另外官方更新的话也不一定能及时更新。

    蚂蚁金服是不是很少 php 程序猿了 0 0

    32 条回复    2017-04-22 19:47:07 +08:00
    peesefoo
        1
    peesefoo  
       2017-03-18 16:14:39 +08:00 via Android
    官方的 sdk 都是零几年写的吧
    littleylv
        2
    littleylv  
    OP
       2017-03-18 16:18:53 +08:00
    @peesefoo 最早应该是零几年,不过现在也还在维护(因为最新下载的文件名是 alipay-sdk-PHP-20170307171629.zip )

    时代都在进步了,为何他们不打算重构,这么一个大公司的 sdk 搞的辣么...

    隔壁 wxpay 都拥抱 github 了。
    49gd
        3
    49gd  
       2017-03-18 16:36:59 +08:00
    我用的 lokielse/omnipay-alipay 简单又好用
    hoythan
        4
    hoythan  
       2017-03-18 16:46:56 +08:00
    并不觉得不好.
    ijustdo
        5
    ijustdo  
       2017-03-18 16:48:15 +08:00
    我们这边弄过蚂蚁金服的 呵呵 当时也是恶心的不行呢 后来干脆不用它 sdk 自己动手丰衣足食
    lyragosa
        6
    lyragosa  
       2017-03-18 16:53:42 +08:00
    我用着倒是没啥问题……可能是因为我没用 composer 的缘由
    littleylv
        7
    littleylv  
    OP
       2017-03-18 17:01:32 +08:00
    @lyragosa 问题倒是不会有啥问题,就是感觉太落伍了,而且编程规范乱七八糟,另外加载了另一个框架 lotusphp 大丈夫?
    azuis
        8
    azuis  
       2017-03-18 17:06:10 +08:00 via iPhone
    这个其实不算是 sdk 啦,就是个 example code …各大框架有第三方开发者写的库可以用。
    kumakiti
        9
    kumakiti  
       2017-03-18 19:10:17 +08:00
    我记得当时是用 composer 的 autoload 来弄个命名空间用的,现在根本不记得怎么用了,那时候还是照着别人的写法参考来的,有空得补补,这些知识不能丢啊
    leavic
        10
    leavic  
       2017-03-18 19:12:13 +08:00
    你知道 python 连 SDK 都没有吗。。。。
    连验签都要自己做,还得抓包,用官方的 java 工具验签都报失败,我硬是自己给调过了。。。
    littleylv
        11
    littleylv  
    OP
       2017-03-18 21:58:38 +08:00
    @kumakiti 嗯 是用 composer 的 classmap 属性 强制 autoload
    Lucups
        12
    Lucups  
       2017-03-18 22:16:09 +08:00
    难道是因为阿里没有 PHP 程序员的原因?
    kankana
        13
    kankana  
       2017-03-18 22:20:08 +08:00
    接触的几个阿里云 sdk 好像也是不支持 composer.
    HanSonJ
        14
    HanSonJ  
       2017-03-18 22:49:59 +08:00
    不要依赖官方 SDK ,接触过很多 SDK ,官方的都不叫 SDK ,那叫 DEMO ,给你示范一下怎么用,能跑通,就扔给你了,去 github 搜索,如果没有可以考虑自己写个 SDK 了
    mingyun
        15
    mingyun  
       2017-03-18 23:24:51 +08:00
    @49gd 用过,很赞
    littleylv
        16
    littleylv  
    OP
       2017-03-18 23:29:32 +08:00
    @49gd 谢谢推荐。不过好像里面封装的 api 不够完整?只封装了一些常用的?
    zqcolor
        17
    zqcolor  
       2017-03-19 00:13:14 +08:00
    我用的这个+ yii2 框架, github 上的, 其他框架也应该类似
    https://github.com/fangj99/yii2-starker-kit-alipay
    zjsxwc
        18
    zjsxwc  
       2017-03-19 07:29:25 +08:00 via Android
    阿里的 php sdk 感觉质量都很差,没有 namespace ,命名不规范,不能 compser ,大部分依赖 lotus 这个早就不维护了的东西
    JulyXing
        19
    JulyXing  
       2017-03-19 10:44:06 +08:00
    支付宝和微信基本上都是给一个 demo ,后面还是需要自己配合自己现有的框架重构。
    haiyang416
        20
    haiyang416  
       2017-03-19 10:51:18 +08:00 via Android
    其实就是一堆 class 文件,自带的框架直接扔了,不用 composer 的话自己 require 就行。
    lsido
        21
    lsido  
       2017-03-19 10:54:20 +08:00 via Android
    阿里的 sdk 就这样
    hiboshi
        22
    hiboshi  
       2017-03-19 14:27:46 +08:00
    为什么一定要 composer ?为什么一定要命名空间?
    不瞒你说我们公司还是 php5.2 每次看到命名空间就头疼没法使用它们的 sdk ,只能找对方要 5.2 的。
    littleylv
        23
    littleylv  
    OP
       2017-03-19 16:40:12 +08:00
    @hiboshi 我觉得贵公司使用汇编更好 ^ ^
    hiboshi
        24
    hiboshi  
       2017-03-19 17:28:19 +08:00
    @littleylv 无法 get 到点,因为古老么其实现实中,很多代码 线上跑的没有问题 不去纠结版本问题。
    littleylv
        25
    littleylv  
    OP
       2017-03-19 17:40:22 +08:00
    @hiboshi 你已经 get 到点了。
    已经在线上跑的项目我个人也认为不好去纠结版本,但是我们不能排斥新事物是不是?
    你不能否认 5.6 ( 7.0/7.1 )相比 5.2 的好处吧?
    former
        26
    former  
       2017-03-20 09:36:46 +08:00
    上周也被这个 SDK 折腾了,可以不用管 lotusphp 框架, lotusphp 框架主要就是自动加载类的作用,直接找 aop/request 里面的类文件,大约 500 多个,看你需求,如果单是支付查询退款操作,用到的也不多,参考文档集成到项目里面就好了。但是这样不利于日后更新维护,看你取舍了。
    littleylv
        27
    littleylv  
    OP
       2017-03-20 12:00:42 +08:00
    @former 我打算不改动原有 SDK ,把包放到 vendors/alipay/alipay-sdk-php ,再用 composer.json 里的 classmap 属性
    后面应该可以直接 use 命名空间?(还没实践过,按手册说的应该是可以)
    Light3
        28
    Light3  
       2017-03-20 15:16:45 +08:00
    想起了那个自动加载类和某文件冲突..然后我有次不知道什么鬼 demo 都跑不过..最后没办法求救那个客服 客服说我密钥生成错了..折腾一下午..
    littleylv
        29
    littleylv  
    OP
       2017-03-20 15:20:19 +08:00   ❤️ 2
    经实践,最终我的做法是:
    1 、在 vendors 下新建 alipay
    2 、把 SDK 里的 aop 目录拷到 alipay 下(抛弃原来 SDK 目录下的 lotusphp_runtime 和 AopSdk.php )
    3 、最终目录结构是 vendors/alipay/aop
    4 、 composer.json 的 autoload 节点里加入:
    ```
    "classmap": [
    "vendor/alipay/aop"
    ]
    ```
    5 、运行``composer dump-autoload``
    6 、这样在项目里可以不用 require ,直接:
    ```
    // 仅测试能使用命名空间,忽略参数设置吧。。。
    $a = new \AopClient();
    $b = new \AlipayAppTokenGetRequest();
    $c = $a->execute($b);
    ```
    littleylv
        30
    littleylv  
    OP
       2017-03-20 15:21:53 +08:00
    @littleylv #29 咦?不是支持 MD 语法么? ``` 的写法怎么不行? `` 的写法也不行?
    bunny183
        31
    bunny183  
       2017-03-20 21:12:56 +08:00
    其实它只是给你一个示例代码而已。
    mingyun
        32
    mingyun  
       2017-04-22 19:47:07 +08:00
    @littleylv 评论不支持 md
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   996 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:47 · PVG 04:47 · LAX 13:47 · JFK 16:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.