微信小程序接入帝国CMS7.2开发支付功能:只需要4个代码
/*支付*/
payVip: function (res) {
var $data = res .currentTarget.dataset ;
console.log($data.money)
global.paymoney = $data.money
wx.request({
url: '***payjoinfee.ph //改成你自己的链接
- 到数据:{
payment: global.paymoney,
openid: wx.getStorageSync('openid')
},
method: 'GET',
success: function ( res ) {
//console.log(global.openid)
//console.log(res.data);
wx.requestPayment({
' 'timeSt' : res. data.timeStamp ,
'nonceStr': res.data.nonceStr,
'package': res.data.package,
'signType': 'MD5',pa : res.data.paySign ,
'success' : function (res) {
//console.log('success');
wx.showToast({
title: '支付成功' ,
icon: '成功',
持续时间: 3000
});
wx.request({
url: getApp().globalData.URL + '//api/ex /index.php?m =user&c =ktvip',
数据:{
用户名:global.userid,
群组ID:$data.id,
用户日:$data.vipday
,
method:'GET ',
成功:函数 ( res ) {
wx.setStorageSync("groupid", $data.id);
global.groupid = wx.getStorageSync("groupid");
wx.showToast({
title: '激活成功',
icon: '成功',
持续时间: 2000,
mask: true
}),
setTimeout(function () {
wx.switchTab({.'.' . ./../pages/index/index'
})
}, 3000)
}
})
},
's) {
'失败' console.log(res);
},
'完整': 函数 (res) {
console.log('完整');
}
});›
}); },
失败:函数 (res) {
console.log(res.data)
}
});
}
1。 payjoinfee.php
包含'weixinpay.php';
$appid='APPIDf';
$openid=$_GET['openid'];'id= $商户ID ';
$key='交易者密钥';
$out_trade_no = $mch_id. time();
$total_ payment = $_GET[' payment'];
if(empty($total_ payment)) //存款
{
$body = "充值存款";
$total_ payment = floatval(99*100);
}
else {
$body = "负载平衡";
$total_ payment = floatval($total_ payment*100);
$weixinpay = new WeixinPay($appid,$openid,$mch_id,$key,$out_trade_no,$body,$total_ payment);
$return=$weixinpay->pay();
echo json_encode($tur_ncode) );
受保护 $appid;
受保护 $mch_id;
受保护 $key;
受保护 $open;
受保护 $out_trade_no;
受保护 $body;
函数 __construct ($appid, $open, $mch_id, $key,$out_trade_no,$body,$total_ payment) {
$this->appid = $appid;
$this->open = $openid;
$this->mch_id = $mch_id;
$this->key = $key;
$this->out_trade_no = $out_trade_no;
$this->body = $body;
$this->total_ payment = $total_ payment;
}
public function pay() {
//组合订阅接口
$return = $this->weixinapp(); return $ return;
}
//统一下单接口
private function Unifiedorder() {
$url = 'https://api.mch.weixin.qq.com/pay/unifiedorder ';
$参数=数组(
'appid' => $this->appid, //小程序ID
'mch_id' => $this->mch_id, //商户编号
'nonce_str' => $this->createNoncestr() , //随机字符串
// 'body' => 'test', //产品描述
'body' => $this->body,
'out_trade_no'=> $this->out_trade_no , //交易者订单号
'total_fee' => $this->total_fee, //总金额划分为单位
'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], //终端IP notification_url' => '***notify.php', //通知地址保证外网正常访问
'openid' => $this->openid, //用户ID
'trade_type' => ' JSAPI' //交易类型
);
//组合订单签名
$parameters['sign'] = $this->getSign($parameters);
$xmlData = $this- >arrayToXml( $parameters);
$return = $this->xmlToArray($this->postXmlCurl($xmlData, $url, 60));
return $return;
} } 静态function postXmlCurl($xml, $url, $second = 30)
{
$ch = curl_init();
//设置超时
curl_setopt($ch, $secont_TIME);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //严格验证
//设置头部
curl_setopt($ch, CURLOPT_HEADER, FALSE);
//要求结果为字符串并打印到屏幕上
($curl_set CURLOPT_RETURNTRANSFER , TRUE);
//消息发送方法
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $l❀❀top❀t.URL); T_CONNECTTIMEOUT, 20);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);
set_time_limit(0); //执行curl
$data = curl_exec($ch); // 结果
if ($data) {
curl_close($ch);
return $data;
} else {
$error = curl_errno($ch);
($curl) ch);
throw new WxPayException("curl error, error code: $error");
}
}
//将表转换为 xml
private function arrayToXml($
$xml = "";
foreach ($arr as $key => $val) {
if (is_array($val)) {
$xml .= "" .arrayToXml($val) ."";
} else {
$xml .= "";
}
}
$xml .= " ";
return $xml;
}
//将xml转换为数组私有函数xmlToArray ($xml) {
//禁用引用外部xml实体
libxml_disable_entity_loader(true) ;
$xmlstring = LI element,NOxml_ML string (LEX'imp);
$val = json_decode(json_encode($xmlstring), true);
return $val;
}
//微信小程序接口
private function weixinapp() {❝♶ // ♶ $unifiedorder = $this->unifiedorder();
//print_r($unifiedorder);
$parameters = array(
'appId' => $this->appid, //Mini -程序 ID
'timestamp' => '' . time() . '', //时间戳
'nonceStr' => $this->createNoncestr(), //随机字符串
'package' = > ' prepay_id=' . $unifiedorder['prepay_id'], //数据包
'signType' = > 'MD5'//签名方式
);
//签名
$yparametersign ' ] = $this->getSign($parameters);
return $parameters;
}
//功能:生成随机字符串,最多32位
私有函数createNoncestr($length = 32) {
$chars = "abcdefghijklmnopqrstuvwxyz0123456789";
$str = "";
for ($i = 0)th; $i $v) {
$Parameters[$ k] = $v;
}
//签名步骤1:按字典顺序对参数进行排序
ksort($Parameters);
$String = $this->formatBizQueryParaMap($, / 签名步骤, /false);二:在字符串 $String = $String 之后添加 KEY
。 “&键=”。 $this->key;
//签名第三步:MD5加密
$String = md5($String ; ,签名过程必须使用
私有函数formatBizQueryParaMap($paraMap, $urlencode) {
$buff = "";
ksort($paraMap);
foreach ($paraMap as $k => $v) {
if ($urlencode) {
$v = urlencode ( $v );
}
$buff .= $k . "=" . $v . "&";
}
$reqPar;
if (strlen($buff) > 0) {
$reqPar = substr($buff, 0, strlen($buff) - 1);
}
return $reqPar;
}
}
3,notify.php
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。