php 微信支付简单示例

要使用PHP与微信支付API进行集成,您需要执行以下步骤,包括生成预支付订单、生成支付二维码、处理用户支付通知等。以下是一个简化的示例代码,用于生成微信支付二维码:

<?php
// 1. 设置必要的参数
$appId = 'YOUR_APP_ID'; // 微信公众号或小程序的App ID
$mchId = 'YOUR_MCH_ID'; // 微信支付商户号
$key = 'YOUR_API_KEY'; // 微信支付API密钥
$outTradeNo = 'YOUR_ORDER_NUMBER'; // 订单号
$totalFee = 100; // 订单金额(单位:分)
$notifyUrl = 'YOUR_NOTIFY_URL'; // 异步通知URL

// 2. 构建预支付订单参数
$prepayData = [
    'appid' => $appId,
    'mch_id' => $mchId,
    'nonce_str' => uniqid(),
    'body' => 'Your Order Description', // 订单描述
    'out_trade_no' => $outTradeNo,
    'total_fee' => $totalFee,
    'spbill_create_ip' => $_SERVER['REMOTE_ADDR'],
    'notify_url' => $notifyUrl,
    'trade_type' => 'NATIVE', // 扫码支付
];

// 3. 生成签名
$prepayData['sign'] = generateSignature($prepayData, $key);

// 4. 将参数转换为XML格式
$xmlData = arrayToXml($prepayData);

// 5. 发送HTTP请求,获取预支付订单信息
$prepayOrderResult = sendPostRequest('https://api.mch.weixin.qq.com/pay/unifiedorder', $xmlData);

// 6. 解析预支付订单结果
$prepayOrderData = xmlToArray($prepayOrderResult);

// 7. 生成支付二维码
$qrCodeUrl = $prepayOrderData['code_url'];

// 8. 显示支付二维码
echo '<img src="' . $qrCodeUrl . '" alt="Pay with WeChat QR Code">';

// 以下是一些辅助函数的示例,用于签名生成和HTTP请求发送

function generateSignature($data, $key) {
    ksort($data);
    $string = '';
    foreach ($data as $k => $v) {
        $string .= $k . '=' . $v . '&';
    }
    $string .= 'key=' . $key;
    return strtoupper(md5($string));
}

function arrayToXml($data) {
    $xml = '<xml>';
    foreach ($data as $key => $value) {
        $xml .= "<$key><![CDATA[$value]]></$key>";
    }
    $xml .= '</xml>';
    return $xml;
}

function xmlToArray($xml) {
    $array = [];
    $xmlObject = simplexml_load_string($xml);
    foreach ($xmlObject as $key => $value) {
        $array[$key] = (string)$value;
    }
    return $array;
}

function sendPostRequest($url, $data) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
?>

这是一个简单的示例,用于生成微信支付二维码。在实际应用中,您需要按照微信支付文档的要求进行更复杂的支付流程,包括用户支付通知的验证和订单状态的更新。此外,确保在实际应用中保护您的API密钥和敏感信息,以确保安全性。在生产环境中,建议使用微信支付SDK或库,以简化整个过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值