Native扫码支付(主扫)API


扫码请求步骤:

  1. 构建请求参数
  2. POST 参数到请求地址
  3. 根据返回内容展示二维码
  4. 用户支付成功后接收异步通知

请求地址:/api/native

请求参数:

字段名称 字段类型 必填参数 说明
mchid string(16) Y 商户号
total_fee int(16) Y 金额。单位:分
out_trade_no string(32) Y 用户端自主生成的订单号
type string(16) N 留空表示微信支付。支付宝交易传值:alipay
body string(32) N 订单标题
attach string(127) N 用户自定义数据,在notify的时候会原样返回
notify_url string(255) N 接收微信支付异步通知的回调地址。必须为可直接访问的URL,不能带参数、session验证、csrf验证。留空则不通知
sign string(32) Y 数据签名 详见签名算法

请求返回:

字段名称 字段类型 必填参数 说明
return_code int Y 1:请求成功,0:请求失败
status int N return_code为0时有status参数为0。本参数即将舍弃,统一到return_code,请开发者看到后尽早删除
msg string(16) N return_code为0时返回的错误消息
return_msg string(16) Y 返回消息
payjs_order_id string(16) Y 平台订单号
out_trade_no string(16) Y 用户生成的订单号原样返回
total_fee int(16) Y 金额。单位:分
qrcode string(128) Y 二维码图片地址
code_url string(64) Y 可将该参数生成二维码展示出来进行扫码支付
sign string(64) Y 数据签名 详见签名算法

扫码支付演示:

    <?php
class Payjs {

    private $url   = 'https://payjs.cn/api/native';
    private $mchid = '';          // 特写商户号
    private $key   = '';          // 填写通信密钥

    public function __construct($data=null) {
        $this->data = $data;
    }

    public function pay(){
        $data = $this->data;
        $data['mchid'] = $this->mchid;
        $data['sign'] = $this->sign($data);
        return $this->post($data, $this->url);
    }

    public function post($data, $url) {
        $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_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        $rst = curl_exec($ch);
        curl_close($ch);
        return $rst;
    }

    public function sign(array $attributes) {
        ksort($attributes);
        $sign = strtoupper(md5(urldecode(http_build_query($attributes)) . '&key=' . $this->key));
        return $sign;
    }

}

$order = [
    'body'         => 'test',       // 订单标题
    'out_trade_no' => time(),       // 订单号
    'total_fee'    => 120,          // 金额,单位:分
];

$payjs = new Payjs($order);
$rst = $payjs->pay();
print_r($rst);

?>

php

    <?php
class Payjs {

    private $url   = 'https://payjs.cn/api/native';
    private $mchid = '';          // 特写商户号
    private $key   = '';          // 填写通信密钥

    public function __construct($data=null) {
        $this->data = $data;
    }

    public function pay(){
        $data = $this->data;
        $data['mchid'] = $this->mchid;
        $data['sign'] = $this->sign($data);
        return $this->post($data, $this->url);
    }

    public function post($data, $url) {
        $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_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        $rst = curl_exec($ch);
        curl_close($ch);
        return $rst;
    }

    public function sign(array $attributes) {
        ksort($attributes);
        $sign = strtoupper(md5(urldecode(http_build_query($attributes)) . '&key=' . $this->key));
        return $sign;
    }

}

$order = [
    'body'         => 'test',       // 订单标题
    'out_trade_no' => time(),       // 订单号
    'total_fee'    => 120,          // 金额,单位:分
];

$payjs = new Payjs($order);
$rst = $payjs->pay();
print_r($rst);

?>

python

# !/usr/bin/env Python3
# -*- coding: utf-8 -*-
import requests
import time
import hashlib
from urllib.parse import urlencode,unquote
'''
扫码支付(主扫)
'''
key = ' '                  # 填写通信密钥
mchid = ' '                # 特写商户号

time = str(int(time.time()))
order = {
    'body'         : 'test',        #  订单标题
    'out_trade_no' : time,          #  订单号
    'total_fee'    : 120,           #  金额,单位:分
    'mchid' : mchid
}

# 构造签名函数
def sign(attributes):
    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)
request_url = "https://payjs.cn/api/native"
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=order,headers=headers)
if response:
    print(response.json())

results matching ""

    No results matching ""