网站接入微信支付
官方文档
接入的官方文档
:
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1
腾讯客服指引
:
https://kf.qq.com/faq/170116AziqYV1701162eyAzA.html
登录平台连接
公众号
:
https://mp.weixin.qq.com/
微信商户
:
https://pay.weixin.qq.com/index.php/core/home/login?return_url=%2F
准备工作
1、有一个认证过的公众号,认证费是300元/次,没认证下面就走不下去
2、去公众平台,申请微信支付
3、开户成功(包含验证,签署协议)
第一步:下载sdk和demo
下载地址:
https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11_1
注意:
1、下载之后,如果你的代码是原生,那可以直接用,路径注意就好
2、下载之后,如果代码是用了框架,那些代码是不可以直接用的,因为命名空间会错
3、文件说明:
4、部分功能需要下载证书:
https://pay.weixin.qq.com/index.php/account/api_cert
第二步:整理代码(框架)
把lib下的代码都拷贝一份放在你自己的逻辑层,这里是为了能正常调用,定义正确的命名空间,文件的命名请根据框架的规则。(如果不是在每个调用的地方都引入,就会无法调用,所有这里另外拎出来,再调用会更方便。)
第三步:必须配置信息
private $AppId; //微信公众号信息配置,绑定支付的APPID (公众号)
private $MerchantId; //商户号 (微信商户平台)
private $NotifyUrl; //支付回调url (自己)
private $Key; //商户支付密钥 (微信商户平台)
private $AppSecret;//公众帐号secert(仅JSAPI支付的时候需要配置, 登录公众平台,进入开发者中心可设置) (公众号)
第四步:支付代码
/**
* 测试支付,直接显示二维码
*/
public function pay()
{
$notify = new NativePay();
//这些要写到对应的逻辑层
$input = new \WxPayUnifiedOrder();
$input->SetBody("支付说明"); //支付说明
$input->SetAttach("5555555556666"); //携带订单的自定义数据
$input->SetOut_trade_no("47378fd" . date("YmdHis")); //系统内部的订单号,32个字符内
$input->SetTotal_fee("200"); //这里是2元
$input->SetTime_start(time()); //订单生成时间,一般是当前时间
$input->SetTime_expire(date("YmdHis", time() + 1200)); //订单失效时间,日期格式,
$input->SetGoods_tag("测试"); //商品标记
$input->SetNotify_url("http://xxx.cn/xx/xx/call_back");//回调地址
$input->SetTrade_type("NATIVE"); //小程序用'JSAPI'; //网站二维码,写死 NATIVE
//$input->SetOpenid($openId);//小程序需要,网站不需要
$input->SetProduct_id("1"); //二维码中包含的商品ID
//这里你们可以直接全局搜GetPayUrl方法
$result = $notify->GetPayUrl($input);
$url = $result["code_url"]; //生成二维码链接
//这里你们可以全局搜 \QRcode::png($url);
$qrcode = new Qrcode();
$qrcode->get($url); //这里拼成图
}
注意:1、GetPayUrl方法我是整理过放在另一文件,这个方法下载的文档中是有的,可以直接用它的
2、连接拼成图,用的是里面自带的 \QRcode::png($url); 方法,但是这里要注意,如果要直接生成图片,这里要加个exit();
第五步:退款代码
/**
transaction_id :微信支付单号
total_fee:微信支付总价
refund_fee:退款金额
**/
//申请退款
public function refund($params)
{
$transaction_id = $params["transaction_id"];
$total_fee = bcmul($params["total_fee"],100,0); //这里必须乘100,因为它的单位是分
$refund_fee = bcmul($params["refund_fee"],100,0);
$input = new \WxPayRefund();
$input->SetTransaction_id($transaction_id);
$input->SetTotal_fee($total_fee);
$input->SetRefund_fee($refund_fee);
$config = new WxPayConfig();
$input->SetOut_refund_no("gr23rkjgir".date("YmdHis"));
$input->SetOp_user_id($config->GetMerchantId());
return WxPayApi::refund($config, $input);
}
注意:
1、其他api可以查看文档用到的方法和链接
2、example文件夹里面的文件有很多案例方法,都可以借鉴。
3、微信支付商户,国内版本已经取消了账号密码登录
结束。