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

Andriod 监听微信支付宝收款实现个人支付宝支付接口!附安卓 App(开源)

  •  
  •   pytth · 2019-02-27 12:15:20 +08:00 · 11748 次点击
    这是一个创建于 1883 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    这个 App 不是我写的,我只是自己研究了一下这个 App 怎么使用的,然后分享给大家。

    App 作者开源了

    https://github.com/WeihuaGu/receiptnotice

    解决方案

    原生支付宝,微信支付只服务于有营业执照、个体工商户的商户。无法以个人身份(或以个人为主体)直接申请 API。不支持个人申请。所以,便有了个人的一些解决方案,手机安装一个 app,然后这个服务监听手机收到的通知,如果是收到收款的通知,就把信息推送到指定的 url 去。

    界面就这点东西了!只需要设置后端接口,就可以接收这个 APP 监听的支付宝收款数据了,APP 会以 POST 方式向您的接口 POST 一段 JSON 数据。

    作者说通过 adb 在控制台查看接收的数据,所以我就找到了 App 返回的数据格式。

    {"title":0.01,"time":"2019-02-26","title":"支付宝支付","content":"成功收款 1.00 元。享免费提现等更多专属服务,点击查看"}
    

    下面是我写的 PHP 后端简易版

    <?php
    // 定义接收 JOSN 数据
    header("Content-Type:application/json");
    
    // 接收从 APP 端 POST 过来的数据
    $json = $GLOBALS['HTTP_RAW_POST_DATA'];
    
    // 将 JSON 数据转换为 PHP 对象
    $obj = json_decode($json);
    
    // 解析对象返回字符串
    $money = $obj->money; //  返回支付金额
    $title = $obj->title; //返回支付标题
    $time = $obj->time; // 返回支付时间
    $content = $obj->content; // 返回支付内容
    
    // 连接数据库
    $con = mysql_connect("数据库地址","数据库账号","数据库密码");
    if (!$con){die('Could not connect: ' . mysql_error());}
    
    //选择数据
    mysql_select_db("数据库名", $con);
    
    //设置字符集
    mysql_query("SET NAMES UTF8");
    
    //插入数据库
    mysql_query("INSERT INTO 表名 (paymoney, paytime, title, content) VALUES ('$money', '$time', '$title', '$content')");
    
    //关闭数据库连接
    mysql_close($con);
    
    ?>
    

    数据库接收到的通知

    App 下载

    https://www.coolapk.com/apk/com.weihuagu.receiptnotice

    支付 demo

    http://likeyunba.com/demo/Alipay-Listen/

    TANKING
    2019-02-27

    21 条回复    2020-08-18 14:59:46 +08:00
    beordle
        1
    beordle  
       2019-02-27 12:33:56 +08:00 via Android
    支持开源啊 很有用的项目
    xiaoz
        2
    xiaoz  
       2019-02-27 12:38:33 +08:00 via Android
    感谢分享,待会儿去研究下。
    des
        3
    des  
       2019-02-27 12:40:17 +08:00 via Android
    拿不到订单号?
    imicksoft
        4
    imicksoft  
       2019-02-27 12:50:32 +08:00
    先收藏回头研究一下
    djxf
        5
    djxf  
       2019-02-27 12:50:38 +08:00 via Android
    好用,能拿到付钱人姓名吗
    ryV60s
        6
    ryV60s  
       2019-02-27 12:52:46 +08:00
    应该适合那种一段时限内差个几分的支付,好区分订单
    codingoc
        7
    codingoc  
       2019-02-27 13:02:40 +08:00
    基于 Android 的通知,手动 parse,只能拿到金额,我用 java 也弄了一个服务端
    pytth
        8
    pytth  
    OP
       2019-02-27 13:24:16 +08:00
    @des 订单号自己生成!
    pytth
        9
    pytth  
    OP
       2019-02-27 13:24:42 +08:00
    @djxf 拿不到。
    pytth
        10
    pytth  
    OP
       2019-02-27 13:25:14 +08:00
    @ryV60s 是啊,手动设置收款码。
    des
        11
    des  
       2019-02-27 13:29:02 +08:00 via Android
    @pytth
    不是那个,你可以去看看支付宝的账单页面,那个订单号不是自己生成的
    pytth
        12
    pytth  
    OP
       2019-02-27 13:31:15 +08:00
    @des 我知道。安卓通知栏是监听不到支付宝的订单号的,所以自己开发后端的时候,自己生成自己的订单号存入数据库方便鉴别。
    codingoc
        13
    codingoc  
       2019-02-27 13:35:02 +08:00
    原理就是读取通知中的文本,其他信息都是拿不到的,不过这样很稳定
    des
        14
    des  
       2019-02-27 13:36:35 +08:00 via Android
    @pytth 就是说这个嘛,这些信息不够详细,如果要对账单的话估计很难搞
    elfive
        15
    elfive  
       2019-02-27 16:54:59 +08:00
    是不是只有我一个人在想 TANKING 是不是打错了。。。
    pytth
        16
    pytth  
    OP
       2019-02-27 19:22:21 +08:00
    @elfive 没错的。我的英文名,用了 10 年
    wanxue
        17
    wanxue  
       2019-03-22 17:27:37 +08:00
    看日志上是有接收到收款通知信息的,但根本没有发送到接口啊,是啥情况。
    tdy1
        18
    tdy1  
       2019-05-12 10:07:36 +08:00
    @pytth 在不?如何联系你
    qwe121002
        19
    qwe121002  
       2020-05-19 00:23:14 +08:00
    @pytth 你好,如何联系你呢,想了解点有关于支付方面的知识
    pytth
        20
    pytth  
    OP
       2020-05-19 02:24:02 +08:00 via iPhone
    @qwe121002 ZmFjZTYwMDk=
    cnscorpions
        21
    cnscorpions  
       2020-08-18 14:59:46 +08:00
    订单号怎么对上?怎么区分那一笔收款那笔订单?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3139 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 469ms · UTC 14:53 · PVG 22:53 · LAX 07:53 · JFK 10:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.