小程序支付功能开通、支付流程等
2017年6月14日,小程序支付功能开通已经是当下最热门的话题,下面将从多方面来谈谈小程序支付功能开通、支付流程等相关的内容。
6月14日消息,据彭博社报道,为了与新东家沃尔玛(Walmart)融合得更加顺畅,Jet.com(去年8月被沃尔玛以33亿美元收购)正计划逐步剔除自己平台上所售的Costco旗下品牌产品。
6月18日,永辉将在福州开出第一家永辉生活店。值得注意的是,这也是永辉首家24小时营业门店。据了解,这家24小时门店商品由永辉物流统一配送,没有熟食但提供蔬菜水果以及冷冻冰鲜类商品。
支付步骤逻辑:
1. 小程序发起请求预支付
2. 服务端调用接口发起预支付信息
3. 微信小程序调起支付完成支付
1. 小程序发起请求预支付
2. 服务端调用接口发起预支付信息
服务端接收到请求后,调用微信的api接口,调用成功会得到一个prepay_id 这个就是相当于小程序的预支付id 过程中会生成签名,按照官方文档的实例参数生成即可,如果非必填可选择不填,然后向 api 发送一个xml
参数讲解官方文档地址:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1eg:
<xml>
<appid>wx2421b1c4370ec43b</appid>
<attach>支付测试</attach>
<body>JSAPI支付测试</body>
<mch_id>10000100</mch_id>
<detail><![CDATA[{ "goods_detail":[ { "goods_id":"iphone6s_16G", "wxpay_goods_id":"1001", "goods_name":"iPhone6s 16G", "quantity":1, "price":528800, "goods_category":"123456", "body":"苹果手机" }, { "goods_id":"iphone6s_32G", "wxpay_goods_id":"1002", "goods_name":"iPhone6s 32G", "quantity":1, "price":608800, "goods_category":"123789", "body":"苹果手机" } ] }]]></detail>
<nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
<notify_url>[url]http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>[/url]
<openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</openid>
<out_trade_no>1415659990</out_trade_no>
<spbill_create_ip>14.23.150.211</spbill_create_ip>
<total_fee>1</total_fee>
<trade_type>JSAPI</trade_type>
<sign>0CB01533B8C1EF103065174F50BCA001</sign>
</xml>
需要注意sign 生成方式和公众号生成方式一致,下面是PHP生成签名方法, 可根据不同的框架修改,记得修改 key
/**
* 生成签名
* @return 签名,本函数不覆盖sign成员变量,如要设置签名需要调用SetSign方法赋值
*/
public function MakeSign()
{
//签名步骤一:按字典序排序参数
ksort($this->_prepay);
$string = $this->ToUrlParams();
//签名步骤二:在string后加入KEY
$string = $string . "&key=".WxPayConfig::KEY;
//签名步骤三:MD5加密
$string = md5($string);
//签名步骤四:所有字符转为大写
$result = strtoupper($string);
return $result;
}
/**
* 格式化参数格式化成url参数
*/
public function ToUrlParams()
{
$buff = "";
foreach ($this->values as $k => $v)
{
if($k != "sign" && $v != "" && !is_array($v)){
$buff .= $k . "=" . $v . "&";
}
}
$buff = trim($buff, "&");
return $buff;
}
调用统一下单api
/**
* 统一下单调取返回值
* @return mixed
* $output['return_code'] 状态码 SUCCESS/FAIL
* $output['return_msg'] 返回信息,如非空,为错误原因 签名失败 参数格式校验错误
* $output['time'] 当前时间戳
* $output['nonceStr'] 随机字符串
* $output['prepay_id'] 预支付id
* $output['sign'] 签名
* */
public function pay_place_order()
{
$xml = '<xml>
<appid>'.$this->_prepay['appid'].'</appid>
<body>'.$this->_prepay['body'].'</body>
<mch_id>'.$this->_prepay['mch_id'].'</mch_id>
<nonce_str>'.$this->_prepay['nonce_str'].'</nonce_str>
<notify_url>'.$this->_prepay['notify_url'].'</notify_url>
<openid>'.$this->_prepay['openid'].'</openid>
<out_trade_no>'.$this->_prepay['out_trade_no'].'</out_trade_no>
<spbill_create_ip>'.$this->_prepay['spbill_create_ip'].'</spbill_create_ip>
<total_fee>'.$this->_prepay['total_fee'].'</total_fee>
<trade_type>'.$this->_prepay['trade_type'].'</trade_type>
<sign>'.$this->MakeSign().'</sign>
</xml>';
//调用api,自定义对参数进行处理,改请求方式是自定义方式
$xml_result = post_request_https('https://api.mch.weixin.qq.com/pay/unifiedorder', $xml);
对返回的参数从新生成sign,得到一个新的sign,返回小程序
注意: 生成返回小程序签的名参与生成的签名的字段有下图,记得拼接key ,使用的是调取api 返回的值
参数详解:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=3
3. 微信小程序调起支付完成支付
参数详解:
https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-pay.html?t=20161122
注意: 支付成功后微信回调通知签名验证,需要的参数是所有返回的参数字段除去sign字段,生成签名 = 返回字段中的sign(签名)
参数详解:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_7
-
微信小程序商城系统开发其实很简单
微信小程序商城系统开发其实很简单,只需要五步就可以完成,整个过程包括开发、上线、发布都可以轻松搞定...详情
-
微信小程序商城系统免费注册体验
微信小程序商城系统免费注册体验,接下来是微信小程序的时代,这一波红利在不抓住互联网就再也没什么机会了...详情
想了解更多微信小程序开发和微信小程序大全都可以进入微信小程序商城系统开发了解。
第二部分:如何开通一个小商店