C#支付宝扫码支付代码完整版(转)

C#支付宝扫码支付代码完整版

2018年08月24日 15:46:39 bruce135lee 阅读数:2948

本文实例为大家分享了C#支付宝扫码支付示的具体代码,供大家参考,具体内容如下

支付宝工具类

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341


using System;

using System.Collections.Generic;

using System.Linq;

using System.Security.Cryptography;

using System.Text;

using System.Web;

 

namespace ZK_ECommerce.Shop.pay.alipay

{

  public class AliPay

  {

 

    public static string GetMD5(string s, string _input_charset)

    {

 

      /// <summary>

      /// 与ASP兼容的MD5加密算法

      /// </summary>

 

      MD5 md5 = new MD5CryptoServiceProvider();

      byte[] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(s));

      StringBuilder sb = new StringBuilder(32);

      for (int i = 0; i < t.Length; i++)

      {

        sb.Append(t[i].ToString("x").PadLeft(2, ‘0‘));

      }

      return sb.ToString();

    }

 

    public static string[] BubbleSort(string[] r)

    {

      /// <summary>

      /// 冒泡排序法

      /// </summary>

 

      int i, j; //交换标志 

      string temp;

 

      bool exchange;

 

      for (i = 0; i < r.Length; i++) //最多做R.Length-1趟排序 

      {

        exchange = false//本趟排序开始前,交换标志应为假

 

        for (j = r.Length - 2; j >= i; j--)

        {

          if (System.String.CompareOrdinal(r[j + 1], r[j]) < 0) //交换条件

          {

            temp = r[j + 1];

            r[j + 1] = r[j];

            r[j] = temp;

 

            exchange = true//发生了交换,故将交换标志置为真 

          }

        }

 

        if (!exchange) //本趟排序未发生交换,提前终止算法 

        {

          break;

        }

 

      }

      return r;

    }

 

    public string CreatUrl(

      string gateway,

      string service,

      string partner,

      string sign_type,

      string out_trade_no,

      string subject,

      string body,

      string payment_type,

      string total_fee,

      string show_url,

      string seller_email,

      string key,

      string return_url,

      string _input_charset,

      string notify_url,

      string extra_common_param = ""

      )

    {

      return CreatUrl(

      gateway,

      service,

      partner,

      sign_type,

      out_trade_no,

      subject,

      body,

      payment_type,

      total_fee,

      show_url,

      seller_email,

      key,

      return_url,

      _input_charset,

      notify_url,

      "",

      extra_common_param);

    }

 

 

 

    public string CreatUrl(

      string gateway,

      string service,

      string partner,

      string sign_type,

      string out_trade_no,

      string subject,

      string body,

      string payment_type,

      string total_fee,

      string show_url,

      string seller_email,

      string key,

      string return_url,

      string _input_charset,

      string notify_url,

      string token,

      string extra_common_param = ""

      )

    {

      /// <summary>

      ///2015年11月17日14:08:00

      /// </summary>

      int i;

      string[] Oristr;

      //构造数组;

      if (!string.IsNullOrEmpty(token))

      {

        if (extra_common_param == "COD2MOTOPAY")

        {

          Oristr = new[]{ 

          "service="+service, 

          "partner=" + partner, 

          "subject=" + subject, 

          "body=" + body, 

          "out_trade_no=" + out_trade_no, 

          "total_fee=" + total_fee, 

          "show_url=" + show_url, 

          "payment_type=" + payment_type, 

          "seller_email=" + seller_email, 

          "notify_url=" + notify_url,

          "_input_charset="+_input_charset,     

          "return_url=" + return_url,

          "token="+token,

          "extra_common_param="+extra_common_param

          };

        }

        else

        {

          Oristr = new[]{ 

          "service="+service, 

          "partner=" + partner, 

          "subject=" + subject, 

          "body=" + body, 

          "out_trade_no=" + out_trade_no, 

          "total_fee=" +total_fee, 

          "show_url=" + show_url, 

          "payment_type=" + payment_type, 

          "seller_email=" + seller_email, 

          "notify_url=" + notify_url,

          "_input_charset="+_input_charset,     

          "return_url=" + return_url,

          "token="+token

          };

        }

 

      }

      else

      {

        if (extra_common_param == "COD2MOTOPAY")

        {

          Oristr = new[]{ 

          "service="+service, 

          "partner=" + partner, 

          "subject=" + subject, 

          "body=" + body, 

          "out_trade_no=" + out_trade_no, 

          "total_fee="+total_fee, 

          "show_url=" + show_url, 

          "payment_type=" + payment_type, 

          "seller_email=" + seller_email, 

          "notify_url=" + notify_url,

          "_input_charset="+_input_charset,     

          "return_url=" + return_url,

          "extra_common_param="+extra_common_param

          };

        }

        else

        {

          Oristr = new[]{ 

          "service="+service, 

          "partner=" + partner, 

          "subject=" + subject, 

          "body=" + body, 

          "out_trade_no=" + out_trade_no, 

          "total_fee=" + total_fee, 

          "show_url=" + show_url, 

          "payment_type=" + payment_type, 

          "seller_email=" + seller_email, 

          "notify_url=" + notify_url,

          "_input_charset="+_input_charset,     

          "return_url=" + return_url

          };

        }

 

 

      }

      //进行排序;

      string[] Sortedstr = BubbleSort(Oristr);

 

 

      //构造待md5摘要字符串 ;

 

      StringBuilder prestr = new StringBuilder();

 

      for (i = 0; i < Sortedstr.Length; i++)

      {

        if (i == Sortedstr.Length - 1)

        {

          prestr.Append(Sortedstr[i]);

 

        }

        else

        {

 

          prestr.Append(Sortedstr[i] + "&");

        }

 

      }

 

      prestr.Append(key);

 

      //生成Md5摘要;

      string sign = GetMD5(prestr.ToString(), _input_charset);

 

      //构造支付Url;

      char[] delimiterChars = { ‘=‘ };

      StringBuilder parameter = new StringBuilder();

      parameter.Append(gateway);

      for (i = 0; i < Sortedstr.Length; i++)

      {

 

        parameter.Append(Sortedstr[i].Split(delimiterChars)[0] + "=" + HttpUtility.UrlEncode(Sortedstr[i].Split(delimiterChars)[1]) + "&");

      }

 

      parameter.Append("sign=" + sign + "&sign_type=" + sign_type);

 

 

      //返回支付Url;

      return parameter.ToString();

 

    }

 

    public string CreatUrl_MissPayments(

                string gateway,

                string service,

                string partner,

                string sign_type,

                string out_trade_no,

                string key,

                string _input_charset

 

     )

    {

      /// <summary>

      /// created by sunzhizhi 2006.5.21,[email protected]。

      /// </summary>

      int i;

 

      //构造数组;

      string[] Oristr ={ 

        "service="+service, 

        "partner=" + partner,

        "out_trade_no=" + out_trade_no,   

        "_input_charset="+_input_charset     

 

        };

 

      //进行排序;

      string[] Sortedstr = BubbleSort(Oristr);

 

 

      //构造待md5摘要字符串 ;

 

      StringBuilder prestr = new StringBuilder();

 

      for (i = 0; i < Sortedstr.Length; i++)

      {

        if (i == Sortedstr.Length - 1)

        {

          prestr.Append(Sortedstr[i]);

 

        }

        else

        {

 

          prestr.Append(Sortedstr[i] + "&");

        }

 

      }

 

      prestr.Append(key);

 

      //生成Md5摘要;

      string sign = GetMD5(prestr.ToString(), _input_charset);

 

      //构造支付Url;

      char[] delimiterChars = { ‘=‘ };

      StringBuilder parameter = new StringBuilder();

      parameter.Append(gateway);

      for (i = 0; i < Sortedstr.Length; i++)

      {

 

        parameter.Append(Sortedstr[i].Split(delimiterChars)[0] + "=" + HttpUtility.UrlEncode(Sortedstr[i].Split(delimiterChars)[1]) + "&");

      }

 

      parameter.Append("sign=" + sign + "&sign_type=" + sign_type);

 

 

      //返回支付Url;

      return parameter.ToString();

 

    }

 

 

    public static string GetTranSign(string TranData)

    {

      if (string.IsNullOrWhiteSpace(TranData))

        return null;

      string sign = GetMD5(TranData + "alskdjfaow;fjel;asdjf""utf-8");

      return sign;

    }

 

  }

}

页面处理

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299


using System;

using System.Collections.Generic;

using System.Collections.Specialized;

using System.IO;

using System.Linq;

using System.Net;

using System.Security.Cryptography;

using System.Text;

using System.Web;

using System.Web.Mvc;

using ZK_ECommerce.Shop.pay.alipay;

 

namespace Alipay.Controllers

{

  public class ApliayDemoController : Controller

  {

    /// <summary>

    /// 支付页面

    /// </summary>

    /// <param name="ordercode"></param>

    /// <returns></returns>

    public ActionResult Index(string ordercode)

    {

 

 

      string out_trade_no = ordercode;

      string gateway = "https://mapi.alipay.com/gateway.do?"; //支付接口

      string service = "create_direct_pay_by_user";

      string partner = "";    //partner合作伙伴ID保留字段

      string sign_type = "MD5";

      string payment_type = "1";         //支付类型 

      string show_url = "http://www.letao.com";

      string seller_email = "";       //卖家账号

      string key = "";       //partner账户的支付宝安全校验码

      string return_url = "http://localhost:1396/ApliayDemo/ApliyReturn"; //服务器通知返回接口

      string notify_url = "http://localhost:1396/ApliayDemo/AlipayNotify"; //服务器通知返回接口

      string _input_charset = "utf-8";

      string extra_common_param = "COD2MOTOPAY";//表示快捷支付 

      string token = string.Empty;

      if (string.IsNullOrEmpty(token))

        token = "";

      string subject = "康康体检套餐"// subject商品名称

      string body = "测试商品"//商品描述  

      string total_fee = "0.01";

      AliPay ap = new AliPay();

      string aliay_url = ap.CreatUrl(gateway, service, partner, sign_type, out_trade_no, subject, body, payment_type,

                      total_fee, show_url, seller_email, key, return_url, _input_charset, notify_url, token, extra_common_param);

 

      return Redirect(aliay_url);

 

 

    }

 

 

    /// <summary>

    /// 返回通知页面

    /// </summary>

    /// <returns></returns>

    public ActionResult ApliyReturn()

    {

 

      string alipayNotifyURL = "https://mapi.alipay.com/gateway.do?";

      string key = ""//partner 的对应交易安全校验码(必须填写)

      string _input_charset = "utf-8";

      string partner = "";    //partner合作伙伴id(必须填写)

 

      alipayNotifyURL = alipayNotifyURL + "service=notify_verify" "&partner=" + partner + "¬ify_id=" + Request.QueryString["notify_id"];

 

      //获取支付宝ATN返回结果,true是正确的订单信息,false 是无效的

      string responseTxt = Get_Http(alipayNotifyURL, 120000);

 

      int i;

      NameValueCollection coll;

      coll = Request.QueryString;

      String[] requestarr = coll.AllKeys;

      //进行排序;

      string[] Sortedstr = BubbleSort(requestarr);

 

      //构造待md5摘要字符串 ;

 

      StringBuilder prestr = new StringBuilder();

 

      for (i = 0; i < Sortedstr.Length; i++)

      {

        if (Request.Form[Sortedstr[i]] != "" && Sortedstr[i] != "sign" && Sortedstr[i] != "sign_type")

        {

          if (i == Sortedstr.Length - 1)

          {

            prestr.Append(Sortedstr[i] + "=" + Request.QueryString[Sortedstr[i]]);

          }

          else

          {

            prestr.Append(Sortedstr[i] + "=" + Request.QueryString[Sortedstr[i]] + "&");

 

          }

        }

 

 

      }

 

      prestr.Append(key);

      string mysign = GetMD5(prestr.ToString(), _input_charset);

      string sign = Request.QueryString["sign"];

      string trade_status = Request.QueryString["trade_status"];

 

      if (mysign == sign && responseTxt == "true" && trade_status == "TRADE_SUCCESS")  //验证支付发过来的消息,签名是否正确

      {

        string order_amount = Request.QueryString["total_fee"].ToString().Trim();

        string order_code = Request.QueryString["out_trade_no"].ToString().Trim();

 

        

        //updateOrder(order_code);//更新订单状态

        Response.Redirect(""); //跳转到支付成功页面

      }

      else

      {

 

        Response.Write("支付失败。");

        Response.Write("<br>Result:responseTxt=" + responseTxt);

        Response.Write("<br>Result:mysign=" + mysign);

        Response.Write("<br>Result:sign=" + sign);

      }

      return View();

    }

 

 

    /// <summary>

    /// 支付回调页面

    /// </summary>

    /// <returns></returns>

    public ActionResult AlipayNotify()

    {

 

 

      string alipayNotifyURL = "https://mapi.alipay.com/gateway.do?";

      string partner = "";    //partner合作伙伴id(必须填写)

      string key = ""//partner 的对应交易安全校验码(必须填写)

 

      alipayNotifyURL = alipayNotifyURL + "service=notify_verify" "&partner=" + partner + "¬ify_id=" + Request.Form["notify_id"];

 

      //获取支付宝ATN返回结果,true是正确的订单信息,false 是无效的

      string responseTxt = Get_Http(alipayNotifyURL, 120000);

 

      int i;

      NameValueCollection coll;

      //Load Form variables into NameValueCollection variable.

      coll = Request.Form;

 

      // Get names of all forms into a string array.

      String[] requestarr = coll.AllKeys;

      //进行排序;

      string[] Sortedstr = BubbleSort(requestarr);

      //构造待md5摘要字符串 ;

      StringBuilder prestr = new StringBuilder();

 

      for (i = 0; i < Sortedstr.Length; i++)

      {

        if (Request.Form[Sortedstr[i]] != "" && Sortedstr[i] != "sign" && Sortedstr[i] != "sign_type")

        {

          if (i == Sortedstr.Length - 1)

          {

            prestr.Append(Sortedstr[i] + "=" + Request.QueryString[Sortedstr[i]]);

          }

          else

          {

            prestr.Append(Sortedstr[i] + "=" + Request.QueryString[Sortedstr[i]] + "&");

 

          }

        }

 

 

      }

 

      prestr.Append(key);

      string mysign = GetMD5(prestr.ToString());

      string sign = Request.QueryString["sign"];

      string trade_status = Request.QueryString["trade_status"];

 

      if (mysign == sign && responseTxt == "true" && trade_status == "TRADE_SUCCESS")  //验证支付发过来的消息,签名是否正确

      {

        string order_amount = Request.QueryString["total_fee"].ToString().Trim();

        string order_code = Request.QueryString["out_trade_no"].ToString().Trim();

 

 

        

        // updateOrder(order_code);//更新订单状态

        Response.Redirect(""); //跳转到支付成功页面

      }

      else

      {

 

        Response.Write("支付失败。");

        Response.Write("<br>Result:responseTxt=" + responseTxt);

        Response.Write("<br>Result:mysign=" + mysign);

        Response.Write("<br>Result:sign=" + sign);

      }

      return View();

    }

 

    public static string GetMD5(string s, string _input_charset)

    {

      /// <summary>

      /// 与ASP兼容的MD5加密算法

      /// </summary>

 

      MD5 md5 = new MD5CryptoServiceProvider();

      byte[] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(s));

      StringBuilder sb = new StringBuilder(32);

      for (int i = 0; i < t.Length; i++)

      {

        sb.Append(t[i].ToString("x").PadLeft(2, ‘0‘));

      }

      return sb.ToString();

    }

 

 

 

    public static string GetMD5(string s)

    {

      /// <summary>

      /// 与ASP兼容的MD5加密算法

      /// </summary>

 

      MD5 md5 = new MD5CryptoServiceProvider();

      byte[] t = md5.ComputeHash(Encoding.GetEncoding("utf-8").GetBytes(s));

      StringBuilder sb = new StringBuilder(32);

      for (int i = 0; i < t.Length; i++)

      {

        sb.Append(t[i].ToString("x").PadLeft(2, ‘0‘));

      }

      return sb.ToString();

    }

 

    public static string[] BubbleSort(string[] r)

    {

      /// <summary>

      /// 冒泡排序法

      /// </summary>

 

      int i, j; //交换标志 

      string temp;

 

      bool exchange;

 

      for (i = 0; i < r.Length; i++) //最多做R.Length-1趟排序 

      {

        exchange = false//本趟排序开始前,交换标志应为假

 

        for (j = r.Length - 2; j >= i; j--)

        {

          if (System.String.CompareOrdinal(r[j + 1], r[j]) < 0) //交换条件

          {

            temp = r[j + 1];

            r[j + 1] = r[j];

            r[j] = temp;

 

            exchange = true//发生了交换,故将交换标志置为真 

          }

        }

 

        if (!exchange) //本趟排序未发生交换,提前终止算法 

        {

          break;

        }

 

      }

      return r;

    }

    //获取远程服务器ATN结果

    public String Get_Http(String a_strUrl, int timeout)

    {

      string strResult;

      try

      {

 

        HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(a_strUrl);

        myReq.Timeout = timeout;

        HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();

        Stream myStream = HttpWResp.GetResponseStream();

        StreamReader sr = new StreamReader(myStream, Encoding.Default);

        StringBuilder strBuilder = new StringBuilder();

        while (-1 != sr.Peek())

        {

          strBuilder.Append(sr.ReadLine());

        }

 

        strResult = strBuilder.ToString();

      }

      catch (Exception exp)

      {

 

        strResult = "错误:" + exp.Message;

      }

 

      return strResult;

    }

 

  }

}

原文地址:https://www.cnblogs.com/LiZhongZhongY/p/10957455.html

时间: 2024-08-03 03:16:37

C#支付宝扫码支付代码完整版(转)的相关文章

微信支付宝扫码支付相关接口

微信支付宝扫码支付相关接口 ##################支付宝扫码支付################## 当面付--扫码支付:商户专柜或者收银台打印或者副屏展示支付宝二维码,用户使用支付宝钱包扫码工具扫描二维码,并在手机端完成付款. 文档中心:http://doc.open.alipay.com/doc2/detail?spm=0.0.0.0.E3tvGh&treeId=26&articleId=103286&docType=1SDK下载地址:http://doc.ope

WooCommerce 支付宝扫码支付与银行直连

支付宝银行直连网关目前仅支付宝企业账户可申请使用. AliPay QR/Bank for WooCommerce 是一个WordPress 插件,用途是为 WooCommerece 添加支付宝扫码支付和/或支付宝银行支付网关. 版本更新 0.9.0   : 初始发布; 测试截图 选中 "支付宝扫码或使用银行付款": 支付宝扫码支付(当前顾客没有登录支付宝账户时可用): 支付宝APP扫码: 扫码付款成功: 扫码支付后,支付宝同步跳转回网站 (测试截图中的英文字符已提供对应的中文语言包):

支付宝扫码支付的解决方案!及扫描枪的选择!

应用背景: 移动互联网时代的发展是不可逆的,未来大众的消费习惯都在移动端.如何利用条码,连接消费者和商户,并通过手机完成支付,使整个支付过程更加便捷.更加灵活.支付宝以超强的创新能力和市场开拓能力,成为条码支付的领导者.支付宝在推广的过程中急需将想法落地,经过反复测试及针对多家厂家的设备进行对比,最终支付宝选择了万酷的VS5612及VS5621G两款设备,实现了条码支付的解决方案. 解决方案: 条码支付是用户在线下购买完商品进行结算时,商家通过万酷条码扫描枪对用户手机上的付款码进行扫描,从而完成

支付宝扫码支付开发备忘

1.首先当然得注册有支付宝账号,最好是企业支付宝账号 2.进入支付宝开放平台的开发者中心:https://openhome.alipay.com/platform/developerIndex.htm 申请应用 3.申请应用之后,设置好应用图标.需要添加的功能为当面付和第三方应用授权,这个后续需要签约,否则调用接口会提示权限不够 4.设置应用网关 也就是支付成功之后的后台通知地址 5.设置应用公钥,这个非常重要,选择RSA2(SHA256)密钥(推荐),下载支付宝提供的RSA签名验签工具:htt

支付宝扫码支付

应用场景二维码收款 接口官方文档:https://doc.open.alipay.com/doc2/apiDetail.htm?spm=a219a.7395905.0.0.O4mxCP&docType=4&apiId=862 过程通过调用接口得到官方的二维码地址,然后再将其展示出来 问题签名&验证略麻烦,官方文档:https://doc.open.alipay.com/doc2/detail.htm?treeId=200&articleId=105351&docTy

支付宝开发 - 扫码支付

关键字:支付宝支付.支付宝扫码支付 一.支付场景 用户使用支付宝钱包上的"扫一扫"功能,扫码商户针对每个订单实时生成的订单二维码,并在手机端确认支付. 二.调用流程 图2.1 支付宝扫码支付调用流程 a. 商户系统调用支付宝[预下单接口alipay.trade.precreate],获得该订单二维码图片地址. b. 发起轮询获得支付结果:等待5秒后调用[交易查询接口alipay.trade.query],通过支付时传入的商户订单号(out_trade_no)查询支付结果(返回参数TRA

支付宝线下门店扫码支付开发

支付宝扫码支付 一.开发前准备 https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.B6xA20&treeId=26&articleId=103239&docType=1 1.开通支付宝企业号 2.签约认证 3.创建应用,审核通过. 4.上传应用公钥. 二.开发demo从支付宝官网下载 alipay-sdk-java-ALL20150604113758-source.jar alipay-sdk-java-ALL20150

支付宝扫码答奥数 5分钟做出来可免单

6月22日消息,支付宝是个很会玩的应用,支付宝扫码支付已经成为大家的日常, 但扫二维码出现小学奥数题,答对吃饭免单还是头一次.这样的新玩法你见过吗? 会玩!支付宝扫码答奥数 5分钟做出来可免单 据了解,在四川农业大学成都校区,有一家叫做"不挂科"的餐厅.昨天,这家餐厅推出了支付宝扫码抽奖游戏.来店里吃饭的顾客, 只要用支付宝扫描桌上的口碑码,就有可能扫出一道小学奥数题.如果能够在5分钟内答对这道题,老板就会免掉顾客的这顿饭钱. "不挂科"的老板左腾和谢龙云说, 餐厅

微信支付之扫码支付

选择支付模式 点开链接先去了解一下微信支付模式: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=2_1 web一般选择都是扫码支付. 类似于这个: 准备账号 公众账号ID(AppID) 首先要申请一个公共账号,最好申请的时候就是服务号,因为微信支付的前提必须是服务号 如果是公众号需要先申请验证才能升级为服务号. 下面链接可以帮助你去找到这个账号: http://jingyan.baidu.com/article/22fe7c