个人支付宝微信收款插件开发文档(V1.0版本)

Karson 7月前 10424

免责声明

此文档为个人微信支付免签收款插件V1.0的API接口文档,你可以按照此文档将个人二维码收款系统对接到你的商城或订单系统中,不局限于PHP,任何语言、任何客户端都可以接入。

V2.0版本请参考https://forum.fastadmin.net/thread/7888

发起支付请求


接口功能

发起支付请求或获取支付二维码相关信息

URL

http://www.yoursite.com/addons/pay/api/create

数据格式

JSON|XML|HTML

HTTP请求方式

GET|POST

请求参数

参数必选类型说明
pricestring支付的金额
out_order_idstring你订单系统的唯一订单号
typestring请求支付的方式,wechat:微信 alipay:支付宝
signstring签名,构造格式见下方的签名方法
product_idint指定产品的ID,为空将自动判断,此产品ID是个人收款管理->产品管理中的ID
notifyurlstring支付成功的回调通知URL,为空将以插件管理中配置的URL为准
returnurlstring支付成功后跳转的URL,为空将以插件管理中配置的URL为准
extendstring自定义信息,此信息将在notifyurl中原封不动的回传,通常用于传递会员ID、会员名称等信息
formatstring请求输出的格式,默认为html,可选json或xml的方式,为html时页面将输出HTML内容

签名方法

md5(md5(price+out_order_id+type+product_id+notifyurl+returnurl+extend)+secretkey)

返回字段

返回字段字段类型说明
codeint返回结果状态。0:失败;1:成功。
msgstring提示文字信息
dataobject订单数据,JSON格式

返回订单数据字段列表

字段名字段类型说明
out_order_idstring外部订单号
pricefloat订单金额
discountpricefloat优惠金额
realpricefloat实际需要支付的金额
typestring支付类型
order_idint个人收款插件内部订单号
remainsecondsint二维码剩余有效时长(秒)
extendstring自定义传递的信息
statusstring订单状态:inprogress=进行中
returnurlstring成功后跳转的URL链接地址(带参数)
payurlstring网页支付的链接URL地址(非二维码地址)
queryurlstring查询订单状态的URL地址(带参数)
qrcodeurlstring二维码URL(可用于生成二维码进行支付使用)

发起查询请求


接口功能

发起查询请求,用于查询订单支付状态

URL

http://www.yoursite.com/addons/pay/api/query

数据格式

JSON|XML|HTML

HTTP请求方式

GET|POST

请求参数

参数必选类型说明
out_order_idstring你订单系统的唯一订单号
signstring签名,构造格式见下方的签名方法
formatstring请求输出的格式,默认为html,可选json或xml的方式,为html时页面将输出HTML内容

签名方法

md5(md5(out_order_id)+secretkey)

返回字段

返回字段字段类型说明
codeint返回结果状态。0:失败;1:成功。
msgstring提示文字信息
dataobject订单数据,JSON格式,内容同创建订单数据格式相同

订单状态

字段名字段类型说明
inprogressstring进行中
expiredstring已过期
paidfloat已支付
settledstring交易完成
unsettledstring回调通知失败

取消订单请求


接口功能

取消订单,用于取消生成的订单,释放占用的二维码

URL

http://www.yoursite.com/addons/pay/api/cancel

数据格式

JSON|XML|HTML

HTTP请求方式

GET|POST

请求参数

参数必选类型说明
order_idstring通过创建订单接口生成的订单号order_id
signstring签名,构造格式见下方的签名方法
formatstring请求输出的格式,默认为html,可选json或xml的方式,为html时页面将输出HTML内容

签名方法

md5(md5(order_id)+secretkey)

返回字段

返回字段字段类型说明
codeint返回结果状态。0:失败;1:成功。
msgstring提示文字信息

回调通知请求


接口功能

用户支付成功后会主动发送通知请求notify_url到你的服务器

HTTP请求方式

POST

请求参数

返回字段字段类型说明
order_idstring免签支付系统中的订单流水号
out_order_idstring你订单系统的唯一订单号
pricefloat订单金额
realpricefloat实际支付金额
typestring支付的方式,wechat:微信 alipay:支付宝
paytimeint支付时间,时间戳
extendstring原样返回你请求的extend信息
signstring签名,构造格式见下方的签名方法

签名方法

md5(md5(order_id + out_order_id + price + realprice + type + paytime + extend)+secretkey)

返回信息

接收到通知后必须返回success这个英文单词,不可以再返回其它任何信息

支付成功跳转


接口功能

用户支付成功后会跳转到对应的return_url链接,请勿在此接口处理订单逻辑,订单逻辑应该在上方的回调通知请求中处理

HTTP请求方式

GET

请求参数

返回字段字段类型说明
order_idstring免签支付系统中的订单流水号
out_order_idstring你订单系统的唯一订单号
signstring签名,构造格式见下方的签名方法

签名方法

md5(md5(order_id + out_order_id)+secretkey)

返回信息

无需返回信息,请自定义展示页面给用户查看

最后于 9天前 被Karson编辑
最新回复 (73)
  • sthwrong 7月前
    感谢TA
    0 引用 2

    见过类似的支付形式,不过能做成插件帅得掉渣。

  • flywin 7月前
    感谢TA
    0 引用 3

    先支持楼主一下,期望有机会测试下

  • chance 7月前
    感谢TA
    0 引用 4

    支持下,有的研究了

  • 小妖多情 4月前
    感谢TA
    0 引用 5

    如果apk能兼容模拟器就完美了

  • jpr5188 3月前
    感谢TA
    0 引用 6

    @Karson secretkey 在哪里配置的?是哪个apk的秘钥吗?

  • jpr5188 3月前
    感谢TA
    0 引用 7

    翻了一下代码。确定就是那个秘钥。

  • jpr5188 3月前
    感谢TA
    0 引用 8

    @Karson notify接口 怎么才算支付成功? price 应该等于 realprice吗?

  • Karson 楼主 打赏 3月前
    感谢TA
    0 引用 9

    @jpr5188 只要能收到notify通知且通过验签说明就是成功的。price不一定等于realprice

  • jpr5188 3月前
    感谢TA
    0 引用 10

    @Karson 我返回到时候 直接 echo "success" ,但系统里面收到的却是通知失败。前面多了一些空格。怎么处理?

  • jpr5188 3月前
    感谢TA
    0 引用 11

    屏幕快照 2018-08-21 下午10.35.57.png
    屏幕快照 2018-08-21 下午10.35.36.png
    屏幕快照 2018-08-21 下午10.36.36.png

    最后于 3月前 被jpr5188编辑
  • xinyunzhe 3月前
    感谢TA
    0 引用 12

    .net的怎么调用啊?

  • Karson 楼主 打赏 3月前
    感谢TA
    0 引用 13

    @jpr5188 你的文件是不是采用了带bom的UTF8编码,请采用无Bom的UTF8编码。

  • Karson 楼主 打赏 3月前
    感谢TA
    0 引用 14
    xinyunzhe .net的怎么调用啊?

    请直接参考文档发起API请求即可,你也可以参考下phpdemo.zip,代码非常简单。主要理解下调用逻辑

  • 2924026692 3月前
    感谢TA
    0 引用 15

    个人微信支付宝收款(免签约)提供全部源码吗?

  • lixiangbest 3月前
    感谢TA
    0 引用 16

    魅族和小米的安装APK后没有收到任何的通知信息啊!楼主有微信吗?我们购买了,安装apk就是收不到通知消息!

  • Karson 楼主 打赏 3月前
    感谢TA
    0 引用 17
    2924026692 个人微信支付宝收款(免签约)提供全部源码吗?

    提供全部服务端源码,APK源码不提供的哦。

  • Karson 楼主 打赏 3月前
    感谢TA
    0 引用 18
    lixiangbest 魅族和小米的安装APK后没有收到任何的通知信息啊!楼主有微信吗?我们购买了,安装apk就是收不到通知消息!

    魅族和小米都测试过,100%可以的,收不到通知消息请检查下你的微信或支付宝是否开启语音提醒功能。请参考介绍页面的常见问题。https://www.fastadmin.net/store/pay.html

  • jpr5188 3月前
    感谢TA
    0 引用 19

    @Karson 统计页面出错。是不是有bug?
    [10501] PDOException in Connection.php line 390
    SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'homestead.fa_pay_order.paytime' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

            $this->PDOStatement->execute();
            // 调试结束
            $this->debug(false, '', $master);
            // 返回结果集
            return $this->getResult($pdo, $procedure);
        } catch (\PDOException $e) {
            if ($this->isBreak($e)) {
                return $this->close()->query($sql, $bind, $master, $pdo);
            }
            throw new PDOException($e, $this->config, $this->getLastsql());
        } catch (\Throwable $e) {
            if ($this->isBreak($e)) {
                return $this->close()->query($sql, $bind, $master, $pdo);
            }
            throw $e;
        } catch (\Exception $e) {
            if ($this->isBreak($e)) {
                return $this->close()->query($sql, $bind, $master, $pdo);
            }
  • Karson 楼主 打赏 3月前
    感谢TA
    0 引用 20

    @jpr5188 请修改my.cnf文件,修改sql_mode为空。

  • semo86 3月前
    感谢TA
    0 引用 21

    配接口地址一直报错 格式是这样的:http://www.xxx.cn/pay_sys/index.php/Api/PayCallback/c_1

  • Karson 楼主 打赏 3月前
    感谢TA
    0 引用 22

    @semo86 客户端API地址格式是:http://www.xxx.cn/addons/pay/ 这种格式,如果你不使用插件服务端,请自己实现 api地址+api/settingapi地址+api/notify这两个接口,两个接口必须返回

    {"code":1, "data":null, "msg":"提示信息"}
    感谢以下的小伙的赞赏支持
  • semo86 3月前
    感谢TA
    0 引用 23

    谢了,好我大概有点明白了,我先试下,后面有什么不懂的在问你。

  • semo86 3月前
    感谢TA
    0 引用 24

    楼主我现在这想要在app这里多设置一个参数来区别是哪个账号收的钱,能帮忙改下吗?

  • rrrxxx 3月前
    感谢TA
    0 引用 25

    小米测试,收不到消息。没有其他提示。

  • rrrxxx 3月前
    感谢TA
    0 引用 26

    @Karson vivo手机测试,也收不到支付消息。怎么排查问题啊?提示了配置成功,就是收不到消息。

  • 小妖多情 3月前
    感谢TA
    0 引用 27

    @Karson
    image.png
    image.png
    我也出现了通知失败的情况,前后都没有空格?怎么解?

  • 小妖多情 3月前
    感谢TA
    0 引用 28

    image.png
    知道问题了

  • 小妖多情 3月前
    感谢TA
    0 引用 29

    有毒~image.png
    按这个解决了

  • 时运通网络 3月前
    感谢TA
    0 引用 30

    Fatal error: Class 'thinkaddonsController' not found in D:phpStudyPHPTutorialWWWzzzcontrollerIndex.php on line 17

  • 时运通网络 3月前
    感谢TA
    0 引用 31

    入口文件是哪一个啊

  • Karson 楼主 打赏 3月前
    感谢TA
    0 引用 32

    @时运通网络 请在下载页面https://www.fastadmin.net/download.html 先安装FastAdmin完整版,再在后台插件管理安装免签插件

  • farcall 3月前
    感谢TA
    0 引用 33

    apk 只有一个配置界面吗

  • 时运通网络 3月前
    感谢TA
    0 引用 34

    下单,查询,回调有demo参考一下吗

  • 时运通网络 3月前
    感谢TA
    0 引用 35

    测试支付的时候支付成功但是没有回调,微信支付宝都测试了,app是不是没有监控到数据啊

  • xzh108 3月前
    感谢TA
    0 引用 36

    app 安卓端,API地址是填写哪个?这个吗?
    http://www.yoursite.com/addons/pay/api/create

  • Karson 楼主 打赏 3月前
    感谢TA
    0 引用 37

    @时运通网络 在插件压缩包中有php-demo.zip,即是开发示例。

  • Karson 楼主 打赏 3月前
    感谢TA
    0 引用 38

    @xzh108 请查看下视频教程:https://www.fastadmin.net/video/paydoc.html ,需要把www.yoursite.com替换成你自己的域名或IP哦。

  • 太平 3月前
    感谢TA
    0 引用 39

    手机App能返回哪些字段?能不能有一个下单和后台处理支付返回结果的教程?

  • Karson 楼主 打赏 3月前
    感谢TA
    0 引用 40
    太平 手机App能返回哪些字段?能不能有一个下单和后台处理支付返回结果的教程?

    @太平 在插件压缩包中有个php-demo.zip,其中就是整个发起支付和回调通知处理的示例,请参考下。

  • 太平 3月前
    感谢TA
    0 引用 41

    插件压缩包里面没有这个php-demo.zip呢?能不能发个连接地址出来。谢谢!

  • F4NNIU 打赏 3月前
    感谢TA
    0 引用 42

    请到已购买插件中下载即可。

    最后于 3月前 被F4NNIU编辑
  • F4NNIU 打赏 3月前
    感谢TA
    0 引用 43
    太平 插件压缩包里面没有这个php-demo.zip呢?能不能发个连接地址出来。谢谢!

    请 QQ 回复下我。

  • lvheyong 3月前
    感谢TA
    0 引用 44

    客户端,使用的小米6手机接收不到通知,在电脑安卓上使用夜神模拟器却可以

  • 2201261462 2月前
    感谢TA
    0 引用 45

    付款后收不到回调通知

  • xiaoyu123 2月前
    感谢TA
    0 引用 46
    rrrxxx 小米测试,收不到消息。没有其他提示。

    我也是,不知道对机型有没有什么要求,@Karson 楼主能不能给个说明。我的地址 xx.com/addons/pay/ 报错404 。
    xx.com/index.php/addons/pay/ 是可以,配置这个路径对吗

  • 马建洋 2月前
    感谢TA
    0 引用 47

    你好,请问这个md5(md5())是什么意思,用java怎么实现的

  • 马建洋 2月前
    感谢TA
    0 引用 48

    {"code":0,"msg":"签名不正确","data":"","url":"javascript:history.back(-1);","wait":3},java调用,签名不正确,能告诉我怎么弄吗

  • bing 2月前
    感谢TA
    0 引用 49
    lixiangbest 魅族和小米的安装APK后没有收到任何的通知信息啊!楼主有微信吗?我们购买了,安装apk就是收不到通知消息!

    请不要在PC端登录微信,不然手机端是没有通知消息的,也就会导致获取不到微信支付金额,从apk而无法回调,搞了一下午~ ~joy

  • xlwonder 2月前
    感谢TA
    0 引用 50

    请问,动态根据金额和备注自动生成微信个人收款二维码的源代码也有吗?

  • Karson 楼主 打赏 2月前
    感谢TA
    0 引用 51

    @xlwonder 不支持动态生成备注功能哦。

  • xlwonder 2月前
    感谢TA
    0 引用 52

    我已经下载了服务端源码,请问,哪里是php调用手机端代码获取qrcodeurl的代码?或者有没有跟手机端app通信的技术文档,我们想把服务端集成到自己的系统里面

  • Karson 楼主 打赏 2月前
    感谢TA
    0 引用 53

    @xlwonder 你的系统参考php-demo.zip中的代码接入方式即可。

  • xlwonder 2月前
    感谢TA
    0 引用 54

    php-demo.zip中的代码应该是调用php插件的服务端代码吧?我们是希望写我们自己的服务端代码直接调用手机端的APP获取二维码,这个有技术文档吗?

  • Karson 楼主 打赏 2月前
    感谢TA
    0 引用 55

    @xlwonder php-demo.zip就是PHP对接支付的错码,你JAVA的话参考即可。

  • css 2月前
    感谢TA
    0 引用 56

    @Karson 老大,我的支付后一直不通知,订单状态显示未支付,APP的配置是OK的,显示配置成功。应用权限也给了,支付后悬浮窗通知也有,但是后台订单的状态就是不动

  • css 2月前
    感谢TA
    0 引用 57
    lixiangbest 魅族和小米的安装APK后没有收到任何的通知信息啊!楼主有微信吗?我们购买了,安装apk就是收不到通知消息!

    对照的设置了,用小米note和华为的鸡子都试了,账号也换过了,接口收不到APP的通知抓包发现APP配置完接口后就没动静了,老大快查下是啥问题,配置和权限都有的。

  • php 2月前
    感谢TA
    0 引用 58

    请问我将这个插件包用在其他项目上怎么使用呢?

  • F4NNIU 打赏 2月前
    感谢TA
    0 引用 59
    php 请问我将这个插件包用在其他项目上怎么使用呢?

    你可以把这个插件当成一个接口,对接即可。
    参考 php-demo.zip。

  • php 2月前
    感谢TA
    0 引用 60

    需要自己在后台先把二维码上传到数据库吗?

  • php 2月前
    感谢TA
    0 引用 61

    不能根据订单的金额自动生成固定的二维码吗?测试了几次都是扫出二维码后需要手动填入金额

  • F4NNIU 打赏 2月前
    感谢TA
    0 引用 62
    php 不能根据订单的金额自动生成固定的二维码吗?测试了几次都是扫出二维码后需要手动填入金额

    将固定金额二维码上传上去。

  • vx5616057 1月前
    感谢TA
    0 引用 63

    群控直接批量生成大量固定金额码,附加备注订单号,做轮循也是一种解决方案

  • xqk1234 1月前
    感谢TA
    0 引用 64

    @Karson 我返回到时候 直接 echo "success" ,回调信息也是success但系统里面收到的却是通知失败。是因为什么啊?image.png

  • yoyoheju 1月前
    感谢TA
    0 引用 65

    为什么 支付成功后跳转的地址是 $returnurl\$order_id&$out_order_id&$sign ?
    format HTML,不应该就是单纯的 $returnurl 吗?

  • Karson 楼主 打赏 1月前
    感谢TA
    0 引用 66

    @xqk1234 检查是否返回了其它字符,特别检查下文件编码,不能采用utf-8 with bom的,一定是utf8编码格式

  • pope123 1月前
    感谢TA
    0 引用 67

    @F4NNIU 63楼再加个问题
    有几个几种价格的产品的话实现吗

  • yoyoheju 1月前
    感谢TA
    0 引用 68

    请问返回的数据要怎么接收呢 post 吗

  • yoyoheju 1月前
    感谢TA
    0 引用 69

    发起支付请求 我post过去 数据了 , xml format 订单也创建成功了 ,用 file_get_contents("php://input"); 收不到数据啊 @Karson 求助

  • richzhu 1月前
    感谢TA
    0 引用 70

    请问楼主考虑过xpose监听模式嘛? 感觉要靠谱好多,还可以自动补单

  • gongfuxiaoya 27天前
    感谢TA
    0 引用 71

    {"code":0,"msg":"签名不正确","data":"","url":"javascript:history.back(-1);","wait":3}
    一直报这个错误怎么回事?

    function Post($url, $data, $timeout = 30){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
        $result = curl_exec($ch);
        curl_close($ch);
        if(is_string($result) && strlen($result)){
            return $result;
        }else{
            return false;
        }
    }
    
    $price = 1;
    $out_order_id = 'xiaode'.'_'.date('ynjGis',time()); //无导0效果
    $type = 'wechat';
    $product_id = 4    ;
    $notifyurl = 'zfwlp.xxxx.cn/paymentcon/pay_callback.php';
    $returnurl = 'zfwlp.xxxx.cn';
    $extend = 'xiaode';
    $format = 'json';
    
    $sign = md5(md5($price . $out_order_id . $type . $product_id . $notifyurl . $returnurl . $extend) . $key);
    
    $data = array(
        'price'        => $price,
        'out_order_id' => $out_order_id,
        'type'         => $type,
        'product_id'   => $product_id,
        'notifyurl'    => $notifyurl,
        'returnurl'    => $returnurl,
        'extend'       => $extend,
        'sign'         => $sign,
        'format'       => $format,
    );
    
    $res = Post($api_url,$data);
    
    var_dump($res);exit;
    最后于 27天前 被Karson编辑
  • Karson 楼主 打赏 27天前
    感谢TA
    0 引用 72

    @gongfuxiaoya 请参考php-demo.zip中的代码尝试下。

  • yuanwen 11天前
    感谢TA
    0 引用 73

    能不能提供跳第三方网站直接和app对接的方法?

  • 未登录
    75
返回