知识分享
分享创造价值 合作实现共赢

知识分享

当前位置: 首页 > 知识分享

小程序-微信支付

发布时间:2021-09-19 09:12:39作者:顺晟科技点击:

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 文件夹下。

 

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

 



TOP

QQ客服

18910140161