微信JSAPI支付

微信Native支付官方文档有点小坑,摸索了半天,总结一下:

1.首先肯定是要开通微信支付功能

2.设置支付授权目录

3.设置js安全域名

4.然后就是代码了:

大概逻辑是这样的:首先是获取openid,然后整合微信统一下单api需要的参数,调用统一下单api,生成订单后整合支付需要的参数,然后给js接口即可.

5具体代码:

这里我没有使用官方给的支付demo,我在网上找了一个,然后自己改了一点。

JsApiPay.class.php 这个文件主要是获取openidde

<?php
//require_once "../lib/WxPay.Api.php";
namespace Lib;
/**
 * 
 * JSAPI支付实现类
 * 该类实现了从微信公众平台获取code、通过code获取openid和access_token、
 * 生成jsapi支付js接口所需的参数、生成获取共享收货地址所需的参数
 * 
 * 该类是微信支付提供的样例程序,商户可根据自己的需求修改,或者使用lib中的api自行开发
 * 
 * @author widy
 *
 */
class JsApiPay
{
	/**
	 * 
	 * 网页授权接口微信服务器返回的数据,返回样例如下
	 * {
	 *  "access_token":"ACCESS_TOKEN",
	 *  "expires_in":7200,
	 *  "refresh_token":"REFRESH_TOKEN",
	 *  "openid":"OPENID",
	 *  "scope":"SCOPE",
	 *  "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
	 * }
	 * 其中access_token可用于获取共享收货地址
	 * openid是微信支付jsapi支付接口必须的参数
	 * @var array
	 */
	public $data = null;
	private $_APPID;
	private $_CURL_PROXY_HOST = '0.0.0.0';
	private $_CURL_PROXY_PORT = 0;
	private $_APPSECRET;
	public function __construct($config)
	{
		$this->_APPID = $config['appid'];
		$this->_APPSECRET = $config['secret'];
		if(isset($config['CURL_PROXY_HOST'])){
			$this->_CURL_PROXY_HOST = $config['CURL_PROXY_HOST'];
		}
		if(isset($config['CURL_PROXY_PORT'])){
			$this->_CURL_PROXY_PORT = $config['CURL_PROXY_PORT'];
		}
	}

	/**
	 * 
	 * 通过跳转获取用户的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['REQUEST_URI'].$_SERVER['QUERY_STRING']);
			$baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].'?'.$_SERVER['QUERY_STRING']);
			$url = $this->__CreateOauthUrlForCode($baseUrl);
			Header("Location: $url");
			exit();
		} else {
			//获取code码,以获取openid
		    $code = $_GET['code'];
			$openid = $
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值