小程序-微信支付

app.js

// 获取用户 code

App({
  code:null,
  onLaunch: function () {
       var that = this;
    //登陆获取code
    wx.login({
      success: function (res) {
        if(res.code){

          that.code = res.code;
        }else{
          console.log("获取用户登陆失败");
        }
      }
    });
  },
  
})

index.wxml

 // 点击发起支付事件
<button class="total_js" bindtap="wxpay">结算订单</button>

 

index.js

var app = getApp()
Page({

wxpay: function () { var code = app.code; var total_fee = this.data.total; wx.request({
    //后台url、此处我用的是新浪云服务 url
: "https://cloud.applinzi.com/Wxpay/example/jsapi.php", data: { code:code, // code 上传至后台url }, header:{ 'content-type' :'json' }, method: 'GET', success: function (res) { // console.log(res.data) var data = res.data; wx.requestPayment({
'timeStamp': data.timeStamp, 'nonceStr': data.nonceStr, 'package': data.package, 'signType': 'MD5', 'paySign': data.paySign, 'success': function (res) { wx.navigateBack({ delta: 1, // 回退前 delta(默认为1) 页面 success: function (res) { wx.showToast({ title: '支付成功', icon: 'success', duration: 2000 }) } }) } }); } }) } })
Wxpay 后台部分  (公众平台提供的模板-点击链接下载
或者打开https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 选择 php demo

1、 wxpay.config.php
设置 appid、key、mchid 、appsecert 填写自己的小程序及商户号对应参数。
<?php
/**
*     配置账号信息
*/

class WxPayConfig
{
    //=======【基本信息设置】=====================================
    //
    /**
     * TODO: 修改这里配置为您自己申请的商户信息
     * 微信公众号信息配置
     * 
     * APPID:绑定支付的APPID(必须配置,开户邮件中可查看)
     * 
     * MCHID:商户号(必须配置,开户邮件中可查看)
     * 
     * KEY:商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置)
     * 设置地址:https://pay.weixin.qq.com/index.php/account/api_cert
     * 
     * APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置, 登录公众平台,进入开发者中心可设置),
     * 获取地址:https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=2005451881&lang=zh_CN
     * @var string
     */
    const APPID = 'wxfc1f9478556d4e8cb2';
    const MCHID = '1388148007';
    const KEY = 'hsof3idlugbperhndrmcnrychc3ttjd';
    const APPSECRET = '5443a7d84df1a47a603138b79a34de71';
    */
    const SSLCERT_PATH = '../cert/apiclient_cert.pem';
    const SSLKEY_PATH = '../cert/apiclient_key.pem';
    
    //=======【curl代理设置】===================================
    */
    const CURL_PROXY_HOST = "0.0.0.0";//"10.152.18.220";
    const CURL_PROXY_PORT = 0;//8080;
*/
    const REPORT_LEVENL = 1;
}

2、wxpay.jsapiPay.php

修改此文件的 __CreateOauthUrlForOpenid() 函数部分

private function __CreateOauthUrlForOpenid($code)
{
$urlObj["appid"] = WxPayConfig::APPID;
$urlObj["secret"] = WxPayConfig::APPSECRET;
$urlObj["js_code"] = $code;
$urlObj["grant_type"] = "authorization_code";
$bizString = $this->ToUrlParams($urlObj);
return "https://api.weixin.qq.com/sns/jscode2session?".$bizString;  //这里的url: https://api.weixin.qq.com/sns/jscode2session 由小程序提供。
}

jsapi.php

<?php 
ini_set('date.timezone','Asia/Shanghai');
//error_reporting(E_ERROR);
require_once "../lib/WxPay.Api.php";
require_once "WxPay.JsApiPay.php";
require_once 'log.php';

//①、获取用户openid
$tools = new JsApiPay();
$openId = $tools->GetOpenid();

//②、统一下单
$input = new WxPayUnifiedOrder();
$input->SetBody("商品名称");
$input->SetAttach("数据")
$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
$input->SetTotal_fee('1');
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("test");
$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
$input->SetTrade_type("JSAPI");
$input->SetOpenid($openId);
$order = WxPayApi::unifiedOrder($input);
//echo '<font color="#f00"><b>统一下单支付单信息</b></font><br/>';
//printf_info($order);
$jsApiParameters = $tools->GetJsApiParameters($order);

echo  $jsApiParameters ;

//获取共享收货地址js函数参数
$editAddress = $tools->GetEditAddressParameters();

//③、在支持成功回调通知中处理成功之后的事宜,见 notify.php
/**
 * 注意:
 * 1、当你的回调地址不可访问的时候,回调通知会失败,可以通过查询订单来确认支付是否成功
 * 2、jsapi支付时需要填入用户openid,WxPay.JsApiPay.php中有获取openid流程 (文档可以参考微信公众平台“网页授权接口”,
 * 参考http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html)
 */
?>

4. 将自己操作证书 application_cert.pem 与  application_key.pem 放在cert 文件夹下。

 

简单的介绍到这里,若有疑问,可私下讨论。

 



posted @ 2017-05-25 16:30  UltaDarakht  阅读(570)  评论(0)    收藏  举报