微信小程序怎么向外部php文件传递参数

微信小程序怎么向外部php文件传递参数,第1张

PAY页面往 js_api_call.php 传值 获取不到的问题

echo 是可以echo出来的 但是

这里不写死就会报错 $key0$

<?php

/**

* JS_API支付demo

* ====================================================

* 在微信浏览器里面打开H5网页中执行JS调起支付。接口输入输出数据格式为JSON。

* 成功调起支付需要三个步骤:

* 步骤1:网页授权获取用户openid

* 步骤2:使用统一支付接口,获取prepay_id

* 步骤3:使用jsapi调起支付

*/

//获取信息

@$name="支付测试-包包"

@$price=0.01*100

@$hyid=$_GET['hyid']

@$out_trade_no=$_GET['num']//订单号

include_once("../WxPayPubHelper/WxPayPubHelper.php")

//使用jsapi接口

$jsApi = new JsApi_pub()

//=========步骤1:网页授权获取用户openid============

//通过code获得openid

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

{

//触发微信返回code码

$url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL)

Header("Location: $url")

}else

{

//获取code码,以获取openid

$code = $_GET['code']

$jsApi->setCode($code)

$openid = $jsApi->getOpenId()

}

//=========步骤2:使用统一支付接口,获取prepay_id============

//使用统一支付接口

$unifiedOrder = new UnifiedOrder_pub()

//设置统一支付接口参数

//设置必填参数

//appid已填,商户无需重复填写

//mch_id已填,商户无需重复填写

//noncestr已填,商户无需重复填写

//spbill_create_ip已填,商户无需重复填写

//sign已填,商户无需重复填写

$unifiedOrder->setParameter("openid","$openid")//商品描述

$unifiedOrder->setParameter("body","$name")//商品描述

//自定义订单号,此处仅作举例

$timeStamp = time()

$out_trade_no = WxPayConf_pub::APPID."$timeStamp"

$unifiedOrder->setParameter("out_trade_no","$out_trade_no")//商户订单号

$unifiedOrder->setParameter("total_fee","$price")//总金额

$unifiedOrder->setParameter("notify_url","http://youjia.pinpai365.cn/weixinpay/demo/notify_url.php")//通知地址

$unifiedOrder->setParameter("trade_type","JSAPI")//交易类型

//非必填参数,商户可根据实际情况选填

//$unifiedOrder->setParameter("sub_mch_id","XXXX")//子商户号

//$unifiedOrder->setParameter("device_info","XXXX")//设备号

//$unifiedOrder->setParameter("attach","XXXX")//附加数据

//$unifiedOrder->setParameter("time_start","XXXX")//交易起始时间

//$unifiedOrder->setParameter("time_expire","XXXX")//交易结束时间

//$unifiedOrder->setParameter("goods_tag","XXXX")//商品标记

$unifiedOrder->setParameter("attach","2")//会员ID

$prepay_id = $unifiedOrder->getPrepayId()

//=========步骤3:使用jsapi调起支付============

$jsApi->setPrepayId($prepay_id)

$jsApiParameters = $jsApi->getParameters()

//echo $jsApiParameters

?>

<html>

<head>

<meta charset="utf-8">

<title>支付页面</title>

<script type="text/javascript">

//调用微信JS api 支付

function jsApiCall()

{

WeixinJSBridge.invoke(

'getBrandWCPayRequest',

<?php echo $jsApiParameters?>,

function(res){

WeixinJSBridge.log(res.err_msg)

if(res.err_msg == "get_brand_wcpay_requestk"){

window.location.href='/shop/successful.php?spmc=<?php echo $name?>&&price=<?php echo $price?>'

//history.go(-1)

}else{

window.location.href='/shop/pay.php'

}

}

)

}

if (typeof WeixinJSBridge == "undefined"){

if( document.addEventListener ){

document.addEventListener('WeixinJSBridgeReady', jsApiCall, false)

}else if (document.attachEvent){

document.attachEvent('WeixinJSBridgeReady', jsApiCall)

document.attachEvent('onWeixinJSBridgeReady', jsApiCall)

}

}else{

jsApiCall()

}

</script>

</head>

</html>

给button绑定冒泡事件,也就是我们说的点击事件

这里wx.getUserProfile方法可以从底部d框提示用户授权,success是用户确认授权回调方法,

可以console.log(result)查看以下数据,可以在userInfo中获取用户的一些基本信息,例如头像,昵称。通过wx.login()获取微信平台提供给我们的code(5分钟内有效,每次请求code都不一样),有了code我们就可以通过wx.request()向后端发起请求了;

通过code和自己开发平台的appid和appSecret调用微信平台提供给我们的url获取openid和session_key,这里我们可以用file_get_contents()或者curl都可。

2019年12月26日

文档:

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7

一.一般要开发的两个接口

1.统一下单

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1

2.申请退款

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_4

3.签名规则

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3

二.小程序支付时序图

关键就是wx.requestPayment(object)

2.ps商户系统和微信支付系统主要交互:

1、小程序内调用登录接口,获取到用户的openid,api参见公共api【 小程序登录API 】

2、商户server调用支付统一下单,api参见公共api【 统一下单API 】

3、商户server调用再次签名,api参见公共api【 再次签名 】

4、商户server接收支付通知,api参见公共api【 支付结果通知API 】

5、商户server查询支付结果,api参见公共api【 查询订单API 】

三.微信小程序支付实现步骤

1.获取登录凭证code 并传给后端服务器

2.后端服务器请求微信服务器获取openid和session_key,并将openid返回给小程序

3.小程序客服端发起支付请求给后端服务器 (带上openid参数)

4.后端服务器接收到openId后,调用微信支付统一下单接口(后端调用的,用来给小程序获取支付参数)

5.拿到后端服务器返回的5个参数后,调用最终支付接口wx.requestPayment

6.微信服务器进行支付成功后,通知后端服务器。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8038159.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存