tp5微信h5支付
TP5微信H5支付简介
随着移动支付的快速发展,微信钱包已成为许多人日常消费的主要支付方式,不仅方便快捷还安全可靠。在移动端网页购物中,H5支付成为了很多商家的首选支付方式。而微信钱包H5支付则成为了H5支付中最可信、可用的付款方式之一。
在TP5框架中,支持微信H5支付,商家需先开通微信商户并提交相关材料,然后开通H5支付功能。本文将介绍如何开通微信H5支付,并集成到TP5中进行支付。
H5支付需要的材料
为了开通微信H5支付,商家需要准备以下材料:
1. H5支付域名:该域名需授权或自行ICP备案,可用于商城或其他相关场景展示商品及服务。
2. 售卖产品/使用场景的描述:商家需要提交自己的营业范围及使用场景进行申请。
3. 售卖产品对应的官方网站域名或详情页网址:需要提供商家售卖产品的官方网站或详情页网址。
4. 微信商户:商家需要开通微信商户并上传相应的基本信息,如身份证、银行账户、营业执照等。营业执照类型为企业或个体户,小程序也可以开通微信商户。
5. 域名证书及授权书:商家需要提供一份域名证书和域名授权书。
开通微信H5支付步骤
1. 开通微信商户:本商户需上传基本信息并进行审核,审核通过后即可开通微信商户。
2. 入驻成为商户:商户需要在线提交营业执照、身份证、银行账户等基本信息,进行快速申请。
3. 查看H5支付开通状态:商户登录商户平台,在【产品中心->产品大全->我的产品->H5支付】中查看H5支付的开通状态。
4. 申请开通H5支付:点击申请开通,进入微信支付H5支付的申请开通界面进行申请。
5. 提交申请材料:商家填写H5支付域名、售卖产品/使用场景的描述、售卖产品对应官方网站或详情页网址等,同时提交域名证书和授权书等材料。
6. 审核通过后即可支持H5支付:一般申请下来的时间周期为1天的审核时间左右,审核通过后商家即可进行微信H5支付的集成和使用。
集成微信H5支付到TP5中
在商户开通微信H5支付并审核通过后,商家需要进行微信H5支付的集成。以下是使用TP5框架集成方法:
1. 在app\\common\\controller目录下创建一个Pay.php的控制器,并添加以下代码:
<?php
namespace app\\common\\controller;
use think\\Controller;
class Pay extends Controller{
public function wxpay(){
//根据微信支付文档对请求参数进行处理
$params = [
'appid' => '微信分配的appid',
'mch_id' => '商户编号',
'nonce_str' => md5(time()),//随机字符串
'body' => '商品描述',
'out_trade_no' => '商户订单号',
'total_fee' => 价格(分),
'spbill_create_ip' => '客户端IP',
'notify_url' => '异步通知地址',
'trade_type' => 'JSAPI',
'openid' => '用户openid',//Jsapi支付必须传
];
//构建签名
ksort($params);//按照字典序排序
$stringA = http_build_query($params);
$stringB = $stringA . "&key=" . '商户的支付密钥';
$sign = strtoupper(md5($stringB));//MD5加密
$params['sign'] = $sign;//签名
$paramsXml = to_xml($params);//数组转xml格式
$url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';//下单接口
$result = curl($url, $paramsXml);//发送http请求
$response = xml_to_array($result);//xml转为数组格式
//获取prepay_id并返回
$prepay_id = $response['prepay_id'];
return $prepay_id;
}
}
2. 在app\\common\\function.php文件中添加以下代码:
function curl($url, $data = null)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data))
{
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
function to_xml($array)
{
$xml = "";
foreach ($array as $key => $val)
{
if (is_numeric($val))
{
$xml = $xml . "" . $val . "" . $key . ">";
}
else
{
$xml = $xml . "" . $key . ">";
}
}
$xml = $xml . "";
return $xml;
}
function xml_to_array($xml)
{
$dom = new \\DOMDocument();
$dom->loadXML($xml);
$root = $dom->documentElement;
$output = [];
foreach ($root->childNodes as $node)
{
if ($node->nodeType == XML_ELEMENT_NODE)
{
$output[$node->tagName] = $node->textContent;
}
}
return $output;
}
3. 在需要支付的界面添加以下代码:
4. 在该界面对应的JS文件中添加以下代码:
function wxpay(){
var url = '/index/Pay/wxpay';
$.get(url,function(data){
console.log(data);//在控制台输出prepay_id
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId" : "微信分配的appid", //公众号名称,由商户传入
"timeStamp":"时间戳", //时间戳,自1970年以来的秒数
"nonceStr" : "随机字符串", //随机串
"package" : "prepay_id=" + data, //商品包含的数据
"signType" : "MD5", //签名方式
"paySign" : "根据微信支付文档中签名算法进行签名" //签名
},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ){
//支付成功
alert("支付成功!")
}else{
//支付失败
alert("支付失败!")
}
}
);
});
}
以上是微信H5支付与TP5框架的集成方法,基本可满足商家的H5支付需求。当然,开发者也可根据自己的需求进行更加细致的集成过程。
总结
微信H5支付的安全性和可靠性使其成为了商家们在移动端网页购物中的首选支付方式。在TP5框架中集成微信H5支付方法也比较简单,使商家可以方便地为自己的网站开通微信H5支付。这使得商家在移动端网页购物中大大提高了便捷性,同时也为客户提供了更为安全可靠的支付方式。