订单查询接口


用户发起支付后,可通过本接口发起订单查询来确认订单状态

请求地址:https://payjs.cn/api/check

请求参数:

字段名称 字段类型 必填参数 说明
payjs_order_id string(32) Y PAYJS 平台订单号
sign string(32) Y 数据签名 详见签名算法

请求返回:

字段名称 字段类型 必填参数 说明
return_code int Y 1:请求成功 0:请求失败
mchid string(32) Y PAYJS 平台商户号
out_trade_no string(32) Y 用户端订单号
payjs_order_id string(32) Y PAYJS 订单号
transaction_id string(32) N 微信显示订单号
status int(1) Y 0:未支付,1:支付成功
openid string(32) N 用户 OPENID
total_fee int(16) N 订单金额
paid_time string(32) N 订单支付时间
attach string(127) N 用户自定义数据
sign string(32) Y 数据签名 详见签名算法

提示:请做好用户端订单号的唯一性处理。PAYJS 在适当时机会开放通过自身订单号查询订单详情


此接口用户订单状态的辅助查询,请勿直接使用此接口做订单状态的高频轮询,调用频率过高可能会导致IP进入黑名单

正确的业务逻辑:商户侧服务器通过接收异步通知后更新自己订单状态,用户前端轮询应放在商户侧订单状态

特别提醒:一个支付成功的订单,如果接收到check查询,代表已经成功送达。此时如果异步通知正在执行,则会中断执行


订单查询演示代码:

<?php
/**
 * 引入 payjs.class.php
 * https://github.com/payjs-cn/phpsdk
 */
include("payjs.class.php");

$mchid = '123456';
$key = 'xxxxxx';

$data = [
    "payjs_order_id" => '123123123',
];

$payjs = new Payjs($mchid, $key);
$result = $payjs->check($data);

print_r($result);

php

<?php
/**
 * 引入 payjs.class.php
 * https://github.com/payjs-cn/phpsdk
 */
include("payjs.class.php");

$mchid = '123456';
$key = 'xxxxxx';

$data = [
    "payjs_order_id" => '123123123',
];

$payjs = new Payjs($mchid, $key);
$result = $payjs->check($data);

print_r($result);

python

# !/usr/bin/env Python3
# -*- coding: utf-8 -*-

import requests
import hashlib
from urllib.parse import urlencode,unquote
'''
订单查询接口
'''
payjs_order_id = ''     # PAYJS 平台订单号
key = ''                # 填写通信密钥

order = {
    'payjs_order_id'    : payjs_order_id
}

# 构造签名函数
def sign(attributes,key):
    attributes_new = {k: attributes[k] for k in sorted(attributes.keys())}
    return hashlib.md5((unquote(urlencode(attributes_new))+'&key='+key)
        .encode(encoding='utf-8')).hexdigest().upper()

order['sign'] = sign(order,key)
request_url = "https://payjs.cn/api/check"
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=order,headers=headers)
if response:
    print(response.json())

go

package main

import (
    "fmt"
    "strings"
    "net/http"
    "net/url"
    "io/ioutil"
)

func main(){
    data := url.Values{"payjs_order_id":{"XXX"}, "sign":{"XXX"}}
    data2 := strings.NewReader(data.Encode())
    resp, err := http.Post("https://payjs.cn/api/check", "application/x-www-form-urlencoded", data2)
    if err != nil {
        fmt.Println(err)
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        // handle error
    }

    fmt.Println(string(body))
}

powered by Gitbook最后更新: 2020-07-28