你好,请教一个微信支付问题人工服务

你好,请问用嘀嘀打车App如何使用微信支付呢?能不能发一个详细图文解说?
1、首先你的微信要绑定上银行卡。
2、乘客在微信里“我的银行卡”界面中进入“嘀嘀打车”,输入并发送打车要去的地点;
3、在嘀嘀打车页面,可以看到附近的出租车数量及自己所在的位置,在要去的地方输入你的目的地,选择你要付的小费,点击马上叫车
4、叫车成功后,会显示司机姓名、所在出租公司、车牌号、所在方位、预计等待时间等信息。如果一定时间内没有司机接单,会提示用户重新下单。
5、等你上车后,到达目的地,司机在司机端会输入本次打车的费用。选择微信支付,弹出输入确认框。
6、弹出框中显示的是本次的打车费用及支付方式,选择微信支付,依次输入支付密码后,即可完成本次打车。
需要下载APP,通过微信支付
1月4日开始嘀嘀打车开始接入手机微信ios版1月8号安卓版也接入嘀嘀打车嘀嘀打车成接入微信唯打车软件工具/原料微信方法/步骤登录微信进入我标签选择我银行卡看嘀嘀...
最好是到嘀嘀打车的官网下载,毕竟这是网上支付,安全最重要
“我的银行卡”界面中将可以看到“嘀嘀打车”入口。 除了获取叫车服务,用户还可以使用微信支付向司机交付打车费用。与此同时,嘀嘀打车应用也已同步接入了微信 ... ...
#Cottage Garden(花园小屋度假屋)#老板会不会中文啊?
答: 好在有许多成熟的安全和网络技术,例如虚拟私有网络(VPN)和防火墙等,能够极大地提高Web服务应用的安全和性能,让开发者拥有选择安全技术的自由,而不是非得使用尚...
答: 某些ADSL调制解调器使用USB接口与电脑相连,需要在电脑上安装指定的软件以添加虚拟网卡来进行通信
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
我们公司要做一个商场,现在要做移动版web。但是手机浏览器访问,现在遇到一个问题就是,手机如何微信支付。如果用微信二维码支付,但是手机浏览器不能识别。用JSAPI提示只能在微信里面浏览。请教各位高手!
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
看微信支付文档啊。H5支付:
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
微信的h5支付可以实现在非微信浏览器(如QQ浏览器、谷歌浏览器、Safari等)中使用微信支付的场景。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
统一下单 不是会返回个连接 跳过去 应该就可以了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App分类:Android应用层
最近公司弄Ionic框架,项目中需要微信支付,无奈,把我调过去弄,期间也是几近崩溃,好在皇天不负有心人,在看别人的文档,终于是在项目中集成了微信支付,下面作为一个小白的我,想要把我的经验分享给大家,希望对大家有所帮助。
先给一个可用的demo吧(运行前先看txt文件)
这个demo是基于eclipse开发的,博主也在Android Studio开发过微信支付,原理都是一样的,大家把这个demo弄懂了,在AS上面也是一样的。
(温馨提示:大家下载下来可能会出错,也有可能不会。下面给出出错的解决方法:1.进入项目中的WeIXinPay-&Build Path-&configure build path,移除那个报错的jar包。 2.会出现资源找不到的情况,这是因为你没有v7包,下载一个v7包,或者把出错的地方都删除,只是一个主题,删除了看起来不好看而已,当然,你也可以用你有的主题。 还有一个问题需要提出来,就是你可能按照里面的text操作的仍然调不起客户端,有可能是你没有安装微信客户端,因为我没有做判断。这个demo不会出现只能成功支付一次的情况,博主亲测有效。出现只能支付一次只能说明你的签名没有对应)
1.去微信开放平台申请微信支付服务,绑定自己的应用这里具体不多讲,但是一定要申请完成,将会得到是三个参数
public static final String APP_ID = &&;
public static final String MCH_ID = &&;
public static final
String API_KEY= &&;12345678
**坑点提示:在微信开发平台设置包名和签名。这里的包名一定要和你自己的包名一样,就是manifest中的package,签名一定要和你用官方app生成的一样()。
微信会根据你的填写的包名,然后对你的keystore进行一种算法,生成你的签名。包名和签名一定要和微信开放平台的相同。不过这里需要注意的是,如果你发布的正式版本,需要用官方app重新生成签名,然后在开放平台重新设置sign,因为测试版本的keystore与正式版的keystore不一样。总之,就是你用的keystore生成的sign要和微信开放平台的时刻保持一致。**
2.准备工作做好了,接下来就是开发了,先下载微信的jar包,导入。
微信支付分为三个步骤
1.生成prepayId
protected Map&String, String& doInBackground(String... params) {
String url=String.format(params[0]);
String entity=getProductArgs();
Log.e(&Simon&,&&&&&&+entity);
byte[] buf=Util.httpPost(url, entity);
String content = new String(buf);
Log.e(&orion&, &----&+content);
Map&String,String& xml=decodeXml(content);
}12345678910111213
2.生成签名参数
private void genPayReq() {
req.appId = Constants.APP_ID
req.partnerId = Constants.MCH_ID
if (resultunifiedorder!=null) {
req.prepayId = resultunifiedorder.get(&prepay_id&)
req.packageValue = &prepay_id=&+resultunifiedorder.get(&prepay_id&)
Toast.makeText(MainActivity.this, &prepayid为空&, Toast.LENGTH_SHORT).show()
req.nonceStr = getNonceStr()
req.timeStamp = String.valueOf(genTimeStamp())
List&NameValuePair& signParams = new LinkedList&NameValuePair&()
signParams.add(new BasicNameValuePair(&appid&, req.appId))
signParams.add(new BasicNameValuePair(&noncestr&, req.nonceStr))
signParams.add(new BasicNameValuePair(&package&, req.packageValue))
signParams.add(new BasicNameValuePair(&partnerid&, req.partnerId))
signParams.add(new BasicNameValuePair(&prepayid&, req.prepayId))
signParams.add(new BasicNameValuePair(&timestamp&, req.timeStamp))
req.sign = genAppSign(signParams)
sb.append(&sign\n&+req.sign+&\n\n&)
textView.setText(sb.toString())
Log.e(&Simon&, &----&+signParams.toString())
}1234567891011121314151617181920212223242526272829303132
3.调起支付。
* 调起微信支付
private void sendPayReq() {
msgApi.registerApp(Constants.APP_ID);
msgApi.sendReq(req);
Log.i(&&&&&&&, req.partnerId);
}12345678910
下面给出完整代码
package com.alpha.live
import java.io.StringReader
import java.util.HashMap
import java.util.LinkedList
import java.util.List
import java.util.Map
import java.util.Random
import org.apache.http.NameValuePair
import org.apache.http.message.BasicNameValuePair
import org.xmlpull.v1.XmlPullParser
import com.tencent.mm.sdk.modelpay.PayReq
import com.tencent.mm.sdk.openapi.IWXAPI
import com.tencent.mm.sdk.openapi.WXAPIFactory
import android.app.Activity
import android.app.AlertDialog
import android.app.ProgressDialog
import android.os.AsyncTask
import android.os.Bundle
import android.util.Log
import android.util.Xml
import android.view.View
import android.view.View.OnClickListener
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
public class MainActivity extends Activity implements OnClickListener {
private Button submitButton
private Button confirmButton
private TextView textView
private StringBuffer sb
private Map&String,String& resultunifiedorder
private PayReq req
private final IWXAPI msgApi = WXAPIFactory.createWXAPI(this, null)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
submitButton=(Button) findViewById(R.id.bt_submit_order)
confirmButton=(Button) findViewById(R.id.bt_corfirm)
textView=(TextView) findViewById(R.id.tv_prepay_id)
submitButton.setOnClickListener(this)
confirmButton.setOnClickListener(this)
sb=new StringBuffer()
req=new PayReq()
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.bt_submit_order:
String urlString=&https://api.mch./pay/unifiedorder&
PrePayIdAsyncTask prePayIdAsyncTask=new PrePayIdAsyncTask()
prePayIdAsyncTask.execute(urlString)
case R.id.bt_corfirm:
genPayReq()
sendPayReq()
private void sendPayReq() {
msgApi.registerApp(Constants.APP_ID)
msgApi.sendReq(req)
Log.i(&&&&&&&, req.partnerId)
private long genTimeStamp() {
return System.currentTimeMillis() / 1000
private void genPayReq() {
req.appId = Constants.APP_ID
req.partnerId = Constants.MCH_ID
if (resultunifiedorder!=null) {
req.prepayId = resultunifiedorder.get(&prepay_id&)
req.packageValue = &prepay_id=&+resultunifiedorder.get(&prepay_id&)
Toast.makeText(MainActivity.this, &prepayid为空&, Toast.LENGTH_SHORT).show()
req.nonceStr = getNonceStr()
req.timeStamp = String.valueOf(genTimeStamp())
List&NameValuePair& signParams = new LinkedList&NameValuePair&()
signParams.add(new BasicNameValuePair(&appid&, req.appId))
signParams.add(new BasicNameValuePair(&noncestr&, req.nonceStr))
signParams.add(new BasicNameValuePair(&package&, req.packageValue))
signParams.add(new BasicNameValuePair(&partnerid&, req.partnerId))
signParams.add(new BasicNameValuePair(&prepayid&, req.prepayId))
signParams.add(new BasicNameValuePair(&timestamp&, req.timeStamp))
req.sign = genAppSign(signParams)
sb.append(&sign\n&+req.sign+&\n\n&)
textView.setText(sb.toString())
Log.e(&Simon&, &----&+signParams.toString())
private String genAppSign(List&NameValuePair& params) {
StringBuilder sb = new StringBuilder()
for (int i = 0
sb.append(params.get(i).getName())
sb.append('=')
sb.append(params.get(i).getValue())
sb.append('&')
sb.append(&key=&)
sb.append(Constants.API_KEY)
this.sb.append(&sign str\n&+sb.toString()+&\n\n&)
String appSign = MD5.getMessageDigest(sb.toString().getBytes())
Log.e(&Simon&,&----&+appSign)
return appSign
private class PrePayIdAsyncTask extends AsyncTask&String,Void, Map&String, String&&
private ProgressDialog dialog
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute()
dialog = ProgressDialog.show(MainActivity.this, &提示&, &正在提交订单&)
protected Map&String, String& doInBackground(String... params) {
// TODO Auto-generated method stub
String url=String.format(params[0])
String entity=getProductArgs()
Log.e(&Simon&,&&&&&&+entity)
byte[] buf=Util.httpPost(url, entity)
String content = new String(buf)
Log.e(&orion&, &----&+content)
Map&String,String& xml=decodeXml(content)
return xml
protected void onPostExecute(Map&String, String& result) {
// TODO Auto-generated method stub
super.onPostExecute(result)
if (dialog != null) {
dialog.dismiss()
sb.append(&prepay_id\n&+result.get(&prepay_id&)+&\n\n&)
textView.setText(sb.toString())
resultunifiedorder=result
public Map&String,String& decodeXml(String content) {
Map&String, String& xml = new HashMap&String, String&()
XmlPullParser parser = Xml.newPullParser()
parser.setInput(new StringReader(content))
int event = parser.getEventType()
while (event != XmlPullParser.END_DOCUMENT) {
String nodeName=parser.getName()
switch (event) {
case XmlPullParser.START_DOCUMENT:
case XmlPullParser.START_TAG:
if(&xml&.equals(nodeName)==false){
//实例化student对象
xml.put(nodeName,parser.nextText())
case XmlPullParser.END_TAG:
event = parser.next()
return xml
} catch (Exception e) {
Log.e(&Simon&,&----&+e.toString())
return null
private String getProductArgs() {
// TODO Auto-generated method stub
StringBuffer xml=new StringBuffer()
String nonceStr=getNonceStr()
xml.append(&&xml&&)
List&NameValuePair& packageParams=new LinkedList&NameValuePair&()
packageParams.add(new BasicNameValuePair(&appid&,Constants.APP_ID))
packageParams.add(new BasicNameValuePair(&body&, &APP pay test&))
packageParams.add(new BasicNameValuePair(&mch_id&, Constants.MCH_ID))
packageParams.add(new BasicNameValuePair(&nonce_str&, nonceStr))
packageParams.add(new BasicNameValuePair(&notify_url&, &&))
packageParams.add(new BasicNameValuePair(&out_trade_no&,genOutTradNo()))
packageParams.add(new BasicNameValuePair(&total_fee&, &1&))
packageParams.add(new BasicNameValuePair(&trade_type&, &APP&))
String sign=getPackageSign(packageParams)
packageParams.add(new BasicNameValuePair(&sign&, sign))
String xmlString=toXml(packageParams)
return xmlString
} catch (Exception e) {
// TODO: handle exception
return null
//生成订单号,测试用,在客户端生成
private String genOutTradNo() {
Random random = new Random()
return &dasgfsdg1234&
return MD5.getMessageDigest(String.valueOf(random.nextInt(10000)).getBytes())
//生成随机号,防重发
private String getNonceStr() {
// TODO Auto-generated method stub
Random random=new Random()
return MD5.getMessageDigest(String.valueOf(random.nextInt(10000)).getBytes())
private String getPackageSign(List&NameValuePair& params) {
StringBuilder sb = new StringBuilder()
for (int i = 0
sb.append(params.get(i).getName())
sb.append('=')
sb.append(params.get(i).getValue())
sb.append('&')
sb.append(&key=&)
sb.append(Constants.API_KEY)
String packageSign = MD5.getMessageDigest(sb.toString().getBytes()).toUpperCase()
Log.e(&Simon&,&&&&&&+packageSign)
return packageSign
private String toXml(List&NameValuePair& params) {
StringBuilder sb = new StringBuilder()
sb.append(&&xml&&)
for (int i = 0
sb.append(&&&+params.get(i).getName()+&&&)
sb.append(params.get(i).getValue())
sb.append(&&/&+params.get(i).getName()+&&&)
sb.append(&&/xml&&)
Log.e(&Simon&,&&&&&&+sb.toString())
return sb.toString()
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
接下来就是有个支付结果的页面代码。是微信官方提供的一个类。你要在manifest注册这个类。这里需要注意的是,这个类必须放在wxapi包下,你自己新建一个包即可。
为了大家可以直接运行这个demo,我的微信加签都是在本地执行的,获取prepayid和加签都应该在服务端完成,还有最终的支付返回结果也是以服务端的为准。
*下面给出运行结果图*
大家下载demo然后把参数换了,弄下keystore,包名,签名。应该就可以用了。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4357次
排名:千里之外
原创:15篇
转载:16篇
(1)(7)(4)(14)(1)(1)(1)(2)

我要回帖

更多关于 微信支付常见问题 的文章

 

随机推荐