微信jsapi支付获取code_PHP JSAPI 微信支付

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-1 14:16   852   0

直接上代码:

一 微信支付封装到Vendor下

二 微信公众号及对应的微信支付商服号

public static $appid = 'wxdff3ac673973bde2'; //微信对应的appid

public static $mchid = '1483472062'; // 商户号ID 还有一个妥妥惠的商户号,appid跟这个相同,但是mchid跟这个不同

public static $key = '934C868AC83C08913F627202AE540055'; // 微信商户支付平台中的 商户支付密钥

public static $appsecret = '3127d8774a614dd50d27050c78dfdba2'; //公众号的appsecret 不是微信支付商户平台的

三 微信核心类文件 WxPayJsApiPay.php 文件中的某个类修改

//require_once dirname(dirname(__FILE__))."/WxPayApi.php";

require_once "WxPayApi.php";

/**

*

* 通过跳转获取用户的openid,跳转流程如下:

* 1、设置自己需要调回的url及其其他参数,跳转到微信服务器https://open.weixin.qq.com/connect/oauth2/authorize

* 2、微信服务处理完成之后会跳转回用户redirect_uri地址,此时会带上一些参数,如:code

*

* @return 用户的openid

*/

public function GetOpenid()

{

//通过code获得openid

if (!isset($_GET['code'])){

//触发微信返回code码

// $baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING';]);

$baseUrl = urlencode('http://';.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); 后修改的这块,之前的URL链接不对

$url = $this->__CreateOauthUrlForCode($baseUrl);

Header("Location: $url");

exit();

} else {

//获取code码,以获取openid

$code = $_GET['code'];

$openid = $this->getOpenidFromMp($code);

return $openid;

}

}

三 目录结构

四 Controller的代码

public function cart4(){

$save_data['coupon_id'] = I('coupon_id');

$order_id = I('order_id');

$order = M('Order')->where("order_id = $order_id")->find();

M('Order')->where("order_id = $order_id")->save($save_data);

$mods=D('OrderGoods');

$where['order_id']= I('request.order_id');

$subject_name=$mods->where($where)->select();

// 如果已经支付过的订单直接到订单详情页面. 不再进入支付页面

if($order['pay_status'] == 1){

$order_detail_url = U("Mobile/User/order_detail",array('id'=>$order_id));

header("Location: $order_detail_url");

}

$paymentList = M('Plugin')->where("`type`='payment' and status = 1 and code in('weixin','alipay')")->select();

//微信浏览器

if(strstr($_SERVER['HTTP_USER_AGENT'],'MicroMessenger')){

$paymentList = M('Plugin')->where("`type`='payment' and status = 1 and code in('weixin','cod')")->select();

}

$paymentList = convert_arr_key($paymentList, 'code');

foreach($paymentList as $key => $val)

{

$val['config_value'] = unserialize($val['config_value']);

if($val['config_value']['is_bank'] == 2)

{

$bankCodeList[$val['code']] = unserialize($val['bank_code']);

}

}

$bank_img = include 'Application/Home/Conf/bank.php'; // 银行对应图片

$payment = M('Plugin')->where("`type`='payment' and status = 1")->select();

$this->assign('subject_name',$subject_name[0]['goods_name']);

$this->assign('paymentList',$paymentList);

$this->assign('bank_img',$bank_img);

$this->assign('order',$order);

$this->assign('bankCodeList',$bankCodeList);

$this->assign('pay_date',date('Y-m-d', strtotime("+1 day")));

if($this->is_weixin()){

vendor('Weixinpay.WxPayJsApiPay');

//1、获取openid

$tools = new JsApiPay();

// $openId = 'orLeuv4781xUlDJjwACO1vgGjObw';

$openId = $tools->GetOpenid();

$input = new WxPayUnifiedOrder();

$input->SetBody($subject_name[0]['goods_name']);

$input->SetAttach("万惠科技");

$input->SetOut_trade_no($order['order_sn']);

// $input->SetOut_trade_no('1486224422'.date("YmdHis"));

$input->SetTotal_fee($order['order_amount']*100);

$input->SetTime_start(date("YmdHis"));

$input->SetTime_expire(date("YmdHis", time() + 600));

$input->SetGoods_tag("惠生活客户服务");

$input->SetNotify_url("http://www.wanhuikeji.cn/Api/Notify/wxPayNotify";);

$input->SetTrade_type("JSAPI");

$input->SetOpenid($openId);//$openId

// dump($input);die;

$order = WxPayApi::unifiedOrder($input);

// dump($order);die;

echo '统一下单支付单信息
';

$jsApiParameters = $tools->GetJsApiParameters($order);

$this->assign('jsApiParameters',$jsApiParameters);

}

$this->display();

}

五 html中的代码

<include file="Public/header"/>

"__STATIC__/css/flow.css?version=__STATIC_VERSION__">

"__STATIC__/css/style_jm.css?version=__STATIC_VERSION__">

"__STATIC__/css/manyuan1.css?version=__STATIC_VERSION__">

sb-back iconfont" href="{:U('Cart/Cart')}" >
提交订单

订单已经提交成功!

  • 请您在{$pay_date}前完成支付,否则订单将自动取消!
  • 订单号:{$order['order_sn']}
  • 支付金额:¥{$order['order_amount']}元
支付方式 link">必选 请选择支付方式

<foreach name="paymentList" item="v" key="k">

name="payment_name" onClick="change_pay(this);">

class="fl shipping_title">

"/plugins/{$v['type']}/{$v['code']}/{$v['icon']}" width="110" height="40" />

去支付

去支付

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP