当前位置:首页 >> 幼儿读物 >>

weixin


weixin.js
// JavaScript Document// 部分来自网络,不保证全部有用 // 购买和收获地址为 OK function wxBuy(appId, timeStamp, nonceStr, packages, paySign, cb) { if (typeof WeixinJSBridge == "undefined") {

alert("请先通过微信访问!"); } else { WeixinJSBridge.invoke('getBrandWCPayRequest',{ "appId" : appId, //公众号名称,由商户传入 "timeStamp" : timeStamp, //时间戳 这里随意使用了一个值 "nonceStr" : nonceStr, //随机串 "package" : packages, //扩展字段,由商户传入 "signType" : "SHA1", //微信签名方式:sha1 "paySign" : paySign //微信签名 }, function(res){ WeixinJSBridge.log(res.err_msg); cb(res); // 返回 res.err_msg,取值 // get_brand_wcpay_request:cancel 用户取消 // get_brand_wcpay_request:fail 发送失败 // get_brand_wcpay_request:ok 发送成功 //alert(res.err_code + res.err_desc); }); } }; // 微信收获地址 function wxGetAddress (appId, cb){ if (typeof WeixinJSBridge == "undefined") { alert("请先通过微信访问!"); } else { WeixinJSBridge.invoke('getRecentlyUsedAddress',{ //公众号名称,由商户传入 "appId" : appId },function(res){ cb(res); // 返回 res.err_msg,取值 // get_recently_used_address:fail // get_recently_used_address:ok // WeixinJSBridge.log(res.err_msg); // 收获地址格式为下列数据共同组成,其中参数列表如下: // userName:收货人姓名 获取失败 获取成功

// telNumber:收货人电话号码 // addressPostalCode:邮政编码 // proviceFirstStageName:收货地址第?一级省、直辖市、自治区、特别行政区名称 // addressCitySecondStageName:收货地址第二级市名称 // addressCountiesThirdStageName:收货地址第三级区县名称 // addressDetailInfo:收货地址详细信息 // alert(res.userName+res.telNumber+res.addressPostalCode+res.proviceFirstStageName+res.addressCitySecond StageName+res.addressCountiesThirdStageName+res.addressDetailInfo); }); } }; // 修改微信地址 function wxEditAddress(appId, cb) { if (typeof WeixinJSBridge == "undefined") { alert("请先通过微信访问!"); } else { WeixinJSBridge.invoke('editTransactionAddress',{ //公众号名称,由商户传入 "appId" : appId },function(res){ cb(res); // 返回 res.err_msg,取值 // edit_address:fail // edit_address:ok 编辑被取消 编辑成功

// WeixinJSBridge.log(res.err_msg); // 收获地址格式为下列数据共同组成,其中参数列表如下: // userName:收货人姓名 // telNumber:收货人电话号码 // addressPostalCode:邮政编码 // proviceFirstStageName:收货地址第?一级省、直辖市、自治区、特别行政区名称 // addressCitySecondStageName:收货地址第二级市名称 // addressCountiesThirdStageName:收货地址第三级区县名称 // addressDetailInfo:收货地址详细信息 // alert(res.userName+res.telNumber+res.addressPostalCode+res.proviceFirstStageName+res.addressCitySecond StageName+res.addressCountiesThirdStageName+res.addressDetailInfo); }); } } // 当微信内置浏览器完成内部初始化后会触发 WeixinJSBridgeReady 事件。

document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { alert("init"); //公众号支付 $('#getBrandWCPayRequest').click(function(e){ WeixinJSBridge.invoke('getBrandWCPayRequest',{ "appId" : "${appid}", //公众号名称,由商户传入 "timeStamp" : "${timeStamp}", //时间戳 "nonceStr" : "${nonceStr}", //随机串 "package" : "${package}", ////扩展包 "signType" : "sha1", //微信签名方式:1.sha1 "paySign" : "${paySign}" ////微信签名 },function(res){ // if(res.err_msg == get_brand_wcpay_request:ok ) { alert( res.err_msg ); // alert("OK"); // } // 使用以上方式判断前端返回,微信团队郑重提示: res.err_msg 将在用户支付成功后返回 ok, 但并不保证它绝对可靠。 //因此微信团队建议,当收到 ok 返回时,向商户后台询问是否收到交易成功的通知,若收到 通知,前端展示交易成功的界面;若此时未收到通知,商户后台主动调用查询订单接口,查询订单的当前 状态,并反馈给前 }); }); WeixinJSBridge.log('yo~ ready.'); }, false); 展示相应的界面。

payRequest.php
<?php //$partner = "1000000000"; //$key = "xxxxxx"; //$appid = "xxxxxx"; 找到。 //财付通商户号,微信支付申请成功之后而开通的财付通邮件通知中能找到。 财付通密钥,微信支付申请成功之后而开通的财付通邮件通知中能找到。 微信后台可以找到。 //PartnerKey //appid

//$appkey = "xxxxxx";//PaySignKey 支付专用签名串, 微信支付申请成功之后而开通的财付通邮件通知中能

$partner = "1900000109"; $key = "xxxx"; $appid = "wxf8b4f85fxxxx"; $appkey PWSn"; $randNum = rand(1000, 9999); $productid = "1234";//date("YmdHis") . $randNum; $timestamp = time(); $noncestr = md5(rand()); $ReqHandler = new RequestHandler(); $ReqHandler->setParameter("appid", $appid); $ReqHandler->setParameter("appkey", $appkey); $ReqHandler->setParameter("timestamp", $timestamp); $ReqHandler->setParameter("noncestr", $noncestr); $ReqHandler->setParameter("productid", $productid); $sha1Sign = $ReqHandler->getPaySign(); $nativeurl = "weixin://wxpay/bizpayurl? sign=".$sha1Sign."&appid=".$appid."&productid=".$productid."&timestamp=".$timestamp."&noncestr=".$no ncestr; class RequestHandler { /**请求的参数 */ var $parameters; /** *创建 sha1 摘要,规则是:按照参数名 a-z 排序,遇到空值的参数不参加签名 */ function getPaySign() { $signPars = ""; ksort($this->parameters); foreach($this->parameters as $k => $v) { = "xxxxxxxo3mdopKaPGQQ7TtkNySuAmCaDCrw4xhPY5qKTB17Fzm0RgR3c0WaVYIXZARsxzHV2x7iwPPzOz94dnw

if("" != $v && "sign" != $k) { $signPars .= $k . "=" . $v . "&"; } } //去掉最后一个& $signPars = substr($signPars, 0, strlen($signPars)-1); $sha1sign = strtolower(sha1($signPars)); return $sha1sign; } /** 获取参数值 */ function getParameter($parameter) { return $this->parameters[$parameter]; } /** 设置参数值 */ function setParameter($parameter, $parameterValue) { $this->parameters[$parameter] = $parameterValue; } /** *获取所有请求的参数 *@return array */ function getAllParameters() { return $this->parameters; } } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>公众号 Native 支付</title> </head> <body> <div align="center"> <br><br><br><br><br><br> <h1><a href="<?=$nativeurl?>">原生支付链接(在微信中打开)</a></h1> <br><br><br><br><br><br> ========或将此链接地址生成二维码======== <?=$nativeurl?> </div> </body>

</html>

payPackageUrl.php
<?php //$partner = "1000000000"; //$key = "xxxxxx"; //$appid = "xxxxxx"; 找到。 //财付通商户号,微信支付申请成功之后而开通的财付通邮件通知中能找到。 财付通密钥,微信支付申请成功之后而开通的财付通邮件通知中能找到。 微信后台可以找到。 //PartnerKey //appid

//$appkey = "xxxxxx";//PaySignKey 支付专用签名串, 微信支付申请成功之后而开通的财付通邮件通知中能

$partner = "1000000000"; $key = "xxxxxx"; $appid = "xxxxxx"; $appkey = "xxxxxx"; $notify_url = "http://test.com/"; $timestamp = time(); $noncestr = md5(rand()); $randNum = rand(1000, 9999); $out_trade_no = date("YmdHis").$randNum; $resHandler = new PackageResponseHandler(); $resHandler->setParameter("appkey", $appkey); if($resHandler->isweixinSign()) { //package 签名 $packageReqHandler = new NativeRequestHandler(); $packageReqHandler->setKey($key); $packageReqHandler->setParameter ("body","公众号 native 支付测试"); //商品描述 $packageReqHandler->setParameter ("fee_type", "1"); //银行币种 $packageReqHandler->setParameter ("input_charset", "GBK"); //字符集 $packageReqHandler->setParameter ("notify_url", $notify_url); //通知地址 $packageReqHandler->setParameter ("out_trade_no", $out_trade_no); //商户订单号 $packageReqHandler->setParameter ("partner", $partner); //设置商户号 $packageReqHandler->setParameter ("spbill_create_ip", $_SERVER['REMOTE_ADDR']); //支付机器 ip $packageReqHandler->setParameter ("total_fee", "1"); //商品总金额,以分为单位 $packageValue = $packageReqHandler->getPackageValue(); //此处返回可根据订单信息来返回 $paySignReqHandler = new NativeRequestHandler(); $paySignReqHandler->setParameter ("AppId", $appid); $paySignReqHandler->setParameter ("AppKey", $appkey); $paySignReqHandler->setParameter ("NonceStr", $noncestr); $paySignReqHandler->setParameter ("TimeStamp", $timestamp); $paySignReqHandler->setParameter ("Package", $packageValue);

$paySignReqHandler->setParameter ("RetCode", "0"); $paySignReqHandler->setParameter ("RetErrMsg", "OK"); $paySign = $paySignReqHandler->getPaySign(); $packageXml = "<xml><AppId><![CDATA[%s]]></AppId><NonceStr><![CDATA[%s]]></NonceStr><Package> <![CDATA[%s]]></Package><RetCode>0</RetCode><RetErrMsg><![CDATA[OK]]></RetErrMsg> <TimeStamp>%s</TimeStamp><AppSignature><![CDATA[%s]]></AppSignature><SignMethod><! [CDATA[sha1]]></SignMethod></xml>"; $resultStr = sprintf($packageXml, $appid, $noncestr, $packageValue, $timestamp, $paySign); echo $resultStr; } class PackageResponseHandler { /**应答的参数*/ var $parameters; function __construct() { $this->PackageResponseHandler(); } function PackageResponseHandler() { /* POST */ $postData = file_get_contents("php://input"); $temp = str_replace(array("<![CDATA[","]]>"), "", $postData, $count); $xmlBody = simplexml_load_string($postData, 'SimpleXmlElement', LIBXML_NOCDATA);//转换 post 数据为 simplexml 对象 foreach ($xmlBody->children() as $k => $v) { $this->setParameter(strtolower($k), $v); } } /** *是否微信签名,规则是:按参数名称 a-z 排序,遇到空值不参加签名。 *true:是 *false:否 */ function isweixinSign() { $signPars = ""; ksort($this->parameters); foreach($this->parameters as $k => $v) { if("appsignature" != $k && "" != $v && "signmethod" != $k) { $signPars .= $k . "=" . $v . "&"; } } //去掉最后一个& $signPars = substr($signPars, 0, strlen($signPars)-1);

$sha1sign = strtolower(sha1($signPars)); $tenpaySign = strtolower($this->getParameter("appsignature")); return $sha1sign == $tenpaySign; } /** *获取参数值 */ function getParameter($parameter) { return $this->parameters[$parameter]; } /** *设置参数值 */ function setParameter($parameter, $parameterValue) { $this->parameters[$parameter] = $parameterValue; } /** *获取所有请求的参数 *@return array */ function getAllParameters() { return $this->parameters; } } class NativeRequestHandler { /**密钥*/ var $key; /**请求的参数*/ var $parameters; function __construct() { $this->NativeRequestHandler(); } function NativeRequestHandler() { $this->key = ""; $this->parameters = array(); } /** *获取密钥 */ function getKey() { return $this->key; } /** *设置密钥

*/ function setKey($key) { $this->key = $key; } /** *获取参数值 */ function getParameter($parameter) { return $this->parameters[$parameter]; } /** *设置参数值 */ function setParameter($parameter, $parameterValue) { $this->parameters[$parameter] = $parameterValue; } /** *获取所请求有参数 *@return array */ function getAllParameters() { return $this->parameters; } /** *获取 url 模式的参数字符串(encode 后数据) */ function getPackageValue() { $this->createSign(); $reqPar = ""; ksort($this->parameters); foreach($this->parameters as $k => $v) { $reqPar .= $k . "=" . urlencode($v) . "&"; } //去掉最后一个& $reqPar = substr($reqPar, 0, strlen($reqPar)-1); return $reqPar; } /** *创建 md5 摘要,规则是:按参数名称 a-z 排序,遇到空值的参数不参加签名。 */ function createSign() { $signPars = ""; ksort($this->parameters);

foreach($this->parameters as $k => $v) { if("" != $v && "sign" != $k) { $signPars .= $k . "=" . $v . "&"; } } $signPars .= "key=" . $this->getKey(); $sign = strtoupper(md5($signPars)); $this->setParameter("sign", $sign); } /** *创建 sha1 摘要,规则是:按参数名称 a-z 排序,遇到空值的参数不 */ function getPaySign() { $signPars = ""; ksort($this->parameters); foreach($this->parameters as $k => $v) { if("" != $v && "sign" != $k) { $signPars .= strtolower($k) . "=" . $v . "&"; } } //去掉最后一个& $signPars = substr($signPars, 0, strlen($signPars)-1); $sha1sign = strtolower(sha1($signPars)); return $sha1sign; } } ?>


相关文章:
史上最全的微信添加好友的48种方法
史上最全的微信添加好友的48种方法_互联网_IT/计算机_专业资料。史上最全的微信添加好友的 48 种方法 第一种就是同行互推,我跟我同行如果互推的话商,假如他...
微信100种快速加人方法
微信100种快速加人方法_互联网_IT/计算机_专业资料。方法 1 线下流量引导到线上: 一哥们在微信卖面膜,他需要大量精准女性粉丝,接下来,我们看下他是如何巧妙 加...
微信加好友的50个方法
微信加好友的50个方法_销售/营销_经管营销_专业资料。微信加好友的 50 个方法每天看着朋友圈里的微商们不停的刷着广告,我就在想,除了我还有谁没有屏蔽的!有 ...
微信管理细则
微信管理细则_制度/规范_工作范文_实用文档。修(商)字(2014)-001 号 签发人: 信息互动管理细则为了提高全员信息互动互通,工作对接及时快捷有效,实现线上 经验...
企业微信营销该怎么做
企业微信营销该怎么做_销售/营销_经管营销_专业资料。随着微信越来越火,很多企业都开始着手微信营销,从而加强企业的品牌文化,形成品 牌个性。 一、企业为什么要做...
微信对人的影响
微信对人的影响_教育学/心理学_人文社科_专业资料。信息,科技、创新微信对人的影响首先,简单介绍一下微信,微信(英文名:we chat)是腾讯公 司于 2011 年 1 月...
微信平台策划书
计算机学院研究生科微信公共平台推广 策划书 活动时间: 2014 年 3 月—2014 年 5 月 主办单位:计算机科学与工程学院研究生科 承办单位:计算机科学与工程学院研究...
微信公众平台快速上手教程
微信公众平台快速上手教程 Part1 注册账户与认证刘子骏 微信微博营销 微信, 微信公众平台 17Comments 发表评论 这段时间越来越多朋友和客户开始关注微信,我收到...
更多相关标签:
微信电脑版 | 微信电脑版官方下载 | 微信公众平台 | 微信下载 | 微信官网 | 微博 | 微信注册 | 微信下载安装 |