微信定制开发支付

59353人阅读
Android(49)
一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统显然是不明智的,国内已经有多家成熟的移动支付提供商,腾讯就是其中之一。梳理了下微信支付的接入,今天给大家分享下腾讯旗下的微信支付SDK的接入流程。
Android App支付系列(二):
:集成微信,支付宝,银联支付的开源支付框架
1.申请开发者资质
使用公司管理者/高层帐号登录微信开放平台,进入“账号中心”,进行开发者资质认证,需要填写公司资料,包括但不限于,公司注册号,公司营业执照,公司对外办公电话,公司对公银行卡信息(卡号,发卡行)。审核时间为一周左右。
备注:因为从日起,国家实行三证(组织机构代码证,企业营业执照,税务登记证)合一,所以组织机构代码处填写-工商执照注册号,同样,组织机构代码证,上传-企业工商营业执照。
备注2:进行开发者资质认证需要支付300元人名币/年,只有具备开发者资质认证的开发者才能够使用app支付,授权登录等接口。
2.申请APP_ID/APP_KEY
每个应用/游戏要调用微信的接口都需要有一个微信标志,这个唯一标志通常成为APP_ID或者APP_KEY,各开放平台差异不大
进入管理中心,创建移动应用,每个开发者具有10个应用的创建机会,好在创建的应用可以随时删除。已上线的应用就不建议手贱删除!!
申请appid需要填写应用信息:应用名称,包名,签名(keystore的md5值去分号小写),icon(28*28 & 108*108),app下载地址等信息,即可分配到一个appid。
备注:测试支付时,务必使用申请时填写的keystore文件签名,包名也需要核对清楚,必然无法调起支付,返回-1错误码。
3.申请支付能力
在管理中心,查看需要集成支付能力的app,找到“微信支付”一栏,点击右侧“申请开通”,填写一些企业信息后等待审核,审核时间为一周左右,审核通过后,会得到一个企业商户号及密码,对公银行卡中将收到几分钱,进入商户平台,输入收到的金钱金额以验证。验证通过后即可开始集成支付调用。在这之前,调用支付接口是无法完成支付的。
4.代码集成微信支付
支付流程图
微信支付流程图白话版:
1.客户端代码得到用户购买的商品信息,将之传给自己公司app服务器,参数包含但不限于以下:
params.put("appid", appID);
params.put("money", money);
params.put("name", goodsName);
params.put("currencytype", "CNY");
备注:以上是参数字段是我们公司服务器定义,给服务器用以获取预支付订单号prePayId用。
备注2:详细字段请参考:
2.app服务器调用微信接口,得到prePayId订单号并返回prePayId给手机客户端;
3.手机客户端使用prePayId及商品信息调起微信客户端进行支付;
3.1用户操作:输入密码进行支付;返回键取消支付;网络无连接支付失败等;
4.微信客户端回调支付结果给咱们的APP客户端;
5.微信服务器异步通知咱们公司app服务器支付结果(服务器的工作,与客户端无关)
微信支付代码:
IWXAPI mWxApi = WXAPIFactory.createWXAPI(mContext, WX_APPID, true);
mWxApi.registerApp(WX_APPID);
* 请求app服务器得到的回调结果
public void onGet(JSONObject jsonObject) {
if (mWxApi != null) {
PayReq req = new PayReq();
req.appId = WX_APPID;
req.partnerId = jsonObject.getString("partnerid");
req.prepayId = jsonObject.getString("prepayid");
req.nonceStr = jsonObject.getString("noncestr");
req.timeStamp = jsonObject.getString("timestamp");
req.packageValue = jsonObject.getString("package");
req.sign = jsonObject.getString("sign");
} catch (JSONException e) {
e.printStackTrace();
mWxApi.sendReq(req);
Log.d("发起微信支付申请");
在app包下新建wxapi包,比如app包名为com.xiongit.app,那个新建的包路径为com.xiongit.app.wxapi,该包下新建WXPayEntryActivity,继承自任意Activity。该Activity用以接收支付结果回调,清单声明此Activity的格式为
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop"/&
WXPayEntryActivity代码示例
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
private IWXAPI
private static final String APP_ID = "your app id";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pay_result);
api = WXAPIFactory.createWXAPI(this, APP_ID);
api.handleIntent(getIntent(), this);
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
public void onReq(BaseReq req) {
* 得到支付结果回调
public void onResp(BaseResp resp) {
Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);
回调中errCode值列表:
可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
发生场景:用户不支付了,点击取消,返回APP。
清单menifest申明所需权限
android:name="android.permission.INTERNET" /&
android:name="android.permission.MODIFY_AUDIO_SETTINGS"/&
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&
备注:支付结果最终以app服务器的得到的异步通知为准。
微信SDK混淆
-keep class com.tencent.mm.sdk.** {
当支付时,微信尚未登录,得不到任何回调,如果调起支付时有弹窗进度框,并且你想在得到响应码后让它消失是行不通的,需要在跳出的onStop中处理进度条,不然未登录并且用户取消了支付时进度条无法消失。
当支付时,WXPayEntryActivity会以透明的形式启动,所以你可能需要在支付完成得到支付响应码后手动finish该activity,不然你自己写的支付页面的activity需要返回两次才能退出,因为第一次按下back键实际是finish掉WXPayEntryActivity.第二次才是你自己的activity.
完事了,祝各位集成微信支付成功!
本文作者xiong_it,链接:
最后附上微信官方支付demo下载:,吐槽语:官方demo下载藏的有点深。。。开放平台居然没有提供下载,放在微信支付商户平台。
访问:347710次
积分:3468
排名:第11343名
原创:60篇
评论:171条
阅读:8008
阅读:6400
阅读:128189
(2)(1)(2)(1)(1)(1)(1)(6)(3)(3)(1)(1)(1)(2)(1)(2)(1)(3)(2)(2)(1)(2)(3)(5)(6)(4)(2)(5)(3)微信支付和零钱支付有什么区别?具体一点。_百度知道
微信支付和零钱支付有什么区别?具体一点。
微信支付是腾讯公司的支付业务品牌,微信支付提供公众号支付、APP支付、扫码支付、刷卡支付等支付方式。零钱支付是微信支付的一种方式,另外也可以从银行卡支付。1、零钱支付是微信红包和充值到微信中的钱,称为零钱,是存于微信钱包里的。零钱可以提现到绑定的银行卡,银行卡里的钱也可以充值到微信钱包里。2、微信支付默认是零钱支付,可以在支付过程中切换到银行卡支付。
电商及o2o操盘手
有区别,微信支付可以直接从你的银行卡里面提取现金支付,而零钱支付是你微信抢的红包和你充值到微信中的钱,称为零钱。两者可以互相转换
充到微信里面的钱?
是啊,微信钱包
微信钱包的钱能干嘛?
一般就是用来发红包
本回答被提问者采纳
为您推荐:
其他类似问题
微信支付的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。微信App支付全解析 - 简书
微信App支付全解析
简单介绍了微信移动支付的申请、接入、使用、确认支付结果等相关流程
0 系列文章
申请步骤直接参考
主要2个大块:
申请开通开放平台
申请支付开通商户平台
全部申请通过后,获取支付必须的参数如下:
1.1 AppID和AppSecret
开放平台创建的应用唯一标识。
登录微信开放平台,进入应用详情可查看AppID和AppSecret。
Paste_Image.png
Paste_Image.png
1.2 mch_id
微信支付申请完成之后,微信商户平台会给你的邮箱发通知邮件,里面包含开通支付的商户信息
Paste_Image.png
1.3 API秘钥
即商户支付秘钥,主要负责处理通信相关参数加密。登陆微信商户平台(账号密码在微信商户平台发来的邮件里)
点击左侧的「账户设置 - API 安全」(第一次登陆会让你安装操作证书,请先安装操作证书)。点击设置密钥,设置自己的密钥。
Paste_Image.png
1.4 商户证书
用于退款等一些需要证书验证的接口使用。在微信商户平台点击「账户中心 - API 安全」,点击「下载证书」
Paste_Image.png
证书下载后,打开压缩包会看到「apiclient_cert.pem」和「apiclient_key.pem」和rootca.pem证书。
2 接入流程
主要几个步骤:
统一下单(放在服务端,需要加密参数)
生成支付参数(放在服务端,需要生成签名)
调用客户端SDK发起支付
服务端异步接收支付结果
2.1 统一下单
$appid = "";
//你的appid
$mch_id = "";
$wx_api_key = "";
//商户api秘钥
$out_trade_no = "";
//自己业务系统生成的交易no,可以唯一标识
$client_ip = "";
//客户端ip
$notify_url = "";
//接收支付结果通知url
$UNIFIED_ORDER_URL = "https://api.mch.weixin.qq.com/pay/unifiedorder";
//统一下单地址
$data = array();
$data['appid'] = $
$data['mch_id'] =$mch_
$data['nonce_str'] = randomStr(20);
//随机20位字符串
$data['body'] = "微信移动支付测试";
$data['detail'] = "微信移动支付测试";
$data['out_trade_no'] = $out_trade_
$data['total_fee'] = 1;
//注意 单位是分
$data['spbill_create_ip'] = $client_
$data['notify_url'] = $notify_
$data['trade_type'] = "APP";
//交易类型
$data['sign'] =sign($data, $wx_api_key);
//转为xml格式
$xml_str = arrayToXmlStr($data);
//发送请求 使用封装好的curl_post
$result = curl_post($UNIFIED_ORDER_URL, $xml_str);
//解析得到的值
$get_data = simplexml_load_string($raw_data, 'SimpleXMLElement', LIBXML_NOCDATA);
$get_para = array();
$get_sign = "";
foreach ($get_data-&children() as $child)
if($child-&getName() == 'sign') {
$get_sign = strval($child);
$get_para[strval($child-&getName())] = strval($child);
if($get_para['return_code'] !== "SUCCESS") {
//return code fail
//验证签名
if(!verifySign($get_sign, $get_para, $wx_api_key)) {
//验证签名非法
//可以自行处理解析获得的参数
一些函数:
* array转成xml str
* @param $arr
public static function arrayToXmlStr($arr) {
$xml_data = new \SimpleXMLElement("&xml&&/xml&");
Func::arrayToXml($arr, $xml_data);
return $xml_data-&asXML();
* 生成指定长度的随机字符串(包含大写英文字母, 小写英文字母, 数字)
* @param $length int 需要生成的字符串的长度
* @return string 包含 大小写英文字母 和 数字 的随机字符串
public static function randomStr($length){
//生成一个包含 大写英文字母, 小写英文字母, 数字 的数组
$arr = array_merge(range(0, 9), range('a', 'z'), range('A', 'Z'));
$str = '';
$arr_len = count($arr);
for ($i = 0; $i & $ $i++)
$rand = mt_rand(0, $arr_len-1);
$str.=$arr[$rand];
* 微信签名
* @param $para mixed 带签名参数数组
* @param $wx_key string wxkey
public static function sign($para, $wx_key) {
$unsign_str = Func::createLinkString(Func::argSort($para)) . "&key=" . $wx_
$sign = strtoupper(md5($unsign_str));
* 微信签名验证
* @param $sign
* @param $para
* @param $wx_key
* @return false-验证失败 true-验证成功
public static function verifySign($sign, $para, $wx_key) {
$unsign_str = Func::createLinkString(Func::argSort($para)) . "&key=" . $wx_
$sign_str = strtoupper(md5($unsign_str));
if($sign === $sign_str) {
2.2 生成支付参数
客户端需要的支付参数是带签名的,所以最好支付参数也在服务端生成后,jsondecode后传入客户端即可直接调用
//生成支付参数
$data = array();
$data['appid'] = $
$data['mch_id'] =$mch_
$data['prepayid'] = $
//刚才统一下单生成的prepayid
$data['package'] = "Sign=WXPay";
$data['noncestr'] = randomStr(20);
$data['timestamp'] = time();
$data['sign'] =sign($data, $wx_api_key);
$pay_param = json_encode($data);
3. 调用支付
3.1 Android
注:微信支付在开放平台中填入应用对应的包名和签名,并且测试时要签名打包,不然支付失败
可以直接参考调用我二次封装过的Android SDK。
Github地址:
二次封装过的iOS SDK。
Github地址:
4 异步结果通知
注:尤其要注意通知结果验证成功后要能正确处理重复通知,放置多次发货造成资金损失
$raw_data = $GLOBALS["HTTP_RAW_POST_DATA"];
$get_data = simplexml_load_string($raw_data, 'SimpleXMLElement', LIBXML_NOCDATA);
$get_para = array();
$get_sign = "";
foreach ($get_data-&children() as $child)
if($child-&getName() == 'sign') {
$get_sign = strval($child);
$get_para[strval($child-&getName())] = strval($child);
if($get_para['return_code'] !== "SUCCESS") {
//return code fail
die("&xml&&return_code&&![CDATA[FAIL]]&&/return_code&&/xml&");
//验证签名
if(!verifySign($get_sign, $get_para, $wx_api_key)) {
//验证签名非法
die("&xml&&return_code&&![CDATA[FAIL]]&&/return_code&&/xml&");
//在这其实通知已经接受成功 可以返回成功告诉微信不用再次通知了
echo("&xml&&return_code&&![CDATA[SUCCESS]]&&/return_code&&/xml&");
//业务状态码判断
if ($get_para['result_code'] !== 'SUCCESS') {
//状态码错误
//支付错误 更改订单状态 记录log等
//支付成功 更改订单状态 记录log等
客户端收到同步支付结果后建议一段时间内轮询检查服务端,获取服务端的结果,支付最终状态以服务端为准
更多文章关注我的公众号
我的公众号
微信公众号:Tsy远
Github:https://github.com/tsy12321
所有文章及以后更新已经迁移至掘金,地址是 https://juejin.im/user/cfecf
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
简单介绍了微信扫码支付的申请、接入、使用、确认支付结果等相关流程 0 系列文章 系列一 微信App支付全解析系列二 支付宝App支付全解析系列三 微信公众号支付全解析系列四 微信扫码支付全解析系列五 支付宝即时到账支付全解析系列六 微信退款全解析系列七 支付宝退款全解析系列...
简单介绍了微信公众号支付的申请、接入、使用、确认支付结果等相关流程 0 系列文章 系列一 微信App支付全解析系列二 支付宝App支付全解析系列三 微信公众号支付全解析系列四 微信扫码支付全解析系列五 支付宝即时到账支付全解析系列六 微信退款全解析系列七 支付宝退款全解析系...
微信支付文档 1.微信支付简介 a)功能简介 b)支付账户 c)支付方式 d)账号测试 2.JS API支付接口 a)支付场景 b)功能交互 c)获取当前微信版本号 d)显示微信安全支付标题 e)JS API支付接口(getBrandWCPayRequest)定义 f)订单...
引言 秋高气爽,天气转凉,正是学习工作做的好时候。(~ ̄▽ ̄)~~(~ ̄▽ ̄)~ 我是个phper最近在写微信支付(APP支付),微信给的官方文档并不是很详细也没有dome之类的代码啥的(对于新手来说比较麻烦),本人是新手以前也没写过支付,踩了好多坑,所以想写篇文章给没写过...
秋 高 云 善 舞, 幽 谷 荡 长 风。 遍 野 铺 苍 翠, 群 峦 起 纵 横。 山 高 惊 赤 焰 , 海 阔 跃 鲲 鹏。 伟 迹 留 青 史, 飞 鸿 远 誉 声。 注: 赤焰与鲲鹏皆为传说中的神兽、神鸟。 得诗友春来木棉开指点而修改
他俩认识也有三年的光景了,更准确地说,他们知道彼此的存在也已经三年又四个月了!从青葱岁月的小小少年少女,到混迹江湖的熟男熟女。他们走过的路深一脚,浅一脚,就像所有热恋中的情侣一样,有过像卓文君和司马相如间的轰轰烈烈,也有过梁山伯与祝英台那样的磕磕绊绊……这些,都成为他们幸福...
1.孰主孰仆 1)我们竟然可以用自己的大脑控制自己的大脑。你的大脑并不是你,你的大脑是属于你的大脑。大脑不应成为你的主宰,你可以控制你的大脑,分清主仆很重要。 2)运用心智获得解放的例子:奥地利神经学家精神病学家维克多.弗兰克 人所拥有的任何东西,都可以被剥夺,唯独人性最后...
又见江湖,莫论山高水远;风雨流光,几多疲惫彷徨。天色,是那样的飘忽不定;人生,是依旧的未然可知。我的个小心脏里,有着花儿一样鲜活,有着鸟儿一样的灵动。幼时的我,游历青峰云烟,为夜梦流连万千,不知所云,不知所谓,执念缱绻情仇,敢为天下先。如今的我,愿化作大鹏,翱翔云海间,拨开...微信支付服务商_微信小程序_微信公众号开发_微网站_微信开发_微信推广_微信朋友圈广告_江苏微信支付服务商
&&常州大掌柜网络科技有限公司为微信支付城市服务商,主要做微信支付,微信摇一摇周边,微信公众号运营,微网站,微信营销,微信平台开发等服务,通过二维码、摇一摇周边、免费Wi-Fi连接、附近的人、线下收款结账等多种方式吸引粉丝关注该公众账号,通过手机网站开发出更多的营销功能和粉丝互动,增加和粉丝的黏着度,提高企业知名度,为企业带来更多的粉丝消费。如:微信红包、优惠券、会员卡、会员积分、大转盘、刮刮卡、水果机、商家活动等多种方式。
&&大掌柜企业文化:专业专注,服务未来;品质制胜,合作共赢。
&&大掌柜企业精神:大掌柜的人,就是帮助商户经营管理的人&
&&大掌柜企业宗旨:大掌柜,帮助商户方便收费
&&大掌柜经营理念:为商家带来便利和经营方法、为商家顾客带来方便和优惠
&&大掌柜企业目标:常州商户支付平台最大的服务商。我们不断地努力、创新、探索,只为给您最棒的体验!
客服中心
联系方式
- 销售咨询
- 技术工程师
- 售后客服
更多登录方式移领收单宝是什么?
移领收单宝是杭州移领网络科技有限公司为移动支付市场量身打造的一款集支付,营销,金融为一体的综合性智能产品,收单宝在全国的合作推广伙伴达到300余家,产品覆盖了全国大部分城市,目前使用移领收单宝实现移动支付的商户超过15余万家,每天完成的日均交易笔数已经超过120万笔,每日有超过80余万人通过移领收单宝完成移动支付,月交易流水达到15亿,年交易规模已经超百亿,在移动支付行业处于绝对优势的地位!
在未来布局中,移领将坚持以市场需求为导向,提出“支付+营销+金融”三大引擎战略,为传统商户提
供移动互联网整体解决方案,致力于通过产品、服务以及沉淀大数据的分析,助力中小企业向智能商业转型,用技术驱动商业革新,让商业更聪慧。
一码走天下,同时支持支付宝、微信、京东钱包、QQ钱包等主流支付产品
涵盖基础收银、财务对账、会员系统、各行业个性化支付方案、二次营销等功能
可随身携带的收银、对账、营销利器,满足商家随时随地做生意
解决POS机存量大,费率高的问题,智能刷机,接入移动支付
安全稳定兼容,完美对接大型商超、医药连锁。扫码立即支付,高效靠谱
在线提交申请
400电话、在线沟通 在线留言
对接渠道经理
与渠道经理详细了解 项目政策、盈利模式
预约考察洽谈
亲临移领考察了解项目具体情况
签约合作协议
与移领签署合作协议 支付加盟费用开通服务商管理平台
产品及业务培训
专业讲师一对一授课全方位培训
开拓当地市场
回到当地开展业务推广 一对一客服答疑
公司新闻/行业新闻
无现金·LIVE日志
快速开店,完美对接支付宝、微信
服务商分销系统
移领未来商圈分销管理系统
免费全国咨询热线400-
友情链接:
|||||||||||||

我要回帖

更多关于 微信第三方开发 的文章

 

随机推荐