博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NopCommerce Alipay 支付插件
阅读量:5236 次
发布时间:2019-06-14

本文共 8664 字,大约阅读时间需要 28 分钟。

NopCommerce Alipay 支付插件

 

1.查找及下载NopCommerce Alipay插件

 

2.解压并添加到项目

按照Readme.txt

1. 'Nop.Plugin.Payments.AliPay' directory contains source code.

2. 'Payments.AliPay' contains binaries. Just drop it into \Plugins directory on your server.

将相应的3.80文件夹下的文件 放置指定位置

Payments.AliPay -》 nopCommerce_3.80\Presentation\Nop.Web\Plugins

Nop.Plugin.Payments.AliPay -》nopCommerce_3.80\Plugins

在解决方案的Plugins Add Existing Item 

 

Nop.Plugin.Payments.AliPay.AliPayPaymentProcessor

/// /// Post process payment (used by payment gateways that require redirecting to a third-party URL)/// /// Payment info required for an order processingpublic void PostProcessPayment(PostProcessPaymentRequest postProcessPaymentRequest){         //string gateway = "https://www.alipay.com/cooperate/gateway.do?";          var sellerEmail = _aliPayPaymentSettings.SellerEmail;         var key = _aliPayPaymentSettings.Key;         var partner = _aliPayPaymentSettings.Partner;         var outTradeNo = postProcessPaymentRequest.Order.Id.ToString();         var subject = _storeContext.CurrentStore.Name;         var body = "Order from " + _storeContext.CurrentStore.Name;         var totalFee = postProcessPaymentRequest.Order.OrderTotal.ToString("0.00", CultureInfo.InvariantCulture);         var notifyUrl = _webHelper.GetStoreLocation(false) + "Plugins/PaymentAliPay/Notify";         var returnUrl = _webHelper.GetStoreLocation(false) + "Plugins/PaymentAliPay/Return";          string[] para ={                                                  "service=" + Service,                                                  "partner=" + partner,                                                  "seller_email=" + sellerEmail,                                                  "out_trade_no=" + outTradeNo,                                                  "subject=" + subject,                                                  "body=" + body,                                                  "total_fee=" + totalFee,                                                  "show_url=" + ShowUrl,                                                  "payment_type=1",                                                  "notify_url=" + notifyUrl,                                                  "return_url=" + returnUrl,                                                  "_input_charset=" + InputCharset                                        };          var aliayUrl = CreatUrl(para, InputCharset, key);          var post = new RemotePost         {                   FormName = "alipaysubmit",                   Url = "https://www.alipay.com/cooperate/gateway.do?_input_charset=utf-8",                   Method = "POST"         };          post.Add("service", Service);         post.Add("partner", partner);         post.Add("seller_email", sellerEmail);         post.Add("out_trade_no", outTradeNo);         post.Add("subject", subject);         post.Add("body", body);         post.Add("total_fee", totalFee);         post.Add("show_url", ShowUrl);         post.Add("return_url", returnUrl);         post.Add("notify_url", notifyUrl);         post.Add("payment_type", "1");         post.Add("sign", aliayUrl);         post.Add("sign_type", SignType);          post.Post();}

 

 

Alipay请求参数说明

 

 

 

 

解决方案 Clean 和 Rebuild

运行站点

 

3.安装插件

Admin -> Configuration -> Plugins -> Local plugins

 

4.配置插件

Admin -> Configuration -> Payment -> Payment methods -> Configure

 

 

aliPay_partner:商户PID

aliPay_seller:商户支付宝

aliPay_rsaPriKey:生成的private_key

aliPay_rsaPubKey:生成的public_key

 

 

 

配置信息将保存在Setting表中

 

 

 

5.启用插件

Admin -> Configuration -> Payment -> Payment methods -> Edit

 

6.前台查看

 

 

附 Alipay请求参数说明

 

请求参数说明

更新时间:2016/05/31                         访问次数:143285                    
 

                

请求参数是商户在与支付宝进行数据交互时,提供给支付宝的请求数据,以便支付宝根据这些数据进一步处理。

参数

参数名称

类型(字节长度)

参数说明

是否可为空

样例

基本参数

service

接口名称

String

接口名称。

不可空

create_direct_pay_by_user

partner

合作者身份ID

String(16)

签约的支付宝账号对应的支付宝唯一用户号。

以2088开头的16位纯数字组成。

不可空

2088101011913539

_input_charset

参数编码字符集

String

商户网站使用的编码格式,如utf-8、gbk、gb2312等。

不可空

gbk

sign_type

签名方式

String

DSA、RSA、MD5三个值可选,必须大写。

不可空

MD5

sign

签名

String

请参见本文档“附录:签名与验签”。

不可空

7d314d22efba4f336fb187697793b9d2

notify_url

服务器异步通知页面路径

String(190)

支付宝服务器主动通知商户网站里指定的页面http路径。

可空

http://api.test.alipay.net/atinterface/receive_return.htm

return_url

页面跳转同步通知页面路径

String(200)

支付宝处理完请求后,当前页面自动跳转到商户网站里指定页面的http路径。

可空

http://api.test.alipay.net/atinterface/receive_return.htm

业务参数

out_trade_no

商户网站唯一订单号

String(64)

支付宝合作商户网站唯一订单号。

不可空

6843192280647118

subject

商品名称

String(256)

商品的标题/交易标题/订单标题/订单关键字等。

该参数最长为128个汉字。

不可空

贝尔金护腕式

payment_type

支付类型

String(4)

只支持取值为1(商品购买)。

不可空

1

total_fee

交易金额

Number

该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。

不可空

100

seller_id

卖家支付宝用户号

String(16)

  • seller_id是以2088开头的纯16位数字。
  • seller_email是支付宝登录账号,格式一般是邮箱或手机号。
  • seller_account_name是卖家支付宝账号别名。

三个参数至少必须传递一个。

当签约账号就是收款账号时,请务必使用参数seller_id,即seller_id的值与partner的值相同。

三个参数的优先级别是:seller_id>seller_account_name>seller_email。

不可空

2088002007018966

seller_email

卖家支付宝账号

String(100)

alipay-test01@alipay.com

seller_account_name

卖家支付宝账号别名

String(100)

tstable02@alipay.com

buyer_id

买家支付宝用户号

String(16)

  • buyer_id是以2088开头的纯16位数字。
  • buyer_email是支付宝登录账号,格式一般是邮箱或手机号。
  • buyer_account_name是买家支付宝账号别名。

三个参数的优先级别是:buyer_id>buyer_account_name>buyer_email。

可空

2088002007018955

buyer_email

买家支付宝账号

String(100)

tstable01@alipay.com

buyer_account_name

买家支付宝账号别名

String(100)

tstable03@alipay.com

price

商品单价

Number

单位为:RMB Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。此参数为单价

规则:price、quantity能代替total_fee。即存在total_fee,就不能存在price和quantity;存在price、quantity,就不能存在total_fee。

可空

10.00

quantity

购买数量

Number

price、quantity能代替total_fee。即存在total_fee,就不能存在price和quantity;存在price、quantity,就不能存在total_fee。

可空

1

body

商品描述

String(1000)

对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。

可空

美国专业护腕鼠标垫,舒缓式凝胶软垫模拟手腕的自然曲线和运动,创造和缓的GelFlex舒适地带!

show_url

商品展示网址

String(400)

收银台页面上,商品展示的超链接。

可空

http://www.360buy.com/product/113714.html

paymethod

默认支付方式

String

取值范围:

  • creditPay(信用支付)
  • directPay(余额支付)

如果不设置,默认识别为余额支付。

说明:

必须注意区分大小写。

可空

directPay

enable_paymethod

支付渠道

String

用于控制收银台支付渠道显示,该值的取值范围请参见。

可支持多种支付渠道显示,以“^”分隔。

可空

directPay^bankPay^cartoon^cash

anti_phishing_key

防钓鱼时间戳

String

通过时间戳查询接口获取的加密支付宝系统时间戳。

如果已申请开通防钓鱼时间戳验证,则此字段必填。

可空

587FE3D2858E6B01E30104656E7805E2

exter_invoke_ip

客户端IP

String(15)

用户在创建交易时,该用户当前所使用机器的IP。

如果商户申请后台开通防钓鱼IP地址检查选项,此字段必填,校验用。

可空

128.214.222.111

extra_common_param

公用回传参数

String(100)

如果用户请求时传递了该参数,则返回给商户时会回传该参数。

可空

你好,这是测试商户的广告。

it_b_pay

超时时间

String

设置未付款交易的超时时间,一旦超时,该笔交易就会自动被关闭。

取值范围:1m~15d。

m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。

该参数数值不接受小数点,如1.5h,可转换为90m。

可空

1h

token

快捷登录授权令牌

String(40)

如果开通了快捷登录产品,则需要填写;如果没有开通,则为空。

可空

201103290c9f9f2c03db4267a4c8e1bfe3adfd52

qr_pay_mode

扫码支付方式

String(1)

扫码支付的方式,支持前置模式和跳转模式。

前置模式是将二维码前置到商户的订单确认页的模式。需要商户在自己的页面中以iframe方式请求支付宝页面。具体分为以下3种:

  • 0:订单码-简约前置模式,对应iframe宽度不能小于600px,高度不能小于300px;
  • 1:订单码-前置模式,对应iframe宽度不能小于300px,高度不能小于600px;
  • 3:订单码-迷你前置模式,对应iframe宽度不能小于75px,高度不能小于75px。
  • 4:订单码-可定义宽度的嵌入式二维码,商户可根据需要设定二维码的大小。

跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。

  • 2:订单码-跳转模式

可空

1

qrcode_width

商户自定二维码宽度

Integer

商户自定义的二维码宽度。

当qr_pay_mode=4时,该参数生效。

可空 200

need_buyer_realnamed

是否需要买家实名认证

String(2)

是否需要买家实名认证。

  • T表示需要买家实名认证;
  • 不传或者传其它值表示不需要买家实名认证。
可空  T

promo_param

商户优惠活动参数

String(128)

商户与支付宝约定的营销透传参数。

可空 {"customer201412":"Y","goods201412":"Y"}

hb_fq_param

花呗分期参数

String

参数格式:hb_fq_seller_percent ^卖家承担付费比例|hb_fq_num ^期数。

  • hb_fq_num:花呗分期数,比如分3期支付;
  • hb_fq_seller_percent:卖家承担收费比例,比如100代表卖家承担100%。

两个参数必须一起传入。

两个参数用“|”间隔。Key和value之间用“^”间隔。

具体花呗分期期数和卖家承担收费比例可传入的数值请咨询支付宝。

可空 hb_fq_seller_percent^100|hb_fq_num^3

goods_type

商品类型

String(2)

商品类型:

  • 1表示实物类商品
  • 0表示虚拟类商品

如果不传,默认为实物类商品。

可空 1

 

https://mapi.alipay.com/gateway.do?body=%C3%C0%B9%FA%D7%A8%D2%B5%BB%A4%CD%F3%CA%F3%B1%EA%B5%E6%2C%CA%E6%BB%BA%CA%BD%C4%FD%BD%BA%C8%ED%B5%E6%C4%A3%C4%E2%CA%D6%CD%F3%B5%C4%D7%D4%C8%BB%C7%FA%CF%DF%BA%CD%D4%CB%B6%AF%A3%AC%B4%B4%D4%EC%BA%CD%BB%BA%B5%C4GelFlex%CA%E6%CA%CA%B5%D8%B4%F8%21&subject=%B1%B4%B6%FB%BD%F0%BB%A4%CD%F3%CA%BD&sign_type=MD5&notify_url=http%3A%2F%2Fapi.test.alipay.net&out_trade_no=6741334835157966&return_url=http%3A%2F%2Fapi.test.alipay.net%2Fatinterface%2Freceive_return.htm&sign=dc3d42f405d7e738ab35344449e2d9f7&buyer_id=2088002007018955&total_fee=100&service=create_direct_pay_by_user&partner=2088101568338364&seller_id=2088002007018966&payment_type=1&qr_pay_mode=1&_input_charset=gbk

说明: 本样例仅供参考,支付宝网关为。

 

注意:

  • 此接口只支持https请求;
  • 参数body(商品描述)、subject(商品名称)、extra_common_param(公用回传参数)不能包含特殊字符(如:#、%、&、+)、敏感词汇,也不能使用外国文字(旺旺不支持的外文,如:韩文、泰语、藏文、蒙古文、阿拉伯语);
  • 请按照本文档“附录:签名与验签”中的签名方法对输入参数进行签名,该接口请求才能够被支付宝系统接收;
  • 此接口支持重复调用,前提是交易基本信息(买家、卖家、交易金额、超时时间等)在多次调用中保持一致,且交易尚未完成支付;
  • 配置qr_pay_mode为0或1或3或4的情况下,同步通知地址return_url需要传入商户中间跳转页面,即该页面需要实现让父页面自行跳转的功能,中间页面javascript代码:<script>window.parent.location.href='父页面调整的URL';</script>

 

转载于:https://www.cnblogs.com/freeliver54/p/6179552.html

你可能感兴趣的文章
iOS-解决iOS8及以上设置applicationIconBadgeNumber报错的问题
查看>>
亡灵序曲-The Dawn
查看>>
MySQL中的隔离级别和悲观锁及乐观锁示例
查看>>
手机端h5 ajax 上传图片支持微信内置浏览器
查看>>
Redmine
查看>>
HtmlEditor常用模式
查看>>
Another app is currently holding the yum lock; waiting for it to exit.. yum被锁定无法使用
查看>>
帧的最小长度 CSMA/CD
查看>>
xib文件加载后设置frame无效问题
查看>>
第一次博客
查看>>
Java Map 常见用法举例
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>
IOS解析XML
查看>>
Python3多线程爬取meizitu的图片
查看>>
树状数组及其他特别简单的扩展
查看>>
Linux vi/vim
查看>>
zookeeper适用场景:分布式锁实现
查看>>
110104_LC-Display(液晶显示屏)
查看>>
javascript全局变量
查看>>
全连接神经网络(DNN)
查看>>