前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序 wx.requestPayment({}) 唤起微信支付

微信小程序 wx.requestPayment({}) 唤起微信支付

作者头像
很酷的站长
发布2023-01-16 09:09:16
2.8K0
发布2023-01-16 09:09:16
举报
文章被收录于专栏:站长的编程笔记
1. 登录商户平台,将商户和小程序进行关联

产品中心 中的 APPID账号管理 中,添加关联的小程序 appid

2. 小程序调起支付API

小程序调起支付API:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=5

小程序API开发文档:https://developers.weixin.qq.com/miniprogram/dev/api/api-pay.html#wxrequestpaymentobject

3. 封装类

代码语言:javascript
复制
<?php
class Wechat
{
// 公众号的或者小程序支付参数
private $appId = "wx5117bexxxxxx";
private $appSecret = "136ae3xxxxxxx";
// 微信商户号
private $mch_id = "15xxxx";
private $mch_key = "xxxasdfghjkxxxxxx";
// 回调地址
public $notify_url = '';
// 退款回掉地址
public $refund_notify_url = '';
private $request;
private $nonce_str;
public function __construct()
{
$this->request = request();
$this->notify_url = 'notice.php';
$this->refund_notify_url = 'refund.php';
$this->nonce_str = md5(date('YmdHis') . time() . rand(1000, 9999));
}
//小程序登录
/**
* @param $code 获取微信支付的登录code
* @return mixed
*/
public function wxLogin($code)
{
$url = "https://api.weixin.qq.com/sns/jscode2session?appid=" . $this->appId . "&secret=" . $this->appSecret . "&js_code=" . $code . "&grant_type=authorization_code";
return json_decode($this->execute($url), true);
}
/**
* @param $out_trade_no 微信支付唯一订单
* @param $openid 微信支付用户的openid
* @param $price 订单支付的价格,(单位,元)
* @param string $desc 订单描述
* @return array|mixed 组装支付参数
*/
public function getPayParameter($out_trade_no, $openid, $price, $desc = '')
{
header("Content-type:text/html;charset=utf-8"); //此处进行字符集初始化,
$data = [
'appid' => $this->appId,
'body' => $desc,
'mch_id' => $this->mch_id,
'nonce_str' => $this->nonce_str,// 随机字符串
'notify_url' => $this->notify_url,//异步回调地址
'openid' => $openid,//用户登录时获取的code中含有的值
'out_trade_no' => $out_trade_no,//商家订单号
'spbill_create_ip' => $this->get_real_ip(),//APP和网页支付提交用户端ip
'total_fee' => $price * 100,//订单总额,单位:分
'attach' => 'order',//确定是哪个商家进行的支付
'trade_type' => 'JSAPI'//交易类型
];
//将数组转化为Xml
$data['sign'] = $this->makeSign($data);
$abc_xml = $this->arrayToXml($data);
//统一下单接口prepay_id
$url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
$xml = $this->execute($url, $abc_xml, 1);
//将XMl转化为数组
$info = $this->xml2array($xml);
if (!isset($info['prepay_id'])) {
return $info;
}
$params = array(
'appId' => $this->appId,
'nonceStr' => $data['nonce_str'],
'package' => 'prepay_id=' . $info['prepay_id'],
'signType' => 'MD5',
'timeStamp' => '' . time(),
);
$_info['paySign'] = $this->makeSign($params);
$_info['timeStamp'] = "" . $params['timeStamp'];
$_info['nonceStr'] = $params['nonceStr'];
$_info['package'] = $params['package'];
$_info['signType'] = $params['signType'];
$_info['notify_url'] = $this->notify_url;
// 请求成功后进行返回数据信息
if ($info['return_code'] == 'SUCCESS' || $info['result_code'] == 'SUCCESS') {
return $_info;
} else {
return [];
}
}
/**
* @param $openid 支付的用户的openid
* @return mixed
*/
public function userInfo($openid)
{
$token = $this->getWxAccessToken();
$url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" . $token . "&openid=$openid&lang=zh_CN";
return json_decode($this->execute($url), true);
}
//获取微信的token
public function getWxAccessToken()
{
$key = $this->appId . 'miniProgram_access_token';
$accessToken = <收藏 | 0点赞 | 0打赏
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 登录商户平台,将商户和小程序进行关联
  • 2. 小程序调起支付API
  • 3. 封装类
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档