这是代码的问题吗?关于微信支付

查看:72
本文介绍了这是代码的问题吗?关于微信支付的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

GET请求预创建订单接口提示只能用POST请求,ok。用POST请求代码如下:

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => 'https://api.mch.weixin.qq.com/pay/unifiedorder',
    CURLOPT_POST=>true,
    CURLOPT_POSTFIELDS=>'',// 不提交任何内容
    CURLOPT_RETURNTRANSFER=>1,
]);
$exec = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_dump($exec);
// 输出
// XML 错误提示等

但是只要postfields是一个合法的XML格式。。比如

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => 'https://api.mch.weixin.qq.com/pay/unifiedorder',
    CURLOPT_POST=>true,
    CURLOPT_POSTFIELDS=>'<xml></xml>',
    CURLOPT_RETURNTRANSFER=>1,
]);
$exec = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_dump($exec);
// 服务端输出:
// string(0) ""
// HTTP Response Headers:
// HTTP CODE 200;

为啥?发真实订单数据过去也没用。。。真实订单XML内容如下:

<xml><trade_type><![CDATA[JSAPI]]></trade_type><body><![CDATA[支付订单]]></body><out_trade_no>1612280017071482855427</out_trade_no><total_fee>2200</total_fee><notify_url><![CDATA[notify]]></notify_url><openid><![CDATA[on21bv9MRa3GRajyChHnWvw1o0VY]]></openid><attach><![CDATA[PAPA_35_2200]]></attach><spbill_create_ip><![CDATA[127.0.0.1]]></spbill_create_ip><appid><![CDATA[wxfeef8b0bfbd66098]]></appid><nonce_str><![CDATA[58629403f0d52]]></nonce_str><sign><![CDATA[548C419C5D3661D597F5816E59333D84]]></sign></xml>

解决方案

curl_setopt_array($ch, [
    CURLOPT_URL => 'https://api.mch.weixin.qq.com/pay/unifiedorder',
    CURLOPT_POST=>true,
    CURLOPT_POSTFIELDS=>'',// 不提交任何内容
    CURLOPT_RETURNTRANSFER=>1,
    CURLOPT_HTTPHEADER=>['Content-Type: application/xml']
]);

这篇关于这是代码的问题吗?关于微信支付的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆