微信小程序header头信息application/json处理数据php端如何接受?

2024-04-28 22:20:34 | 新橄榄网

微信小程序header头信息application/json处理数据php端如何接受?相关内容,小编在这里做了整理,希望能对大家有所帮助,关于微信小程序header头信息application/json处理数据php端如何接受?信息,一起来了解一下吧!

本文目录一览:

微信小程序header头信息application/json处理数据php端如何接受?

微信小程序header头信息application/json处理数据php端如何接受?

微信小程序中wx.request所调用域名是有严格规定的,不是随便用个url就行的,下面是官方文档的说明:

每个微信小程序需要事先设置一个通讯域名,小程序只可以跟指定的域名与进行网络通信。包括普通 HTTPS 请求(request)、上传文件(uploadFile)、下载文件(downloadFile) 和 WebSocket 通信(connectSocket)

配置流程

服务器域名请在 「小程序后台-设置-开发设置-服务器域名」 中进行配置,配置时需要注意:

域名只支持 https (request、uploadFile、downloadFile) 和 wss (connectSocket) 协议;

域名不能使用 IP 地址或 localhost;

域名必须经过 ICP 备案;

出于安全考虑,api.weixin.qq.com 不能被配置为服务器域名,相关API也不能在小程序内调用。 开发者应将 appsecret 保存到后台服务器中,通过服务器使用 appsecret 获取 accesstoken,并调用相关 API;

对于每个接口,分别可以配置最多 20 个域名。

微信小程序header头信息application/json处理数据php端如何接受?

Thinkphp5.1微信小程序支付

研究了好几天,坑也遇到了,也百度了很久现在终于做完了,给大家分享出来,

我这个也是参考别人写的。有不明白的朋友可以问我

public function unifiedorder($order_no, $openid, $total_fee, $attach, $order_id, $user_id){

// 当前时间

$time = time();

// 生成随机字符串

$nonceStr = md5($time . $openid);

// API参数

$params = [

'appid' => $this->appid,                                  //微信分配的小程序id

'attach' => $attach,                                      //附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用。

'body' => '会员卡',                                      //募捐描述

'mch_id' => $this->mchid,                        //微信支付分配的商户号

'nonce_str' => $nonceStr,                                  //随机字符串,32位以内

'notify_url' => $this->notify_url,                    //            base_url() . 'notice.php?s=/task/notify/order/wxapp_id/'.$wxapp_id, // 异步通知地址

'openid' => $openid,                                      //用户标识;trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识。

'out_trade_no' => $order_no,                              //商户账单号

'spbill_create_ip' => \request()->ip(),                    //终端IP;支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP

'total_fee' => (int)$total_fee * 100, // 价格:单位分              // 价格:单位分

'trade_type' => 'JSAPI',                                  //交易类型

];

// 生成签名

$params['sign'] = $this->makeSign($params);  //这个地方最坑,需要的是配置 1、appid和商户号必须是绑定的状态

// 请求API

$url = '

';

$result = $this->post($url, $this->toXml($params));

$prepay = $this->fromXml($result);

//添加preapay_id

$data = [

'user_id' => $user_id,

'order_id' => $order_id,

'attach' => json_encode($attach),

'prepay_id' => $prepay['prepay_id'],

];

(new AppleWxPrepay())->addInfo($data);

// 请求失败

if ($prepay['return_code'] === 'FAIL') {

return [API_CODE_NAME => 2000004, API_MSG_NAME => $prepay['return_msg']];

}

if ($prepay['result_code'] === 'FAIL') {

return [API_CODE_NAME => 2000004, API_MSG_NAME => $prepay['err_code_des']];

}

// 生成 nonce_str 供前端使用

$paySign = $this->makePaySign($params['nonce_str'], $prepay['prepay_id'], $time);

return [

'prepay_id' => $prepay['prepay_id'],

'nonceStr' => $nonceStr,

'timeStamp' => (string)$time,

'paySign' => $paySign

];

}

/**

* 生成签名

* @param $values

* @return string 本函数不覆盖sign成员变量,如要设置签名需要调用SetSign方法赋值

*/

private function makeSign($values)

{

//签名步骤一:按字典序排序参数

ksort($values);

$string = $this->toUrlParams($values);

//签名步骤二:在string后加入KEY

$string = $string . '&key=' . $this->apikey;

//签名步骤三:MD5加密

$string = md5($string);

//签名步骤四:所有字符转为大写

$result = strtoupper($string);

return $result;

}

/**

* 格式化参数格式化成url参数

* @param $values

* @return string

*/

private function toUrlParams($values)

{

$buff = '';

foreach ($values as $k => $v) {

if ($k != 'sign' && $v != '' && !is_array($v)) {

$buff .= $k . '=' . $v . '&';

}

}

return trim($buff, '&');

}

/**

* 模拟POST请求

* @param $url

* @param array $data

* @param bool $useCert

* @param array $sslCert

* @return mixed

*/

public function post($url, $data = [], $useCert = false, $sslCert = [])

{

$header = [

'Content-type: application/json; charset=UTF8'

];

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

curl_setopt($curl, CURLOPT_HEADER, false);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($curl, CURLOPT_POST, TRUE);

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

if ($useCert == true) {

// 设置证书:cert 与 key 分别属于两个.pem文件

curl_setopt($curl, CURLOPT_SSLCERTTYPE, 'PEM');

curl_setopt($curl, CURLOPT_SSLCERT, $sslCert['certPem']);

curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM');

curl_setopt($curl, CURLOPT_SSLKEY, $sslCert['keyPem']);

}

$result = curl_exec($curl);

curl_close($curl);

return $result;

}

/**

* 输出xml字符

* @param $values

* @return bool|string

*/

private function toXml($values)

{

if (!is_array($values) || count($values) <= 0) {

return false;

}

$xml = "";

foreach ($values as $key => $val) {

if (is_numeric($val)) {

$xml .= "<" . $key . ">" . $val . "";

} else {

$xml .= "<" . $key . ">";

}

}

$xml .= "";

return $xml;

}

/**

* 将xml转为array

* @param $xml

* @return mixed

*/

private function fromXml($xml)

{

// 禁止引用外部xml实体

libxml_disable_entity_loader(true);

return json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);

}

/**

* 生成paySign

* @param $nonceStr

* @param $prepay_id

* @param $timeStamp

* @return string

*/

private function makePaySign($nonceStr, $prepay_id, $timeStamp)

{

$data = [

'appId' => $this->appid,

'nonceStr' => $nonceStr,

'package' => 'prepay_id=' . $prepay_id,

'signType' => 'MD5',

'timeStamp' => $timeStamp,

];

// 签名步骤一:按字典序排序参数

ksort($data);

$string = $this->toUrlParams($data);

// 签名步骤二:在string后加入KEY

$string = $string . '&key=' . $this->apikey;

// 签名步骤三:MD5加密

$string = md5($string);

// 签名步骤四:所有字符转为大写

$result = strtoupper($string);

return $result;

}

/*********************************微信回调**********************/

public function getNotify()

{

if (!$xml = file_get_contents('php://input')) {

$this->returnCode(50000001, 'Not found DATA');

}

// 将服务器返回的XML数据转化为数组

$data = $this->fromXml($xml);

$payLog = new ApplePayLog();

// 记录日志

$payLog->addInfo(['content'=>json_encode($xml)]);

$payLog->addInfo(['content'=>json_encode($data)]);

// 实例化账单模型

$OrderModel = new AppleOrder();

// 账单信息

$orderInfo = $OrderModel->getInfo(['id'=>$data['attach']],'*');

if (empty($orderInfo)) {

$this->returnCode(50000001, '账单不存在');

}

if($orderInfo['pay_status'] != 1 || !empty($orderInfo['pay_time'])){

$this->returnCode(50000001,'订单已支付,请勿再次支付');

}

// 保存微信服务器返回的签名sign

$dataSign = $data['sign'];

$return_code = $data['return_code'];

$result_code = $data['result_code'];

$data['body'] = '会员卡';

$data['spbill_create_ip'] = \request()->ip();

$data['notify_url'] = $this->notify_url;

// sign 与 s 参数 不参与签名算法

unset($data['sign']);

unset($data['transaction_id']);

unset($data['coupon_id']);

unset($data['coupon_type']);

unset($data['coupon_count']);

unset($data['coupon_fee']);

unset($data['time_end']);

unset($data['return_code']);

unset($data['result_code']);

unset($data['is_subscribe']);

unset($data['fee_type']);

unset($data['bank_type']);

unset($data['bank_type']);

// 生成签名

$sign = $this->makeSign($data);

// 判断签名是否正确  判断支付状态

if (($sign === $dataSign) && ($return_code == 'SUCCESS') && ($result_code == 'SUCCESS')) {

$OrderModel->startTrans();新橄榄网

try {

// 账单支付成功业务处理

$appleOrderInfo = $OrderModel->where(['id'=>$orderInfo['id']])->lock(true)->find();

$result = $appleOrderInfo->addInfo(['pay_status'=>2,'pay_time'=>time()],['id'=>$orderInfo['id']]);

if(!$result){

$OrderModel->rollback();

$this->returnCode(5000003, '修改订单失败,失败原因:'.$OrderModel->getError());

}

$appleUserModel = new AppleUser();

$appleUserInfo =  $appleUserModel->where(['openid'=>$orderInfo['openid']])->lock(true)->find();

$appleUser = $appleUserInfo->where(['openid'=>$orderInfo['openid']])->setInc('moxibustion',$orderInfo['moxibustion']);

if(!$appleUser){

$OrderModel->rollback();

$this->returnCode(5000003, '添加会员针灸次数失败,失败原因:'.$appleUserModel->getError());

}

}catch (\Exception $exception){

$OrderModel->rollback();

$this->returnCode(5000003, '操作失败,失败原因:'.$exception->getMessage());

}

$OrderModel->commit();

// 返回状态

die(json(['code'=>0,'支付成功']));

}

// 返回状态

$this->returnCode(2000003, '签名失败');

}

微信小程序header头信息application/json处理数据php端如何接受?

微信小程序,后端用php写完接口,怎么把数据给前端,要带什么参数

1、首先在 index.js中想写逻辑代码。

2、其中page里面的data里面是前台展示时的一些数据,而onload里面是调用的接口。

3、调用的方式为get调用,返回的数据存在res里面。

4、返回的数据,而data中就是需要的数据。

5、data:一个入参method:请求方式,如果是POST请求必须按上面写,默认是get请求,不用处理。complete:页面请求完成后的方法,通过that.setData将数据传递给WXML页面。success:页面加载成功后的执行方法。

以上就是微信小程序header头信息application/json处理数据php端如何接受?全部内容了,了解更多相关信息,关注新橄榄网。

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“微信小程序header头信息application/json处理数据php端如何接受?”相关推荐
微信小程序,后端用php写完接口,怎么把数据给前端,要带什么参数
微信小程序,后端用php写完接口,怎么把数据给前端,要带什么参数

微信小程序,后端用php写完接口,怎么把数据给前端,要带什么参数1、首先在index.js中想写逻辑代码。2、其中page里面的data里面是前台展示时的一些数据,而onload里面是调用的接口。3、调用的方式为get调用,返回的数据存在res里面。4、返回的数据,而data中就是需要的数据。5、data:一个入参method:请求方式,如果是POST请求必须按上面

2023-10-23 10:17:08
微信小程序 如何解析Bmob返回的JSON数据
微信小程序 如何解析Bmob返回的JSON数据

自己开发一款APP需要多长时间?自己开发一款APP需要多长时间如今,不少企业都想拥有属于自己企业或产品的手机APP,但其中最困扰企业主的问题就是:开发一款手机APP到底需要多少钱?简单点来说,要视手机APP的需求及质量而言,价位一般在几千到十几万左右,更高端的价格更高。今天,我们就来详细分析一下这个问题,请继续往下看吧。一、APP开发款式分为固定款和定制款,两者的价

2023-11-19 08:37:14
微信小程序云数据库如何导入 Excel 数据?
微信小程序云数据库如何导入 Excel 数据?

微信小程序云开发详细教程?开发者可以使用云开发开发微信小程序、小游戏,无需搭建服务器,即可使用云端能力。(云端说白了也就是服务端啦,说的那么高大上,对新手朋友可不太友好。)小程序·云开发提供了三个基础能力:数据库、存储和云函数。数据库:json数据库,就理解为往里面存的是json,取出来的也是json。存储:就是把你的图片、音频和视频之类的资源文件,存储到里面,帮你生成链

2023-11-28 10:04:32
微信小程序如何违规处理?
微信小程序如何违规处理?

小程序被判违规?如果你的微信小程序被认定为违规,可能会面临一些处理措施,以下是一些处理违规小程序的常见方法:1.了解违规原因:联系微信小程序客服团队,了解具体的违规原因。他们会向你解释你的小程序违反了哪些规定,并提供相关指导。2.修改违规内容:根据微信小程序客服团队提供的违规原因,对违规内容进行修改或删除。确保你的小程序符合微信小程序的开发规范和规定。3.提交申诉:如果你

2023-10-21 14:52:44
微信小程序的数据如何清空?
微信小程序的数据如何清空?

微信小程序的数据如何清空?准备工具:微信小程序、微信小程序开发工具、截图工具、WPS、笔记本电脑具体步骤:1、双击打开微信小程序开发工具,创建一个微信小程序项目。2、在pages文件夹下,新建一个模块文件夹,并在该文件夹下新建一个wxml文件3、在界面中,插入view和form元素,form元素中添加一个输入框和按钮4、接着在输入框中,添加typ

2023-10-23 20:02:43
如何抓取微信小程序的数据
如何抓取微信小程序的数据

如何抓取微信小程序的数据推荐使用小程序数据助手,小程序数据助手”是微信公众平台发布的官方小程序,支持小程序相关的开发和运营人员查看自身小程序的运营数据。那么小程序数据助手的具体功能有哪些?在哪里?怎么使用?一起来看吧。1、小程序数据助手的功能“小程序数据助手”当前功能模块包括数据概况、访问基础分析(用户趋势、来源分析、留存分析、时长分析、页面详情)、实时统计和用户画像

2023-11-09 22:52:11
如何查微信小程序日活数据
如何查微信小程序日活数据

如何查微信小程序日活数据使用小程序数据助手查看。小程序数据助手当前功能模块包括数据概况、访问基础分析(用户趋势、来源分析、留存分析、时长分析、页面详情)、实时统计和用户画像(年龄性别、省份城市、终端机型)等常规分析。微信小程序是一种新的开放能力,可以在微信内被便捷地获取和传播,同时具有出色的使用体验。商城小程序功能有哪些近几年来,电商普及度越来越高,极大的方便了我们的生活

2023-10-22 16:45:56
微信小程序怎么获取Sql数据库的数据?
微信小程序怎么获取Sql数据库的数据?

微信小程序怎么获取Sql数据库的数据?小程序是无法直接连数据库,需要一个服务端web应用程序,提供https接口让小程序调用。SQL是StructuredQueryLanguage(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出"做什么"的命令,"怎么做"是不用使用者考虑的。SQL功能强大、简单易学、使用方便

2023-12-08 10:32:32