PHP代码示例:使用微信支付API生成预支付订单

<?php
// 微信支付相关配置
$appid = 'YOUR_APPID'; // 微信公众平台应用ID
$mch_id = 'YOUR_MCH_ID'; // 微信支付商户号
$apikey = 'YOUR_API_KEY'; // 商户API密钥

// 订单信息
$out_trade_no = 'ORDER123456789'; // 商户订单号
$total_fee = 100; // 订单总金额(单位:分)
$body = '商品描述'; // 商品描述

// 生成签名
function generateSign($params, $apikey) {
    ksort($params);
    $string = '';
    foreach ($params as $key => $value) {
        if ($key != 'sign' && $value != '') {
            $string .= $key . '=' . $value . '&';
        }
    }
    $string .= 'key=' . $apikey;
    return strtoupper(md5($string));
}

// 请求参数
$params = [
    'appid' => $appid,
    'mch_id' => $mch_id,
    'nonce_str' => md5(time()),
    'sign_type' => 'MD5',
    'body' => $body,
    'out_trade_no' => $out_trade_no,
    'total_fee' => $total_fee,
    'spbill_create_ip' => $_SERVER['REMOTE_ADDR'],
    'notify_url' => 'https://example.com/notify', // 支付结果通知URL
    'trade_type' => 'NATIVE' // 支付类型,NATIVE表示扫码支付
];

// 生成签名
$params['sign'] = generateSign($params, $apikey);

// 发起请求
function sendRequest($url, $data) {
    $xml = '<xml>';
    foreach ($data as $key => $value) {
        $xml .= "<$key>$value</$key>";
    }
    $xml .= '</xml>';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: text/xml']);

    $response = curl_exec($ch);
    curl_close($ch);

    return simplexml_load_string($response);
}

// 微信支付预支付接口
$url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
$response = sendRequest($url, $params);

// 输出结果
echo "<pre>";
print_r($response);
echo "</pre>";
?>

这个PHP脚本用于通过微信支付API生成一个预支付订单,适用于扫码支付场景。生成预支付订单是微信支付流程中的一个重要步骤,它允许商户在实际支付之前创建一个订单,并返回一个二维码链接,用户可以扫描二维码进行支付。

在使用这个脚本之前,你需要:

  1. 替换YOUR_APPID为你的微信公众平台应用ID。
  2. 替换YOUR_MCH_ID为你的微信支付商户号。
  3. 替换YOUR_API_KEY为你的商户API密钥。

generateSign函数用于生成签名,确保请求的合法性。sendRequest函数使用cURL将请求数据以XML格式发送到微信支付接口,并接收返回的结果。最后,脚本输出响应结果,便于查看和处理。

请确保在实际应用中妥善处理支付结果通知,并将notify_url设置为你处理支付结果的服务器端接口。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值