全部
常见问题
产品动态
精选推荐

【一文读懂】微信订单支付流程详解,附实战代码!

管理 管理 编辑 删除

微信订单支付流程主要分为以下几个步骤:

  1. 商户服务器向微信支付提交统一下单请求,获取到预支付交易会话标识prepay_id。
  2. 商户服务器生成客户端调起支付所需的参数(如签名sign、时间戳timestamp等),并将prepay_id等信息返回给客户端。
  3. 客户端通过调用微信支付SDK发起支付请求,并传入上一步中生成的参数。
  4. 微信支付处理支付请求,用户输入密码完成支付操作。
  5. 微信支付将支付结果通知商户服务器,商户服务器对支付结果进行处理。

下面是一个简化版的代码示例,仅供参考:

统一下单API请求

$url = 'https://api.mch.weixin.qq.com/pay/unifiedorder'; //微信支付统一下单API接口
$params = [
    'appid' => 'your_appid', //微信支付分配的公众账号ID(企业号corpid即为此appId)
    'mch_id' => 'your_mchid', //微信支付分配的商户号
    'nonce_str' => uniqid(), //随机字符串,不长于32位
    'body' => 'Your Product Name', //商品描述
    'out_trade_no' => 'Your Order Number', //商户系统内部的订单号
    'total_fee' => 100, //订单总金额,单位为分
    'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], //APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP
    'notify_url' => 'Your Notify Url', //接收微信支付异步通知回调地址
    'trade_type' => 'JSAPI', //交易类型,取值如下:JSAPI,NATIVE,APP等
    'openid' => 'Your User Openid' //用户在商户appid下的唯一标识
];
$params['sign'] = generate_sign($params, 'your_pay_key'); //生成签名
$result = post_request($url, array_to_xml($params)); //发送POST请求
$response = xml_to_array($result); //处理API返回结果
if ($response['return_code'] == 'SUCCESS' && $response['result_code'] == 'SUCCESS') {
    $prepay_id = $response['prepay_id']; //获取预支付交易会话标识prepay_id
}

生成客户端调起支付所需的参数

$timestamp = time();
$noncestr = uniqid();
$params = [
    'appId' => 'your_appid',
    'timeStamp' => strval($timestamp),
    'nonceStr' => $noncestr,
    'package' => 'prepay_id=' . $prepay_id,
    'signType' => 'MD5'
];
$params['paySign'] = generate_sign($params, 'your_pay_key'); //生成签名

客户端发起支付请求

WeixinJSBridge.invoke('getBrandWCPayRequest', <?php echo json_encode($params); ?>, function(res){
    if (res.err_msg == "get_brand_wcpay_request:ok") {
        //支付成功
    } else {
        //支付失败
    }
});

处理支付结果

$data = file_get_contents('php://input'); //获取POST请求数据
$response = xml_to_array($data); //处理微信支付回调数据
if ($response['return_code'] == 'SUCCESS' && $response['result_code'] == 'SUCCESS') {
    //验证签名,确保数据安全
    if (verify_sign($response, 'your_pay_key')) {
        $out_trade_no = $response['out_trade_no']; //商户订单号
        $transaction_id = $response['transaction_id']; //微信支付订单号
        $total_fee = $response['total_fee']; //订单总金额,单位为分
        //更新订单状态等相关操作
    }
}

以上代码仅供参考,实际应用中还需根据具体情况进行修改和调整。


请登录后查看

CRMEB-慕白寒窗雪 最后编辑于2023-12-09 14:29:05

快捷回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
回复从新到旧

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest==1? '取消推荐': '推荐'}}
{{item.floor}}#
{{item.user_info.title}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

作者 管理员 企业

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}   {{itemc.ip_address}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
回复
回复
1203
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

CRMEB-慕白寒窗雪 作者
社区运营专员---高冷のBoy | 呆萌のGirl

回答

2304

发布

1777

经验

45564

快速安全登录

使用微信扫码登录
{{item.label}} {{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
加精
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 开源下载 CRMEB官方论坛 帮助文档
返回顶部 返回顶部
CRMEB客服