微信小程序之支付流程整理--jsapi APP native的含义等

小程序支付流程

1、小程序调用wx.login() 获取 临时登录凭证code用户登录凭证(有效期五分钟) ,并回传到开发者服务器。

2、开发者需要在开发者服务器后台调用 api,以code换取 用户唯一标识openid  会话密钥session_key。之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。

Api地址:https://api.weixin.qq.com/sns/jscode2session?appid=$APPID&secret=$SECRET&js_code=$code&grant_type=authorization_code

$get_token_url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$get_token_url);

//curl_setopt($ch,CURLOPT_HEADER,0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);

$res = curl_exec($ch);

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);  //返回openid和session_key

echo $res;

然后用户在小程序端,发起下单操作,由开发者服务器生成订单相关信息,调用统一下单接口

https://api.mch.weixin.qq.com/pay/unifiedorder    先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易后调起支付

$input = new \WxPayUnifiedOrder();

$input->SetBody("点餐小小".trim($order_info['order_sn']));

$input->SetAttach("点餐小小".trim($order_info['order_sn']));

$input->SetOut_trade_no($pay_sn);

$input->SetTotal_fee(floatval($order_info['amount'])*100);

$input->SetTime_start(date("YmdHis"));

$input->SetTime_expire(date("YmdHis", time() + 3600));

$input->SetGoods_tag("点餐小小".trim($order_info['order_sn']));

$input->SetNotify_url('http://127.0.0.1/wechat_shop-master/Api/Wxpay/notify');

$input->SetTrade_type("JSAPI");

$input->SetOpenid($openId);

$order = \WxPayApi::unifiedOrder($input);

该接口返回预支付订单信息:return_code 和result_code都为SUCCESS的时候有返回trade_type类型,取值为:JSAPI,NATIVE,APP等)、prepay_id(微信生成的预支付会话标识,用于后续接口调用中使用,该值有效期为2小时)

获取到prepay_id 后 小程序调用wx.requestPayment(OBJECT)发起微信支付 package 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=paySign 签名    返回success调用成功

success

requestPayment:ok

调用支付成功

fail

requestPayment:fail cancel

用户取消支付

 

Paysign:appIdtimeStampnonceStrpackagesignType 五个参数同过md5实现加密

遇到问题:APPID_MCHID_NOT_MATCH  appid和mch_id不匹配 原因是前后使用了不同的APPID

其中,一开始对jsapi 和APP 和native 不知道什么意思特意查了下:名词解释

JSAPI网页支付

JSAPI网页支付即前文说的公众号支付,可在微信公众号、朋友圈、聊天会话中点击页面链接,或者用微信“扫一扫”扫描页面地址二维码在微信中打开商户HTML5页面,在页面内下单完成支付。

Native原生支付

Native原生支付即前文说的扫码支付,商户根据微信支付协议格式生成的二维码,用户通过微信“扫一扫”扫描二维码后即进入付款确认界面,输入密码即完成支付。

app支付:

微信开放平台是商户APP接入微信支付开放接口的申请入口,通过此平台可申请微信APP支付。

平台入口:http://open.weixin.qq.com


猜你喜欢

转载自blog.csdn.net/qq_33182756/article/details/80570703
今日推荐